YOLOP v2来啦 | YOLOv7结合YOLOP的多任务版本,超越YOLOP以及HybridNets
注:这篇文章相较于YOLOP改动较少,主干网络改为E-ELAN、可行驶区域分割分支接在主干网络的末端、车道线损失函数改为Focal Loss+Dice Loss和采用了反卷积。所以没有全文翻译。
在过去的十年中,多任务学习方法在解决全视驾驶感知问题方面取得了良好的效果,提供了高精度和高效的性能。在为计算资源有限的实际自动驾驶系统设计网络时,它已成为一种流行的范例。本文提出了一种有效的多任务学习网络,可同时执行交通目标检测、可行驶区域分割和车道线检测等任务。我们的模型在具有挑战性的BDD100K数据集上,在准确性和速度方面实现了新的最先进的(SOTA)性能。特别是,与之前的SOTA模型相比,推理时间减少了一半。代码将在不久的将来发布。
虽然计算机视觉和深度学习取得了巨大的发展,但在低成本自动驾驶的应用中部署视觉感知模型(如目标检测、分割、车道检测等)仍具有挑战性。最近已经努力建立一个鲁棒的全景驾驶感知系统,这是自动驾驶的关键组成部分之一。全景驾驶感知系统通过常用的传感器帮助车辆全面了解周围环境。因为较低的成本,基于摄像头的目标检测和分割在实际应用中更受青睐。目标检测在提供交通障碍的位置和大小信息,帮助自动驾驶汽车在驾驶阶段做出准确、及时的决策方面起着重要的作用。此外,可行驶区域分割和车道线检测也为路线规划和提高驾驶安全提供了丰富的信息。
目标检测和语义分割是计算机视觉领域的两个长期存在的研究课题。对于目标检测有一系列优秀的工作,如CenterNet [3],Faster R-CNN [18]和YOLO系列。常用的分割网络通常应用于可行驶区域分割问题,例如: UNET [10]、segnet [1]和pspNet [28]。而对于车道线检测/分割,需要一个更强大的网络来更好的融合高级特征和低级特征,从而考虑全局结构上下文信息来增强分割细节[14,9,24]。然而,在实时自动驾驶系统中为每个任务运行单独的模型通常是不实际的。在这种情况下,多任务学习网络[19,15,25,20]提供了一种节省计算成本的潜在解决方案,其中网络被设计成一个编码器-解码器模式,并且编码器被不同的任务有效地共享。
本文在对上述方法进行了深入的研究后,提出了一种有效的多任务学习网络。我们在具有挑战性的BDD100K数据集[26]上进行了实验。我们的模型在所有三个任务中都取得了最好的性能:目标检测任务为0.83 MAP,可驱动区域分割任务为0.93 MIOU,车道检测准确度为87.3。相比于基线这些指标都大大的提高了。此外,我们在NVIDIA TESLA V100上的FPS增加到了91,远远超过了相同实验条件下的YOLOP。进一步说明了我们的模型可以降低计算成本,保证实时预测,同时为其他实验研究的改进留出了空间。
这项工作的主要贡献总结如下:
更好:我们提出了一个更有效的模型结构,并开发了更复杂的免费包,例如,Mosaic和Mixup数据预处理,并应用了一种新的混合损失。
更快:我们为该模型实现了一个更有效的网络结构和内存分配策略。
更强:我们的模型是在一个强大的网络架构下训练的,因此它可以很好地推广到适应各种场景,同时确保速度。
在本节中,我们将回顾全景驾驶感知主题中所有任务的相关工作。我们还讨论了有效的模型集成技术。
当前目标检测网络可以分为单阶段网络和两阶段网络。两阶段网络由区域建议网络和位置精调网络组成。这些方法在不同的单阶段目标检测网络中通常具有高精度和鲁棒性的结果,通常运行得更快,因此在实时实际应用中往往是首选。YOLO系列采用先进的单阶段目标检测设计,保持主动迭代,为我们的实验提供了灵感,包括YOLO4、scaled-yolov4、yolop和yolov7)。在本文中,我们使用简单而强大的网络结构,以及有效的免费技巧(BoF)来提高目标检测性能。
利用全卷积神经网络[2]代替传统的分割算法,对语义分割的研究取得了显著进展。随着在这一领域的广泛研究,人们设计了更高性能的模型,如Unet的经典编解码器结构;PSPNet采用金字塔池化来提取不同层次的特征,这有助于有效地划分可行驶区域。对于车道线分割,由于其特定特征的困难,如车道线形状的过于纤细、分布碎片化,车道线分割需要细致的检测能力。SCNN[14]提出了逐层卷积来在每一层的通道之间传输信息。Enet-SAD采用了一种自注意修正方法,可以从高级特征中学习到低级特征,这不仅可以提高性能,还可以为模型保持轻量级设计。
为了在不增加推理成本的情况下提高目标检测结果的准确性,研究者通常利用训练阶段和测试阶段是分开的事实。数据增强通常是为了增加输入图像的多样性,从而使所设计的目标检测模型在不同的领域中得到足够的推广。例如,在YOLOP中应用了常规的图像镜像、对图像亮度、对比度、色调、饱和度和噪声的调整。这些数据增强方法都是像素级调整,并在调整区域内保留所有原始像素信息。此外,YOLO系列研究的作者还提出了一种同时对多个图像进行数据增强的方法。例如,对四幅拼接图像进行Mosaic增强[6],可以提高批处理大小,提高数据的多样性。
在本节中,我们将详细介绍所提出的用于多任务学习的网络架构。我们讨论了如何实现一个高效的前馈网络,以协同完成交通目标检测、可行驶区域分割和道路车道线检测等任务。此外,还提出了该模型的优化策略。
我们设计了一个基于现有工作,如YOLOP, HybridNet等,的更高效的网络架构。我们的模型受到YOLOP, HybridNet工作的启发,我们保留了核心设计概念,但利用强大的主干进行特征提取。此外,与现有工作不同的是,我们利用解码器头的三个分支来执行特定的任务,而不是在同一分支中运行可行驶区域分割和车道线检测任务。造成这种变化的主要原因是,我们发现可行驶区域分割任务和车道线检测任务难度完全不同,这意味着两个任务在特征层次上有不同的要求,从而应该具有不同的网络结构。第4节的实验说明,新设计的结构可以有效地提高整体分割性能,并在计算速度上引入的开销基本可以忽略。图2显示了我们的设计概念的总体方法流程图。
所提出的网络架构如图1所示。它由一个用于从输入图像中进行特征提取的共享编码器和三个用于相应任务的解码器组成。本节演示了该模型的网络结构。
与使用CSPdaarknet为骨干的YOLOP不同,我们采用E-ELAN的设计来利用组卷积,使不同层的权值能够学习更多样化的特征。图2显示了组卷积的配置。
在颈部部分,从不同阶段产生的特征被收集起来,并通过Concat的方式进行融合。与YOLOP类似,我们应用空间金字塔池化(SPP)模块[7]来融合不同尺度的特征,并使用特征金字塔网络(FPN)模块[11]来融合不同语义级别的特征。
如上所述,我们为每个单独任务设计了三个独立的解码器头。与YOLOv7类似,我们采用了一种基于锚框的多尺度检测方案。首先,我们使用路径增强网络(PAN)[12],这是一种自底而上的结构,以更好地提取位置特征。通过结合PAN和FPN的特征,我们能够将语义信息与这些位置特征进行融合,然后直接在PAN中的多尺度融合特征映射上进行检测。多尺度特征图中的每个特征点将分配三个不同高宽比的锚框,检测头将预测位置的偏移量和缩放后的高度和宽度,以及类别概率和前景置信度。
该方法的可行驶区域分割和车道线分割是在不同的网络结构中由单独的头部网络进行。与YOLOP不同,而是两个任务的特征都来自颈部的最后一层,我们使用了不同语义级别的特征。我们发现,与其他两种任务相比,可行驶区域分割不需要从更深层的网络中提取的特征。这些更深层次的特征并不能提高预测性能,但却增加了模型在训练过程中的收敛难度。因此,可行驶区域分割头的分支先于FPN模块进行连接。此外,为了补偿这种变化可能造成的损失,应用了一个额外的上采样层,即在解码器阶段总共应用了四个最近邻插值上采样。
在车道线分割中,分割分支的输入是FPN的最后一层,这样可以获得更深层次的语义特征,这种结构可以提高对纤细、难检测的车道线的检测精度。此外,在车道线检测分支中使用转置卷积来进一步提高检测性能。
基于YOLOP的设计,我们保留了检测部分的损失函数的设置。Ldet为检测损失,即类别损失、目标损失和边界损失的加权和,如公式1所示。
此外,Lclass和Lobj还采用Focal Loss来解决样本不平衡问题。利用Lclass进行惩罚分类,Lobj用于预测前景置信度。Lbox反映了预测结果与真值之间的IoU、高宽比和尺度相似度的距离。适当的损失权值设置可以有效地保证多任务检测的结果。采用交叉熵损失进行可行驶区域分割,旨在最小化网络输出与真值之间的分类误差。对于车道线分割,我们使用Focal Loss而不是交叉熵损失。因为对于车道线检测等硬分类任务,使用Focal Loss可以有效地将模型集中在困难样本上,从而提高检测精度。此外,我们在实验中实现了一个由dice loss和Focal Loss组成的混合损失[29]。dice loss能够学习类分布,缓解不平衡体素问题。Focal Loss有能力迫使模型学习困难样本。最终损失可按公式2计算如下。
其中γ是dice loss和Focal Loss之间的权衡,C是类别的总数,因此,C被设置为2,因为在可行驶区域分割和车道线分割中只有2类。
值得一提的是,我们在多任务学习方法中引入了Mosaic和Mixup [27]的增强策略,它们在三个任务中都可以提高模型的性能。
本节介绍了我们实验的数据集设置和参数配置。本文的所有实验都是基于显卡TESLA V100和 torch 1.10.的配置环境进行的。
采用“余弦退火”策略调整训练过程中的学习率,其中初始学习率设置为0.01,在前3个阶段使用预热训练[13]。此外,动量和权重衰减相应地设置为0.937和0.005。而训练epochs的总数是300。我们在训练阶段将BDD100k数据集中的图像大小从1280×720×3调整到640×640×3,测试阶段从1280×720×3调整到640×384×3。
我们提出了一些改进方法,并进行了相应的试验,它们的结果如表5所示。