YOLOP: You Only Look Once for Panoptic Driving Perception文章自读自译(稍后代码理解)
为了限制车辆的机动,视觉感知系统应该能够理解场景,然后向决策系统提供信息,包括:障碍物的位置、道路是否可行驶的判断、,全景驾驶感知系统通常涉及车道位置等目标检测,以帮助车辆避开障碍物并遵守交通规则。
还需要驾驶区域分割和车道检测。
不同任务不同处理:
- Faster R-CNN[24]和YOLOv4[1]处理目标检测;
- 提出了ENet[19]和PSPNet[30]来执行语义分割
- SCNN[18]和SADENet[9]用于检测车道
尽管这些方法取得了优异的性能,但一个接一个地处理这些任务比一次处理所有任务花费的时间更长。
交通场景理解中的不同任务往往有很多相关信息。如图1所示,车道通常是可行驶区域的边界,可行驶区域通常紧密围绕交通对象。
图1。我们模型的输入和输出。该模型的目的是在一幅输入图像中同时处理交通对象检测、可驾驶区域分割和车道检测。在(b)中,棕色边界框表示交通对象,绿色区域表示可驾驶区域,蓝色线表示车道线。
多任务网络更适合这种情况,因为 :
- (1) 它可以通过同时处理多个任务而不是顺序处理来加速图像分析过程。
- (2) 由于多任务网络通常共享同一个特征提取主干,因此它可以在多个任务之间共享信息。
架构:
我们使用轻型CNN[26]作为编码器从图像中提取特征。然后将这些特征映射馈送到三个解码器以完成各自的任务。
我们的检测解码器基于当前性能最佳的单级检测网络[YOLOv4],主要原因有两个:
- 单级检测网络比两级检测网络更快。
- 单级检测器的基于网格的预测机制与其他两个语义分割任务更相关,而实例分割通常与基于区域的检测器相结合[7]。
除了端到端的训练策略外,我们还尝试了一些交替优化范例,逐步训练我们的模型。
- 一方面,我们可以将不相关的任务放在不同的训练步骤中,以防止交叉模仿。
- 另一方面,首先训练的任务可以指导其他任务。因此,这种范式有时很有效,尽管很麻烦。
实验表明,我们的模型没有必要这样做,因为经过训练的端到端模型可以很好地执行。我们的全景驾驶感知系统在单个NVIDIA TITAN XP上达到41 FPS,在Jetson TX2上达到23 FPS;同时,它在BDD100K数据集的三个任务上达到了最先进的水平[28]。
相关工作:
Traffic Object Detection:
比较传统。
可行驶区域分割 :
FCN,PSPNet,ENet,EdgeNet
车道检测 :
SCNN,ENet-SAD
多任务方法 :
多任务学习的目标是通过在多个任务之间共享信息来学习更好的表示。基于CNN的多任务学习方法也可以实现网络结构的卷积共享。
Mask RCNN,LSNet,MultiNet,DLT Net
方法论:
我们提出了一种简单高效的前馈网络,可以同时完成交通目标检测、可驾驶区域分割和车道检测任务。如图2所示,我们的全景驾驶感知单拍网络(称为YOLOP)包含一个共享编码器和三个后续解码器,用于解决特定任务。不同解码器之间没有复杂和冗余的共享块,这减少了计算消耗,并允许我们的网络易于端到端训练。
我们的网络共享一个编码器,该编码器由backbone和neck组成。
Encoder:
主干网:
主干网络用于提取输入图像的特征。通常,一些经典的图像分类网络作为主干。由于YOLOv4[1]在目标检测方面的出色性能,我们选择CSPDarknet[26]作为主干,解决了优化过程中的梯度复制问题[27]。它支持特征传播和特征重用,从而减少参数和计算量。因此,有利于保证网络的实时性能。
Neck:
颈部用于融合主干生成的特征。我们的颈部主要由空间金字塔池(SPP)模块[8]和特征金字塔网络(FPN)模块[11]组成。SPP生成并融合不同尺度的特征,FPN融合不同语义层次的特征,使生成的特征包含多尺度和多语义层次的信息。在我们的工作中,我们采用了级联的方法来融合特征。
Decoder:
检测头:
与YOLOv4类似,我们采用了基于锚的多尺度检测方案。
PAN融合FPN,将为多尺度特征地图的每个网格分配三个具有不同纵横比的先验锚,检测头将预测位置偏移、高度和宽度的缩放,以及每个类别的相应概率和预测的置信度。
可行驶区域段头和车道线段头 :
可行驶区域段头和车道线段头采用相同的网络结构。
我们将FPN的底层馈送到分割分支,大小为(W /8,H /8,256)。
我们的分割分支非常简单。经过三次上采样过程后,我们将输出特征映射恢复为(W,H,2)的大小,这表示输入图像中每个像素在可驾驶区域/车道线和背景中的概率。
损失函数:
由于我们的网络中有三个解码器,我们的多任务丢失包含三个部分。对于检测损失Ldet,它是分类损失、目标损失和包围盒损失的加权和,如等式1所示。
Ldet = α1Lclass + α2Lobj + α3Lbox
Lclass和Lobj是focal loss,Lclass用于惩罚分类,Lobj用于一个预测的置信度。Lbox是LCIoU[31]。
两种损失的可驱动区域分割Lda−seg和车道线分割Lll−seg包含交叉熵损失和Logits Lce,其目的是最小化网络输出像素和目标之间的分类错误。
IoU loss:已添加到 Lll−seg,因为它对于车道线稀疏类别的预测特别有效。
1
−
T
P
T
P
+
F
P
+
F
N
1 - \frac{TP}{TP+FP+FN}
1−TP+FP+FNTP
Lda和Lll−seg分别定义为等式(2)、(3):
总之,我们的最终损失是三部分的加权和,如等式(4)所示。
其中,α1、α2、α3、γ1、γ2、γ3可以调节以平衡总损耗的所有部分。
训练范式:
我们尝试不同的范式来训练我们的模型。最简单的方法是端到端的训练,然后可以联合学习三个任务。当所有任务确实相关时,这种训练范式很有用。此外,还尝试了一些交替优化算法,逐步训练我们的模型。在每个步骤中,该模型可以专注于一个或多个相关任务,而不管那些不相关的任务。即使不是所有的任务都是相关的,我们的模型仍然可以在这个范例中充分学习每个任务。算法1说明了一种逐步训练方法的过程。
算法1:一步一步的训练方法。首先,我们只训练编码器并检测头部。然后冻结编码器,检测头部,并训练两个分割头。最后,针对这三项任务对整个网络进行联合训练。
实验:
BDD100K数据集[28]支持自主驾驶领域的多任务学习研究。它有10万帧图片和10个任务的注释,是最大的驱动视频数据集。由于数据集具有地理、环境和天气的多样性,在BDD100k数据集上训练的算法足够健壮,可以迁移到新环境。因此,我们选择BDD100k数据集来训练和评估我们的网络。BDD100K数据集包括三个部分,70K图像的训练集、10K图像的验证集和20K图像的测试集。由于测试集的标签不是公共的,我们在验证集上评估我们的网络。
图4显示了更快的R-CNN和YOLOP之间的定性比较。由于多任务的信息共享,YOLOP的预测结果更加合理。例如,YOLOP不会将远离道路的物体误认为是车辆。此外,假阴性的例子更少,边界框更精确。
结果:
在本节中,我们只需端到端地训练我们的模型,然后将其与其他代表性模型在所有三个任务上进行比较。
交通目标检测结果
Multinet和DLT网络只能检测车辆,只考虑BDD100K数据集上五个模型的车辆检测结果。使用召回和mAP50作为检测准确性的评估指标。我们的模型在检测精度上超过了更快的R-CNN、MultiNet和DLT网络,并且与实际使用比我们更多技巧的YOLOv5s相当。
我们的模型可以实时推断。YOLOv5s比我们的更快,因为它没有车道线段头和可行驶区域段头。
图4显示了更快的R-CNN和YOLOP之间的定性比较。由于多任务的信息共享,YOLOP的预测结果更加合理。例如,YOLOP不会将远离道路的物体误认为是车辆。此外,假阴性的例子更少,边界框更精确。
可行驶区域分割结果
可驾驶区域分割的可视化结果如图5所示。在本文中,BDD100K数据集中的“区域/可驱动”和“区域/替代”类都被不加区分地归类为“可驱动区域”。我们的模型只需要区分图像中的可驾驶区域和背景。mIoU用于评估不同模型的分割性能。结果如表2所示。可以看出,我们的模型分别比MultiNet、DLT Net和PSPNet好19.9%、20.2%和1.9%。此外,我们的推理速度是他们的4到5倍。PSPNet和YOLOP结果的比较如图6所示。PSPNet和YOLOP在这项任务中都表现良好。但YOLOP在分割靠近车辆或车道线的边缘区域方面明显更好。我们认为这主要是因为其他两个任务都为该任务提供了边缘信息。同时,YOLOP犯下的愚蠢错误更少,例如将对面车道区域误判为可驾驶区域
车道检测结果
图8显示了ENet-SAD和YOLOP车道线检测结果的比较。与ENet-SAD相比,YOLOP的分割结果更为准确和连续。由于其他两个任务共享信息,YOLOP不会将一些车辆所在的区域或可驾驶的区域误认为车道线,但ENet-SAD总是这样。
消融实验:
看文章,讲得很细致。