本文经自动驾驶之心公众号授权转载,转载请联系出处。
笔者的个人理解
通过最近的nuScenes的Leaderboard榜单可以看出,基于纯视觉的感知算法取得的性能(0.668)已经逐渐向纯激光雷达的算法性能逼近。
基于纯视觉的感知LeaderBoard基于纯激光雷达的感知LeaderBoard
同时,多个传感器融合的感知算法由于汇聚了不同传感器的优势(相机传感器采集的图像提供丰富的语义信息,激光雷达传感器提供物体的深度和几何信息),使得检测器得到了更加鲁棒的检测性能。
相机+激光雷达的融合感知模型
虽然目前基于多传感器融合或者纯视觉的感知算法已经使自动驾驶车辆具备了强大的感知能力,但设计出来的感知算法模型往往会受到传感器设备成本以及潜在的环境挑战,使其很难做到大规模的上车部署。
而在2D目标检测任务中的YOLO算法模型因其在算法性能和部署方面做到了非常出色的权衡,本文就以YOLO网络框架为设计原型,设计了在BEV场景下的感知算法模型——YOLO-BEV。
论文的arxiv链接:https://arxiv.org/pdf/2310.17379.pdf
YOLO-BEV算法模型的整体结构
本文将从模型的输入数据准备,网络模型架构,网格补偿机制以及损失函数四方面进行介绍。
输入数据准备
YOLO-BEV采用的是nuPlan数据集。这个数据集是包括波士顿、匹兹堡、拉斯维加斯和新加坡在内的四个城市采集的高质量的路采数据,总计1200个小时。nuPlan数据集包含了多种驾驶条件,同时还包括了丰富的传感器数据,包括但不限于多个激光雷达,多个摄像头采集到的视角、惯性测量单元以及高精度的GPS坐标。
与通用的视觉感知算法模型不一样的是,本文使用的来自nuPlan数据集的8台摄像机采集的图像,每台摄像机的FOV角为45°,从而构成一个360°的环视视角。在输入的数据方面,喂入到模型的数据是一个3x3的图像矩阵,其中中间的图像是空白的,如下图所示
值得注意的是,输入的图像矩阵最后一行作者将三张图片旋转了180度,因为作者在论文中提到,这种做法可以更好的匹配鸟瞰的空间位置。
除此之外,为了生成可靠和准确的GT真实数据,采用了一种创新但简单的提取技术。通过利用nuPlan数据集中唯一标识的标记,成功地建立了输入图像和精心计算的代表其他车辆位置的鸟瞰图坐标之间的一对一对应关系。而且非必要信息,如行人、交通信号和其他环境变量,被有意地从作者的分析中省略。这种精简的方法有助于加快计算过程,显著缩短获得有意义的结果所需的时间。
网络模型架构
YOLO-BEV算法模型的整体网络架构如下图所示,其中复用了原有YOLO框架的主干网络和Head检测头。
其中3x3 Matrix of Input Picture
即输入到网络中的一组8视角的环视图像,通过主干网络提取多尺度特征,然后送入到论文中提出的CustomDetect
结构当中得到最终的预测结果。
CustomDetect
结构通过上图可以看出,分成了三个通道分支。每个通道分支包含一组卷积运算,该卷积层的结构用数学公示建模如下
其中以及代表每个卷积层的权重参数和偏置项。
针对每个通道分支输入特征图,得到包含待预测物体坐标和置信度的特征的数学表达式如下:
再得到特征图后,就可以用来预测最终的置信度得分以及在BEV空间网格中的位置了。
网格补偿机制
网格补偿机制在本文中用于去调整预测后的物体空间位置信息。网格补偿机制主要包括两个子部分,分别是Innovative Grid Creation和Precision-Driven Coordinate Adjustment模块。
- Innovative Grid Creation模块
对于每个单独的检测层都会构建一个网格,这个网格和特征图的尺寸大小是完全一致的。针对特征图每个单元格的中心点坐标,假设其在当前网格的笛卡尔坐标系中的位置为:
通过上述操作,就可以得到特征图每个单元格位置的中心点坐标在网格中的相对坐标了。
- Precision-Driven Coordinate Adjustment模块
该模块的作用用于将模型的检测结果在构建的网格上进行调整。相当于是在初始化好的中心点坐标的偏移量,利用网络的预测结果进行坐标的微调,该微调的数学表达式表述如下:
通过上面的Precision-Driven Coordinate Adjustment模块就可以得到最终细粒度的坐标位置结果了。
损失函数
该论文中的总损失包括两个部分,一部分是分类损失,另外一部分是回归损失,两个损失之间的比重靠和来调节。
对于分类损失来说,和常见的目标检测中的损失计算方式一样,采用的是交叉熵损失函数,训练过程中的正负样本均参与分类损失的计算,即上面公式中的。
对于回归损失来说,只有正类样本才会参与回归损失的计算,的计算方式如下
采用MSE作为回归损失的目的是用来平滑梯度流,促进了基于反向传播的学习环境中的优化过程。
那接下来就唠唠在YOLO-BEV中的正负样本损失是如何定义的。先放下论文中的插图!
针对两个有向的车辆目标,其中预测的车辆目标(图中的绿色框),真值的车辆目标(图中的蓝色框),因其旋转IoU计算比较困难。所以在论文中,为了方便、快捷的计算两个框的IoU的值,选择对两个有向框转换成与轴平行的矩形框(AABBs),水平预测框对应图上的橙色框,水平真值框对应图上的水蓝色框。通过计算两个水平框之间的IoU值来近似代替两个旋转框的IoU值。虽然这么做会造成IoU计算不准确的问题,但是作者也在论文中提到了这种近似做法并不会影响模型的训练优化过程。
may generally result in slightly larger IoU values compared to more exact oriented bounding box methods. This is because the boxes are aligned to the axis and may encompass extra area that is not a true part of the overlap.Importantly, empirical testing has shown that this slight overestimation is generally acceptable, as it still effectively aids in reducing the loss during training.
与更精确的定向边界框方法相比,通常会导致略大的IoU值。这是因为框与轴对齐,并且可能包含不属于重叠部分的额外区域。重要的是,经验测试表明,这种轻微的高估通常是可以接受的,因为它仍然有效地帮助减少训练期间的损失。
最终在模型训练过程中,正类样本即计算的IoU阈值大于设定的阈值即为正类样本,小于设定的阈值即为负类样本。
实验结果
在作者实际训练模型的过程中,实际训练策略包括了两个阶段
- 第一个阶段:作者只使用了包括1000个左右实例的轻量数据集进行训练从而使模型接近过训练过程中的拟合状态,以确保捕捉复杂特征。在这一阶段,花费了数小时的时间来达到近似过拟合的优化模型状态。
- 第二阶段:在这一阶段,作者将第一阶段训练的模型在完整的Nuplan数据集上进行训练,并且在大规模的数据集上进行学习率、batch size等超参数的调优,从而实现最佳的感知性能。
通过论文中放出来的BEV下的检测结果可以看到,YOLO-BEV的定位效果还是很不错的,证实了模型在复杂场景下进行准确的位置定位能力。
目前存在的问题以及未来工作重点
- NMS后处理操作仍可进行改进
作者提到,NMS作为目标检测任务中的后处理操作在抑制重复框方面是非常有效的,但是在鸟瞰图的感知方面仍需考虑感知中特有的问题。比如两辆车靠的比较近,NMS算法很有可能将其中的一个感知结果抑制掉。或者是由于径向虚警等问题导致的最终检测结果距离真值目标的位置依旧有偏移。
- 提升模型对于连续帧的建模能力
由于当前提出的YOLO-BEV是基于单帧的,缺乏对于连续帧的建模能力,从而在生成的BEV结果中,会有不平滑的“跳跃“问题。所以作者为了改善这一问题,后续的工作可能会深入到Transformer的架构中去建模不同帧之间的时序关系。同时作者也有提到,基于Transformer的架构参数量较高,可能会降低模型的FPS造成系统的延迟。所以,要在增强模型的时态理解和维护实时处理能力之间取得谨慎的平衡。
- 提升模型对于不同类别物体的感知能力
目前该工作不能识别像交通灯、行人或者其他车辆实体。但是在理想的情况下,一个更全面的BEV结果将包含这些不同的元素,提供更丰富的感知结果,更好地为自主导航系统提供信息。所以作者后续会可能会增加不同类别的损失函数或者语义分割功能,以封装这种粒度级别的细节。
总结
目前虽然纯视觉的单模态或者是多模态融合的感知算法已经取得了出色的成绩,但感知算法模型是否易于部署才是算法得以上车的关键所在!本文就是对YOLO-BEV的算法模型进行了细致的介绍和解读,希望对大家有所帮助。