You Only Look at Once for Panoptic driving Perception(2021)

摘要

全景驾驶感知系统是自动驾驶的重要部分。一个高精确率的感知系统可以帮助车辆在驾驶时做出更可靠的决定。我们展示了一个全景感知网络YOLOP来同步进行交通目标检测、可行驶区域分割、和车道线检测。它包含了一个提取特征的编码网络和三个解码网络来处理特定任务。我们的模型在BDD100K数据集上表现非常好,在三个任务上都取得最好的准确率和精度。此外,我们通过消融实验确认了联合训练对这个多任务模型的影响。据我们所知,这是第一个在嵌入式设备TX2上同时实时进行三个视觉感知任务,并且还取得非常优秀的准确率。为了便于进一步的研究,开源代码和预训练模型放在https://github.com/hustvl/YOLOP

1.介绍

最近,大量自动驾驶研究展示了全景感知系统的重要性。它在自动驾驶中扮演了一个重要的角色,因为它可以从来自于摄像头的图像中提取视觉信息,帮助决策系统控制车辆的行为。为了更好的控制车辆,视觉感知系统应理解场景,然后为决策系统提供如下信息:障碍物位置、是否是可行驶区域、车道线位置。全景感知系统中的目标检测帮助车辆避开障碍物和遵守交通规则。可行驶区域和车道线检测也非常重要,因为它们对规划车辆行车轨迹非常重要。

对于全景感知系统,高精确率和实时性是两个关键的要求,它们对车辆做出准确的、及时的决定至关重要。在实际场景中,受限于车载电脑的计算资源,同时满足这两个要求比较具有挑战性。

许多方法分开处理这些任务。比如说,Faster RCNN和YOLOv4可以用来进行目标检测;ENet和PSPNet可以用来进行语义分割。SCNN和SADENet可以用来检测车道线。尽管这些方法取得了好的性能,但是相较于同时检测,分开进行这些任务需要更长的时间。当部署全景感知系统到车载嵌入式设备上时,应该考虑到有限的计算资源和计算延迟。此外,交通场景中的不同任务通常包含相关的信息。如图1所示,车道线通常是可行驶区域的边界,可行驶区域通常紧紧包围着交通目标。一个多任务网络它是同时处理多个任务而不是依次进行;多个任务之间共享信息、它们通常共用主干网络。因此,探索自动驾驶中的多任务方法具有重大意义。

为了解决全景感知网络中的多任务问题,来同时获得高准确率和较快的速度,我们设计了一个简单和高效的网络。我们使用轻量的CNN来作为编码网络来提取特征。然后使用三个解码网络来处理这些来自于编码网络的特征图。我们使用现阶段表现最好的单阶段检测模型来作为检测解码网络:单阶段网络比两阶段网络速度更快;基于锚的单阶段检测头和其他两个语义分割任务关联更大,通常实例分割任务使用基于区域的检测头。在实验部分验证了两个论点:编码网络输出的特征图包含了不同层次和尺度的语义特征,我们的语义分割分支可以利用这些特征图进行像素级语义预测。

除了端到端训练策略之外,我们还尝试了一些交替的优化范式来逐步训练我们的模型。一方面,我们可以在不相同的训练步骤中放置不相关的任务,以防止相互限制。另一方面,首先被训练的任务可以指导其他任务。所以这种范式有时很有效,但很麻烦。然而,实验表明,这种交替训练方法对我们的模型是没有必要的,因为端到端的训练可以表现得足够好。我们的全景驾驶感知系统在NVIDIA TITAN XP上达到41 FPS,在Jetson TX2上达到23 FPS;同时,它在BDD100K数据集[28]的三个任务上达到了了最先进的水平。

总的来说,我们的主要贡献是: (1)我们提出了一种高效的多任务网络,可以联合处理自动驾驶中的三个关键任务:目标检测、可行驶区域分割和车道线检测,以节省计算成本,减少推理时间。我们的工作是第一次在嵌入式设备上实现实时检测,同时在BDD100K数据集上保持最优秀的性能。(2)我们设计了消融实验来验证我们的多任务处理方案的有效性。证明了这三个任务可以共同学习,而不需要进行繁琐的交替优化。(3)通过消融实验证明,发现基于网格的检测任务预测机制与语义分割任务的预测机制更相关,为其他相关的多任务学习研究工作提供了参考。

2.相关工作

在本节中,我们将分别回顾上述三个任务的解决方案,然后介绍一些相关的多任务学习工作。我们只关注基于深度学习的解决方案。

2.1 交通目标检测

近年来,随着深度学习的快速发展,出现了许多突出的目标检测算法。目前主流的目标检测算法可分为两阶段方法和一阶段方法。

两阶段的方法分两个步骤完成检测任务。首先,获得区域建议,然后利用区域建议中的特征对目标进行定位和分类。区域建议的产生已经经历了几个发展阶段。

SSD系列和YOLO系列算法是单阶段方法中的代表。该算法可以同时进行边界框回归和目标分类。YOLO将图像划分为S×S网格,而不是用RPN网络提取区域建议,这大大加快了检测速度。YOLO9000引入了基于锚的机制来提高检测的召回率。YOLOv3利用特征金字塔网络结构来实现多尺度检测。YOLOv4 通过细化网络结构、激活函数、损失函数和应用丰富的数据增强,进一步提高了检测性能。

2.2 可行驶区域分割

由于深度学习的快速发展,许多基于CNN的方法在语义分割领域取得了巨大的成功,可以应用于可行驶区域分割任务,提供像素级的结果。FCN [15]首先引入了全卷积网络来进行语义分割。尽管进行了skip-connection的改进,但它的性能仍然受到低分辨率输出的限制。PSPNet [30]提出了金字塔池化模块来提取不同尺度的特征,以提高其性能。除了准确性之外,速度也是评估这项任务的一个关键因素。为了实现实时推理速度,ENet [19]减小了特征图的大小。近年来,多任务学习被引入来处理这一任务,EdgeNet [6]将边缘检测与可行驶区域分割任务相结合,在不影响推理速度的情况下获得更准确的分割结果。

2.3. 车道线检测

在车道线检测方面,有许多基于深度学习的创新性研究。[17]构建了一个双分支网络,对图像进行语义分割和像素嵌入。进一步对双分支特征进行聚类,实现车道实例分割。SCNN [18]提出了逐片卷积,它使信息能够在图层中跨行和跨列的像素之间传递,但这种卷积非常耗时。Enet-SAD [9]采用自注意精馏方法,使低级特征图能够从高级特征图中学习。这种方法在保持模型轻量级的同时,提高了模型的性能。

2.4. 多任务学习的方法

多任务学习的目标是通过多个任务之间的共享信息来学习更好的表示。特别是,基于CNN的多任务学习方法可以在网络结构中实现卷积共享。Mask R-CNN [7]在Faster RCNN中添加一个预测目标掩码分支,有效地结合了实例分割和目标检测任务,这两个任务可以提高彼此的性能。LSNet [3]将目标检测、实例分割和姿态估计总结为位置敏感的视觉识别,并使用一个统一的解决方案来处理这些任务。MultiNet [25]通过一个共享的编码器和三个独立的解码器,同时完成场景分类、目标检测和可行驶区域分割的三个场景感知任务。DLT-Net [20]继承了编码器-解码器的结构,并在子任务解码器之间构造上下文张量,以在任务之间共享指定的信息。[29]提出了车道区域分割与车道边界检测之间相互关联的子结构。同时,提出了一种新的损失函数,将车道线约束到车道区域的外轮廓上,使它们发生几何重叠。然而,这个先验的假设也限制了它的应用,因此它只在车道线紧密包裹车道区域的情况下有效。此外,多任务模型的训练范式也值得思考。[10]指出,只有当所有这些任务都确实相关时,联合训练才是适当和有益的;否则,有必要采用交替优化。因此,Faster R-CNN [24]采用了一种实用的4步训练方法来学习共享特征。这种模式有时可能会有用,但大多数情况下都是冗余的。

3.方法论

我们提出了一种简单、高效的前馈网络,可以同时完成交通目标检测、可行驶区域分割和车道线检测任务。如图2所示,我们的全景驾驶感知网络被称为YOLOP,包含一个共享的编码网络和三个解码网络来解决特定的任务。在不同的解码器之间没有复杂和冗余的共享块,这减少了计算消耗,并且能够让网络可以端到端的训练。

3.1.编码器

我们的网络共享一个编码器,它由一个主干网络和一个颈部网络组成。

3.1.1.主干网络

利用主干网络提取输入图像的特征。通常一些经典的图像分类网络作为主干。由于YOLOv4在目标检测上的优异性能,我们选择CSPDarknet作为主干,解决了优化过程中的梯度复制问题。它支持特征传播和特征重用,从而减少了参数和计算的数量。因此,它有利于保证网络的实时性。

3.1.2.颈部网络

颈部网络用来融合由主干网络产生的特征。我们的颈部网络主要由空间金字塔池化模块和特征金字塔模块组成。SPP生成和融合不同尺度的特征,FPN融合不同语义级别的特征,使生成的特征包含多个尺度和多个语义级别信息。我们采用Concat的方法来融合特征。

3.2.解码器

三个解码头针对三个特定的任务进行设计。

3.2.1.检测头

同YOLOv4相似,我们采用了一种基于锚框的多尺度检测方案。首先,我们采用一种路径增强结构(PAN),一种自底向上的特征金字塔网络。FPN通过自顶向下传递语义特征,而PAN通过自下向上传递位置特征。我们将他们结合起来,获得更好的特征融合效果,然后直接利用PAN中的多尺度融合特征图进行检测。然后,为每个特征点分配三个锚框,这些锚框有不同的长宽比。这些检测头将会预测边界框的坐标、长宽、是否包含物体的置信度和物体属于哪个类别的概率。

3.2.2.可行驶区域分割头和车道线分割头

可行驶区域分割头和车道线分割头采用相同的结构。FPN的最后一层作为分割分支的输入(W/8,H/8,256)。我们的分割分支非常简单。经过三次上采样后,我们将输入特征图恢复到(W,H,2)大小,它表示输入图像中可行驶区域/车道线和背景的概率。由于颈部网络中共享SPP模块,所以本网络中不再分割分支中添加额外的SPP模块,这部分降低网络的性能。此外,我们使用最近邻插值来进行上采样,而不是反卷积,这样可以节省计算成本。因此,我们的分割解码器不仅精度高,而且速度快。

3.3.损失函数

因为网络中包含三个解码器,所以损失函数由三部分组成。对于检测损失,它是类别损失、目标损失和边界损失的加权和。

类别损失和目标损失是Focal损失,用来减少易分类样本的损失,使网络聚焦于困难样本。边界损失是CIOU损失,考虑了距离、重叠率、长宽比。分割分支均采用CE损失,最小化网络输出特征图中预测值和真值之间的分类误差。值得注意的是车道线损失中添加了IoU()损失,可以提高网络预测稀疏车道线的效果。

总的来说,损失是这三部分的加权和。

3.4.训练方式

我们尝试了不同的方式来训练模型。最简单的方式是端到端的训练,可以同时学习三个任务。但所有任务是相关的时候,这种训练方式是有效的。此外,我们也尝试了交替训练。在每一步中,模型可以只关注一个或多个相关的任务,而不用考虑不相关的任务。即使不是所有的任务都是相关的,我们的模型也可以用这种方式充分学习每个任务。一步一步训练的方法如方法一所示。

 4.实验

4.1.设置

4.1.1 数据集设置

BDD100K数据集支持无人驾驶领域的多任务学习研究。由于数据集具有地理、环境和天气的多样性,在BDD100K数据集上训练的模型具有足够的鲁棒性,可以迁移到新的环境。因此,我们选择BDD100K来训练和评估我们的模型。训练集包含70K张图像,验证集包含10K张图像,测试集包含20K张图像。由于测试集的标签没有公开,所以我们在验证集上进行测试。

4.1.2 补充细节

为了提高模型的性能,我们根据经验采用了一些数据增强技术和方法。

为了使检测头能够包含更多的先验知识,我们采用k-means聚类算法从数据集中得到先验框。采用Adam作为优化器,初始化学习率为...在训练过程中采用预热训练和余弦退火算法来调整学习率,旨在使模型更快地收敛。

我们采用了数据增强来提高图的多样性,使模型更加鲁棒...

4.2.结果

在本节中,我们简单地端到端地训练我们的模型,然后对比在三个任务中,YOLOP和其他代表性模型的结果。

4.2.1 交通目标检测结果

交通目标检测的可视化结果如图3所示。由于Multinet和DLT-Net只能检测车辆,因此我们只考虑五个模型针对车辆的检测结果。如表1所示,我们使用召回率和mAP50作为检测准确度的评价指标。我们的模型在检测准确性上超过了Faster-RCNN、MultiNet和DLTNet。和YOLOv5相比,YOLOP在准确性上与它差别不大,因为它使用了大量的技巧。YOLOP可以实现实时检测,而YOLOv5因为没有可行驶区域分割头和车道线检测分割头,在速度上更快。

图4为YOLOP和Faster RCNN的定性比较。由于多任务之间的信息共享,YOLOP的预测结果更加合理。例如,YOLOP不会将远离车道的物体误识别为车辆。此外,FN的例子更加少,边界框更加准确。

4.2.2 可行驶区域分割结果

可行驶区域分割的可视化结果如图5所示。在本论文中,区域/可行驶和区域/替代都被视为可行驶区域。我们的模型只需要区分图像中的可行驶区域和背景。利用mIoU来评价模型的分割性能,如表2所示。可以看到,我们的模型比MultiNet、DLTNet和PSPNet分别好19.9%、20.2%和1.9%。并且,模型的推理速度也比它们快4到5倍。

 

PSPNet与YOLOP的结果比较如图6所示。PSPNet和YOLOP在这项任务中都表现出色。但YOLOP在分割车辆或车道线旁边的边缘区域方面明显更好。我们认为这主要是因为另外两个任务都为这个任务提供了边缘信息。同时,YOLOP所犯的愚蠢错误较少,如误判对面车道区域为可驾驶区域。

4.2.3 车道线检测结果

车道检测的可视化结果如图7所示。BDD100K数据集中的车道线用两行标记,因此直接使用注释非常棘手。实验设置遵循[9],以便方便地进行比较。首先,我们根据两行注释来计算中心线。然后,我们将训练的车道线的宽度设置为8像素,同时保持测试集的车道线宽度为2像素。我们使用像素精度和车道的IoU作为评价指标。如表3所示,我们的模型的性能大大超过了其他三个模型。图8为ENet-SAD与YOLOP的车道线检测结果的比较。YOLOP的分割结果明显比ENet-SAD更准确、更连续。由于其他两项任务共享的信息,YOLOP不会将一些车辆所在或可驾驶的区域误为车道线,但Enet-SAD总是这样做。

4.3 消融实验

我们设计了以下三个消融实验,以进一步说明我们的方案的有效性。本节中的所有评价指标都与上述内容一致。

4.3.1 联合训练vs单独训练

在表4中,我们比较了联合训练方法与多种交替训练方法的表现。显然,我们的模型通过端到端训练已经表现得非常好,所以不需要进行交替优化。有意思的是,首先训练目标检测任务的方法表现出了更好的性能。我们认为这主要是因为我们的模型更接近一个完整的检测模型,并且模型在执行检测任务时更难收敛。更重要的是,三个步骤的方法的性能略优于两个步骤的方法。类似的交替训练可以进行更多的步骤,但我们观察到的改进可以忽略不计。

注:E、D、S、W分别为编码器、检测头、两个分割头和整个网络。因此,方法1可以标记为ED-S-W,其他方法也一样。

 4.3.2 多任务vs单任务

为了验证我们的多任务学习方案的有效性,我们比较了多任务方案和单任务方案的性能。一方面,我们训练我们的模型同时执行3个任务。另一方面,我们训练我们的模型分别执行交通目标检测、可驾驶区域分割和车道线分割任务。表5显示了这两种方案在每个特定任务上的性能比较。可以看出,我们的模型采用多任务方案来实现接近于单一任务的性能。更重要的是,与单独执行每个任务相比,多任务模型可以节省大量的时间。

4.3.3基于网格vs基于区域

为了验证基于网格的预测机制比基于区域的预测机制与两个语义分割任务更相关的观点。我们扩展了Faster RCNN,添加了两个分割头,称这样的模型为RCNN-P。(i)分别执行检测任务和两个分割任务,(ii)同时执行三个任务。在上述两个实验中,这两个分割任务都是联合训练的,因为不需要考虑它们之间的交互作用。所有实验设置均相同,结果见表6所示。在R-CNNP框架中,多任务训练的性能比单独训练检测任务和语义分割任务要差得多。显然,在R-CNNP框架中,两种任务的组合存在冲突。但在我们的YOLOP框架中没有这样的问题,多任务训练的性能等于只关注检测或语义分割任务。因此,我们认为这是由于YOLOP的检测头像其他两个语义分割头一样,直接对编码器输出的整个特征图执行全局分类或回归任务,因此它们在预测机制方面是相似和相关的。然而,R-CNNP的检测头需要先选择区域建议,然后对每个单独提案的特征图进行预测,这与语义分割的全局预测机制有很大的不同。此外,R-CNNP在推理速度方面远远落后于YOLOP。因此,我们的框架是联合训练检测和分割任务的一个更好的选择。

 5.结论

本文提出了一种全新的、简单、高效的网络,它可以同时处理目标检测、可行驶区域分割和车道线检测三个自动驾驶感知任务,并可以进行端到端的训练。我们的模型在具有挑战性的BDD100k数据集上表现得非常好,在所有三个任务上都实现或大大超过了最先进的水平。它是第一个在嵌入式设备Jetson TX2上实现实时推理的方法,这确保了我们的网络可以在现实世界的场景中使用。此外,我们还验证了基于网格的预测机制与语义分割任务更相关。这可能对类似的多任务学习研究工作具有一定的参考意义。

目前,虽然我们的多任务网络可以在不影响彼此性能的情况下进行端到端训练,但我们希望通过更合适的多任务学习方法来提高这些任务的性能。此外,我们的模型目前只能同时进行三个任务,在未来的框架中可以增加更多与自动驾驶感知系统相关的任务,如深度估计,使整个系统更加完整和实用。

猜你喜欢

转载自blog.csdn.net/Jad_Goh/article/details/127677907
今日推荐