目标检测和分割是自动驾驶汽车感知系统的两个核心模块。它们应该具有高效率和低延迟,同时降低计算复杂性。目前,最常用的算法是基于深度神经网络的,这保证了高效率,但需要高性能的计算平台。
在自动驾驶汽车的场景下,大多使用的都是计算能力有限的嵌入式平台,这使得难以满足上述要求。但是作者可以通过使用适当的架构、表示(降低数值精度、量化、修剪)和计算平台来降低网络的复杂性。
在本文中,作者关注第一个因素——使用所谓的检测-分割网络作为感知系统的一个组成部分。作者考虑了分割可行驶区域和道路标记的任务,并结合对选定目标(行人、红绿灯和障碍物)的检测。作者比较了文献中描述的3种不同架构的性能:MultiTask V3、HybridNets和YOLOP。
作者在一个自定义数据集上进行了实验,该数据集由大约500张可驾驶区域和车道线标记的图像以及250张检测到的物体的图像组成。在分析的三种方法中,MultiTask V3被证明是最好的,在RTX 3060上以124 fps的速度实现了99%的检测mAP50、97%的可驾驶区域分割MIoU和91%的车道线分割MIoU。
1、简介
移动机器人中的感知系统,包括自动驾驶汽车和无人机,使用相机、激光雷达、雷达、IMU等传感器,GNSS等,以提供有关车辆在3D空间中位置的关键信息,并检测相关物体(如汽车、行人、骑自行车的人、红绿灯等)。
图像和激光雷达数据处理涉及两项主要任务:检测,识别物体并用边界框或Mask标记,其基于每个像素在图像中的表示将标签分配给每个像素。实例分割为属于同一类的目标(例如,不同的汽车)分配不同的标签。这样可以正确识别和跟踪所有目标。通常,这两项任务都由不同类型的卷积神经网络执行。
对于检测,YOLO系列的网络是最常用的解决方案。对于分割,使用基于CNN架构的网络,例如U-Net和用于语义分割的全卷积网络,以及例如分割的Mask R-CNN。同样值得一提的是,在这种情况下,人们对Transformer神经网络的兴趣越来越大。然而,使用两个独立的模型会对系统的计算复杂性和能量效率产生负面影响。出于这个原因,正在研究同时执行上述两项任务的网络架构。
有两种方法可以用来解决这一挑战:使用实例分割网络或检测分割网络。实例分割网络是一类特殊的分割网络,需要准备所有检测到的目标都通用的训练数据集。此外,它们的操作相当复杂,仅部分结果用于自动驾驶车辆(道路、车道线等类别的区分实例不需要进一步分析,而且往往难以准确定义)。
检测-分割网络由一个公共部分(称为Backbone)和几个检测和分割Head组成。该架构允许准备用于检测的单独训练数据集,并且通常允许准备用于分割的多个子集(例如,用于车道线和道路标记分割的单独子集)。这使得数据集可以根据模块准确性的重要性进行缩放。
此外,所使用的数据集可以包含独立的图像集,这大大简化了数据收集和标记。到目前为止讨论的3种架构:检测、分割和检测分割如图1所示。
此外,限制类的数量将减少后处理所需的时间,后处理涉及过滤结果检测,例如使用NMS算法。将图像分割成仅选定的类别还可以减少推理时间并提高准确性。所有这些论点使检测分割网络成为自动驾驶汽车嵌入式感知系统的一个很好的解决方案。
在本文中,作者比较了3种检测分割网络的性能:MultiTask V3、HybridNets和YOLOP。作者在一个自定义数据集上进行了实验,该数据集记录在一个城市的模型上。路面和道路标记被分割,行人、红绿灯和障碍物等物体被检测到。
2、相关工作
科学文献中描述了许多不同的方法,用于检测可行驶区域和道路标记,以及检测物体,例如行人、汽车、交通标志、交通灯等。可用的解决方案之一是使用深度神经网络。这些可以分为检测、分割和检测分割网络。
检测网络被设计用于使用边界框来定位、分类和标记任何图像中的现有目标。传统的目标检测方法是基于proposals区域,然后将每个proposals分类为不同的目标类别。这包括基于卷积神经网络(R-CNN)的网络架构。另一种方法将目标检测视为回归或分类问题,以便直接获得最终结果(类别和位置)。其中包括YOLOv7网络架构。
分割网络基于编码器-解码器架构。它们用于对图像中的每个像素进行分类。可以区分两种类型的分割:语义分割和实例分割。语义分割的一个代表性例子是U-Net。编码器模块使用卷积和池化层来执行特征提取。另一方面,解码器模块从亚分辨率特征中恢复空间细节,同时预测目标标签。编码器模块的标准选择是轻量级CNN Backbone,如GoogLeNet或其改进版,即Inceptionv3。
为了提高语义分割网络的准确性和效率,人们提出了多分支结构。它们允许对图像中的目标进行高分辨率分割。为此,多分支网络引入了一个融合模块来组合编码分支的输出。这可以是通过级联或相加来连接输出特征的特征融合模块、聚合层(BiSeNet V2)、双边融合模块(DDRNet)或级联特征融合单元(ICNet)。
此外,在目标检测和分割方面,越来越多的研究使用基于Transformer的神经网络,如DETR、SegFormer。在分割任务中,目前提出的架构很少,而在目标检测任务中,有许多解决方案,其中基于Transformer的方法实现了最佳性能。视觉Transformer为各种任务提供强大、统一甚至更简单的解决方案。与CNN方法相比,大多数基于Transformer的方法具有更简单的管道,但性能更强。然而,基于Transformer的方法需要大量的训练数据。
许多专用解决方案需要对图像中的目标进行检测和分割。需要注意的是,一旦执行了完全分割(即,针对正在考虑的所有目标类),就无需执行检测——可以从单个目标的Mask中获得边界框。然而,实现精确的多类语义分割或实例分割的网络具有高计算复杂度的特点。
作者表明,在RTX 3090和GTX 1080 Ti显卡上,三种最精确网络的性能分别不超过24帧/秒和12帧/秒。这表明,对于这种类型的网络,在嵌入式计算平台上实现实时处理(60fps)是一项挑战。因此,将快速检测与分割相结合的想法仅限于变化相对较小的少数类别(如道路、道路标记或植被/建筑物)。这类解决方案的一个关键特征是两种功能通用的编码器。这种方法使得在配备有计算芯片的嵌入式设备上运行深度网络成为可能,这些计算芯片消耗更少的功率,但也具有更少的计算能力。
此外,如稍后所示,学习分割检测网络的过程比仅基于分割网络的替代解决方案更容易且更快。在MultiNet中,已经提出了检测-分割网络架构,该架构目前实现了最佳结果。训练过程通常使用以下数据集:KITTI、Cityscapes、VOC2012或BDD100k。
在为实验预先选择合适的解决方案时,作者考虑了所提出的架构的多样性、与FPT’22竞争相关的要求的实现,以及在嵌入式计算平台上量化和加速网络的可能性,即eGPU(嵌入式图形处理单元),SoC FPGA(片上系统现场可编程门阵列)。
因此,作者决定在研究中使用以下三种网络:MultiTask V3、HybridNet和YOLOP。
3、本文方法
MultiTask V3网络是Vitis AI(AMD Xilinx)平台的开发人员为用户在SoC FPGA平台上使用神经网络提出的模型。
MultiTask V3神经网络架构的方案如图2所示。它允许同时执行5项任务——检测、3个独立的图像分割和深度估计。确定Backbone为ResNet-18。使用编码器和卷积层块来提取后续特征。然后,负责网络给定部分的分支使用卷积、ReLU激活操作和归一化生成相应的输出。
由于要执行大量任务,网络被训练为分别分割道路标记、车道线(包括方向)和物体(行人、障碍物和红绿灯)。对同一组物体进行了检测。该模型仅使用作者自己的自定义数据集进行训练,这些数据集被转换为网络开发人员推荐的格式。由此产生的网络处理分辨率为512×320像素的图像。
此外,得益于模型量化工具,作者使用了DPU(深度学习处理器单元)在SoC FPGA平台上运行了量化后的网络。
所考虑的第二种检测分割神经网络是YOLOP。该体系结构的方案如图3所示。它在一个架构中执行3项独立的任务——道路场景中物体的检测、可驾驶区域的分割和道路标记。该网络由一个通用编码器和3个解码器组成,每个解码器专用于单独的任务。可行驶区域代表允许车辆行驶的所有车道线——不考虑相反的车道线。该网络最初是在BDD100k数据集上训练的。
为了减少内存需求,图像的分辨率从1280×720×3缩放到640×384×3。该网络的单类检测(汽车)mAP50得分为76.5%,可驾驶区域分割mIoU得分为91.5%,车道线线分割mIoU得分为70.5%。
HybridNets网络是同时分割和检测模型的另一个例子。HybridNets与YOLOP一样,只对道路标线和可行驶区域进行物体检测和分割(不考虑车道线方向)。该体系结构的方案如图4所示。它没有MultiTask V3中可用的语义分割和深度估计分支。
该网络由4个元素组成:EfficientNet V2形式的特征提取器、BiFPN形式的Neck和两个分支,一个用于类似于YOLOv4的检测Head,另一个用于由Neck连续层的输出的一系列卷积和融合组成的分割。该网络最初在BDD100k数据集上进行训练,其图像被缩放为640×384×3的大小。它实现了单类检测(汽车)的mAP50等于77.3%,可驾驶区域分割的mIoU为90.5%,车道线线分割的mIoU得分为31.6%。
4、实验
图6显示了所考虑的神经网络在包含直道的视图的目标检测、驾驶区域和道路标记分割方面的结果。为了验证作者选择的检测分割神经网络模型的有效性,作者分别比较了每个单任务方案和多任务方案的性能。
表I显示了NVIDIA GeForce GTX 1060 M和NVIDIA GeForce RTX 3060显卡上的型号性能。可以看出YOLOP和MultiTasks网络实现了实时的推理,而HybridNets稍慢。
这里需要注意的是,使用了HybridNets的原始实现。与YOLOP和MultiTask V3模型不同,它广泛使用子类化来实现网络中使用的大多数层。与其他模型相比,这可能导致网络的推理速度存在很大差异。
表II总结了所选神经网络的输入图像分辨率和计算复杂性。MultiTask V3具有最高的FLOPS值,尤其是当相对于输入图像分辨率和最高数量的参数进行归一化时。另一方面,它在两个GPU上都获得了最佳性能,这可能是由于高度优化的并行实现。然后,作者进行了评估,以评估每项任务的性能:目标检测、可行驶区域和车道线分割。作者考虑了三个模型在自定义数据集上的目标检测性能。
如表III所示,作者使用mAP50、mAP70和mAP75作为检测准确性的评估指标。对于YOLOP和MultiTask V3,mAP50得分高于95%,证明这两个网络都已成功训练。对于MultiTask V3,分数不会随着IoU(联合交叉)接受水平的提高而发生太大变化,而对于YOLOP,分数略有下降。
这一结果表明,MultiTask V3的检测与验证数据集提供的检测非常相似,而YOLOP的检测与它们接近,但并不完全重叠。HybridNets体系结构的mAP50得分约为84%。该分数低于前两种体系结构,但仍允许可接受的检测精度。作者使用IoU和mIoU(平均IoU)作为可驾驶区域分割和车道线分割准确性的评估指标。MultiTask V3、YOLOP和HybridNets的可驾驶区域分割结果的比较如表IV所示。
注意,FPT’22比赛的要求之一是左侧交通。可以看出,MultiTask V3网络实现了最佳性能。然而,其他神经网络也表现得很好,准确率不低于84%。所有网络的可驱动区域类的高IoU分数表明,预测的分割与验证数据集中的分割几乎相同。实现如此高的结果是可以预测的,因为驱动区域表面大、形状简单、颜色均匀。
因此,将它们与背景区分开来相对容易。由于背景被分类为不属于驱动区域类别的任何其他像素,因此获得的结果甚至更高。
车道线分割评估的结果如表V所示。由于车道线标线比可驾驶区域的平面小得多,因此可预期的可驾驶区域分割的结果要低得多。它们的形状也更复杂。每个神经网络的Lane IoU的值在大约79%到91%之间变化,这对于MultiTask V3来说是最好的。这里应该注意的是,对于每个任务,HybridNets模型的质量指标低大约10个百分点。通过改变超参数,尝试了许多方法,如批量大小、优化器、学习率、Backbone、训练顺序,甚至迁移学习方法,但没有一种方法能给出更好的结果。这可能是由于缺乏所提出的学习算法的最后一步,其中优化器被改为SGD,并且同时训练任务和Backbone。由于共享Neck的影响更大,HybridNets可能更容易接受同时学习,因为其架构高度交互。需要进一步的消融研究来确定观察到的性能较低的原因。
总结所进行的实验,应该注意的是,MultiTask V3网络在每个类别中都获得了最佳结果。然而,它在计算方面,特别是在存储器复杂性方面(所考虑的网络中最高的)有一定的缺点。另一方面,它在考虑的两个GPU卡上实时工作。此外,它还允许获取深度信息。考虑到所有这些因素,MultiTask V3网络应该被认为是构建自动驾驶汽车嵌入式感知系统的一个很好的候选者。
6、参考
[1].Detection-segmentation convolutional neural network for autonomous vehicle perception.