点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心技术交流群
后台回复【ECCV2022】获取ECCV2022所有自动驾驶方向论文!
论文名称:YOLOPv2: Better, Faster, Stronger for Panoptic Driving Perception
原文链接:https://arxiv.org/pdf/2208.11434.pdf
在过去的十年中,多任务学习方法在解决全景驾驶感知问题方面取得了很好的效果,提供了高精度和高效率的性能。在计算资源有限的实时自主驾驶系统网络设计上,它已成为一种流行范式。本文提出了一种有效的多任务学习网络,可以同时执行交通目标检测、可行驶道路区域分割和车道检测任务。在具有挑战性的BDD100K数据集上,模型在精度和速度方面达到了SOTA(推理时间比以前SOTA模型减少了一半)!
背景介绍
基于视觉的任务(如目标检测、分割、车道检测等)在低成本自动驾驶的应用中仍然具有挑战性,最近,领域人员努力构建一个鲁棒的全景驾驶感知系统,全景驾驶感知系统有助于自动驾驶车辆通过常见传感器(如camera或激光雷达)全面感知周围环境。在场景理解的实际应用中,基于camera的目标检测和分割任务通常是首选的,因为成本较低。
目标检测在以下方面起着重要作用:提供交通障碍物的位置和大小信息,帮助自动驾驶车辆在驾驶阶段做出准确及时的决策。此外,可行驶区域分割和车道线检测为路线规划和驾驶安全性提供了丰富的信息。目标检测和分割是计算机视觉领域的两个长期研究课题。有一系列开创性的目标检测工作,如CenterNet、Faster R-CNN和YOLO家族。常用的分割网络通常用于可行驶区域分割问题,例如:UNET、segnet和pspNet。而对于车道检测/分割,需要更强大的网络,以提供更好的高层次和低层次特征融合,从而考虑全局结构上下文来增强分割细节。然而,在实时自主驾驶系统中为每个单独的任务运行单独的模型通常是不现实的,在这种情况下,多任务学习网络[19、15、25、20]为节省计算成本提供了一种潜在的解决方案,其中网络被设计成编码器-解码器模式,并且编码器被不同的任务有效地共享。
论文在深入研究之前的方法之后,提出了一种有效的多任务学习网络。在具有挑战性的BDD100K数据集上进行了实验,模型在所有三项任务中都取得了最佳性能:目标检测任务的MAP为0.83,可驾驶区域分割任务的MAP为0.93,车道检测的准确率为87.3。与基线相比,这些数字都大幅增加。此外,在V100上运行时将每秒帧数(FPS)提高到91,远高于相同实验设置下YOLOP模型的49FPS值。
主要贡献点:
better:提出了一种更有效的模型结构,并开发了更复杂的无痛涨点package,例如,在数据预处理过程中执行了Mosaic和Mixup ,并使用了一种新的hybrid loss;
faster:为模型实施了更有效的网络结构和内存分配策略;
stronger:模型是在强大的网络体系结构下训练的,因此它可以很好地适应各种场景,同时确保速度。
多任务感知的一些方案
实时交通目标检测
目标检测可分为单级检测器和两级检测器。两级检测器由region proposal组件和检测优化组件组成,这些方法通常具有高精度和鲁棒的结果。但单级目标检测器通常运行更快,因此在实时应用中一般首选单阶段。YOLO系列采用先进的单阶段目标检测设计,保持活跃迭代,为论文的实验提供了灵感,包括YOLO4、scaled-yolov4、yolop和yolov7)。论文使用简单但功能强大的网络结构,并结合有效的免费包(BoF)方法来提高目标检测性能。
可行驶区域和车道线分割
通过使用全卷积神经网络代替传统的分割算法,语义分割的研究取得了显著进展。随着该领域的广泛研究,设计了更高性能的模型,如Unet的经典编码器-解码器结构,以及PSPNet中用于提取不同级别特征的金字塔池模块,这有助于有效划分可行驶区域。
对于车道线分割,由于其特定任务特征(例如,车道形状的细长度和零散的像素分布)的困难,车道线分割需要细致的检测能力。SCNN提出了逐片卷积,以在每个层的信道之间传输信息。Enet-SAD采用了一种自关注校正方法,使低级特征能够从高级特征中学习,这不仅可以提高性能,还可以保持模型的轻量级设计。
多任务方法
多任务学习的目标是设计能够更好地从多任务监控信号中学习共享表示的网络。Mask RCNN继承了Faster RCNN的思想,使用带有残差块的ResNet架构进行特征提取,并添加了一个额外的掩码预测分支,从而有效地结合了实例分割和对象检测的任务。LSNet的作者设计了一种三合一的网络架构,同时执行目标检测、实例分割和可行驶区域分割。他们还设计了一个交叉IOU损耗,以适应不同规模和属性的目标。MultiNet使用一个共享编码器和三个独立解码器来完成场景分类、目标检测和可驱动区域分割的任务。YOLOP构建了一个用于特征提取的编码器和三个用于处理特定任务的头,实现了多任务处理。基于此,HyBridNet的工作添加了Bifpn以进一步提高精度。
Bag of freebies
为了在不增加推理成本的情况下提高目标检测结果的准确性,研究人员通常分开训练阶段和测试阶段数据处理方式。通常实现数据增强以增加输入图像的多样性,从而使所设计的目标检测模型在不同的领域中具有足够的通用性。例如,在YOLOP中应用常规图像镜像、图像亮度、对比度、色调、饱和度和噪声的调整。这些数据增强方法都是像素级调整,并保留调整区域中的所有原始像素信息。此外,YOLO系列的作者提出了一种同时对多幅图像执行数据增强的方法(比如Mosaic)。
YOLOPv2网络结构
![66bdcfcb00a3862f53d02a64b0486e74.png](https://i-blog.csdnimg.cn/blog_migrate/04ff6d66cebcc5888e5f6f44e27633a7.png)
论文基于一组现有的工作设计了一个更高效的网络架构,例如YOLOP、HybridNet等。YOLOPv2模型受YOLOP和HybridNet工作的启发,保留了核心设计概念,但利用了强大的主干进行特征提取。此外,与现有工作不同,论文利用解码器头的三个分支来执行特定任务,而不是在同一分支中运行可驾驶区域分割和车道检测任务。这种变化的主要原因是,交通区域分割和车道检测的任务难度完全不同,这意味着这两个任务在特征级别上有不同的要求,因此更好地具有不同的网络结构。
共享编码器
与使用CSPdarknet作为主干的YOLOP不同,YOLOPv2采用E-ELAN的设计来利用group卷积,并使不同层的权重能够学习更多不同的特征,下图显示了group卷积的配置。在neck部分,收集不同阶段生成的特征,并通过concat进行融合。与YOLOP类似,使用空间金字塔池(SPP)模块融合不同尺度的特征,并使用特征金字塔网络(FPN)模块融合不同语义层次的特征。
![1d447e80b511fc67a88405ad05b588d0.png](https://i-blog.csdnimg.cn/blog_migrate/8ae10a1ea4dc86b5e3706f3f4dce62e7.png)
检测头部分
如上所述,为每个单独的任务设计了三个单独的解码器头。与YOLOv7类似,论文采用基于anchor的多尺度检测方案。首先,使用自底向上结构的路径聚合网络(PAN)来更好地提取定位特征。通过结合PAN和FPN的特征,能够将语义信息与这些局部特征融合,然后直接在PAN中的多尺度融合特征图上进行检测。多尺度特征图中的每个网格将分配有三个不同纵横比的锚,检测头将预测位置偏移、缩放高度和宽度,以及每个类别预测的概率和相应置信度。
该方法中的可驾驶区域分割和车道线分割在具有不同网络结构的独立任务头中执行。与YOLOP不同,两个任务的特征都来自neck的最后一层,论文使用不同的语义级别的特征。与其他两个任务相比,从更深的网络层提取的特征对于可行驶区域是没有必要的。
这些更深的特征不能改善预测性能,但增加了训练期间模型收敛的难度。因此,可行驶区域分割头的分支在FPN模块之前连接。此外,为了补偿这种变化引起的可能损失,应用了额外的上采样层,即,在解码器级中总共应用了四个最近的内插上采样。对于车道线分割,任务分支连接到FPN层的末端,以便提取更深层次的特征,因为道路线通常不细长,并且在输入图像中难以检测。此外,反卷积是应用于车道线检测的解码器阶段,以进一步提高性能。
损失函数
检测损失如下所示:
![9530ad38aa4b9a3bd2b41190cbf3cf76.png](https://i-blog.csdnimg.cn/blog_migrate/bb32a2dd1d342bd7f166cf784e2b3082.png)
class和obj损失使用focal loss;
适当设置损失权重可以有效保证多任务检测的结果,交叉熵损失用于可行驶区域分割,目的是最小化网络输出和gt之间的分类误差。对于车道线分割,使用focal loss代替交叉熵损失。因为对于车道检测等硬分类任务,使用focal loss可以有效地引导模型关注难例,从而提高检测精度。
此外,在实验中实现了由dice loss和focal loss组成的混合loss[29]。Dice loss能够学习类分布,缓解不平衡体素问题。focal loss有能力迫使模型学习较差的分类体素,最终损失可按以下公式计算:
![69c5c0830c99be4f09044ce055ce96d9.png](https://i-blog.csdnimg.cn/blog_migrate/27e4229b79dd05b8f58fb729d7d4ba67.png)
论文在多任务学习方法中引入了Mosaic和Mixup的增强策略,据我们所知,这是第一次在目标检测、可驾驶区域分割和车道线检测这三个任务中显示出显著的性能改进。
实验
论文使用BDD100K作为实验研究的基准数据集,这是一个在驾驶场景中具有挑战性的公共数据集。该数据集在驾驶员透视图中包含10万帧,广泛用作自动驾驶计算机视觉研究的评估基准。BDD100K数据集支持10个视觉任务, 与其他流行的驾驶数据集(如Cityscapes和Camvid)相比,BDD100K在考虑天气条件、场景位置和照明等方面具有更多优势。
![1a5f2fb435d2b9d9a9f083e896a7f9fc.png](https://i-blog.csdnimg.cn/blog_migrate/5042bb6536db336fc99fd8d1e9833c29.png)
上表显示了两个SOTA多任务模型和YOLOPv2之间的比较。结果表明,论文的模型具有更强的网络结构和更多的参数,但执行速度更快。这得益于所提出的有效网络设计和复杂的内存分配策略,在相同的实验设置和评估指标中运行所有测试。
交通目标检测
与YOLOP相同,这里使用mAP50和Recall作为评估指标,YOLOPv2模型实现了更高的mAP50和recall,如下表所示。
![af5de3da06162b3178eb60d5309eeed5.png](https://i-blog.csdnimg.cn/blog_migrate/e6f193f27e72103776d75082083ccffd.png)
可行驶区域分割
下表展示了可行驶区域分割的评估结果,mIOU用于评估不同模型的分割性能,YOLOPv2模型以0.932获得最佳性能。
![1318f52f9cb421cef813418282bfe52a.png](https://i-blog.csdnimg.cn/blog_migrate/f62a57c143ae2cd201124866a0ceb165.png)
车道线检测
BDD100K数据集中的车道线由两行注释,因此需要进行预处理。首先,根据两条带注释的线计算中心线,然后绘制一个宽度为8像素的车道掩码进行训练,同时将测试集车道线保持在2像素宽。论文使用像素精度和车道的IoU作为评估指标。如下表所示,YOLOPv2模型达到了最高的精度值。
![733ee2505c95c1e7bac81b1576d1ad85.png](https://i-blog.csdnimg.cn/blog_migrate/3b9fd521089a61d0a2c43411b5c21057.png)
结果可视化
下图显示了在BDD100K数据集上的YOLOP、Hybridnet和YOLOPv2的视觉比较。第一张图显示了白天的结果,左列列出了YOLOP的三种场景,第一种场景中有一些错误的可驾驶段和可驾驶区域的缺失分割,第二种场景中存在用于小对象的冗余检测框和可驾驶区的缺失分割。在第三种情况下,发现车道线的缺失检测。
中间一栏显示了Hybridnet的三个场景,第一场景中存在不连续的车道预测,第二场景中存在小型车辆重复检测和车道丢失检测的问题,第三场景中存在一些车辆和车道的错误检测。
右栏显示了YOLOPv2的结果,它说明了我们的模型在各种场景中提供了更好的性能。
![fba7e2dbf3e868f876fa7cbaa3dd2522.png](https://i-blog.csdnimg.cn/blog_migrate/dcad9bb6efecebfa0d972412d70356e6.png)
下图显示了夜间的结果。左栏提供了YOLOP的场景结果,第一个场景中存在错误检测和缺失可驾驶区域分割,第二个场景中出现车道检测偏差,第三个场景中发生缺失车道线检测和可行驶区域的分割。
中间一栏是Hybridnet的结果,在第一个场景中,某些车辆的检测缺失,以及一些错误检测框。在第二场景中,存在一些错误检测和冗余检测框。第三场景中缺少可行驶区域分割和冗余车辆检测框。
右栏中的图像是YOLOPv2的结果,它表明论文的模型成功地克服了这些问题,并具有更好的性能。
![0299f9ee637a37dcd96979d19463400c.png](https://i-blog.csdnimg.cn/blog_migrate/577e6dd0b4e91859ec66d0d99d8c4296.png)
消融研究
下表展示了YOLOPv2在实验过程中的消融实验,记录了各项提点trick!!!
![55a8886c3e93314e5d6c46051211fd81.png](https://i-blog.csdnimg.cn/blog_migrate/8685c530a6440adad781914556bfb952.png)
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;
加入我们:自动驾驶之心技术交流群汇总!
自动驾驶之心【知识星球】
想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!