本文经自动驾驶之心公众号授权转载,转载请联系出处。
写在前面&笔者的个人理解
在自动驾驶系统当中,感知任务是整个自驾系统中至关重要的组成部分。感知任务的主要目标是使自动驾驶车辆能够理解和感知周围的环境元素,如行驶在路上的车辆、路旁的行人、行驶过程中遇到的障碍物、路上的交通标志等,从而帮助下游模块做出正确合理的决策和行为。在一辆具备自动驾驶功能的车辆中,通常会配备不同类型的信息采集传感器,如环视相机传感器、激光雷达传感器以及毫米波雷达传感器等等,从而确保自动驾驶车辆能够准确感知和理解周围环境要素,使自动驾驶车辆在自主行驶的过程中能够做出正确的决断。
目前,基于纯图像的视觉感知方法相比于基于激光雷达的感知算法需要更低的硬件和部署成本而受到工业界和学术界的广泛关注,并且已经有许多优秀的视觉感知算法被设计出来用于实现3D目标感知任务以及BEV场景下的语义分割任务。虽然现有的3D目标感知算法已经取得了较为不错的检测性能,但依旧有相关问题逐渐在使用过程中暴露了出来:
- 原有的3D目标感知算法无法很好的解决数据集中存在的长尾问题,以及真实世界中存在但是当前训练数据集中可能没有标注的物体(如:行驶道路上的大石块,翻倒的车辆等等)
- 原有的3D目标感知算法通常会直接输出一个粗糙的3D立体边界框而无法准确描述任意形状的目标物体,对物体形状和几何结构的表达还不够细粒度。虽然这种输出结果框可以满足大多数的物体场景,但是像有连接的公交车或者具有很长挖钩的建筑车辆,当前3D感知算法就无法给出准确和清楚的描述了
基于上述提到的相关问题,栅格占用网络(Occupancy Network)感知算法被提出。本质上而言,Occupancy Network感知算法是基于3D空间场景的语义分割任务。基于纯视觉的Occupancy Network感知算法会将当前的3D空间划分成一个个的3D体素网格,通过自动驾驶车辆配备的环视相机传感器将采集到的环视图像送入到网络模型中,经过算法模型的处理和预测,输出当前空间中每个3D体素网格的占用状态以及可能包含的目标语义类别,从而实现对于当前3D空间场景的全面感知。
近年来,基于Occupancy Network的感知算法因其更好的感知优势而受到了研究者们的广泛关注,目前已经涌现出了很多优秀的工作用于提升该类算法的检测性能,这些论文的大概思路方向为:提出更加鲁棒的特征提取方法、2D特征向3D特征的坐标变换方式、更加复杂的网络结构设计以及如何更加准确的生成Occupancy真值标注帮助模型学习等等。然而许多现有的Occupancy Network感知方法在模型预测推理的过程中都存在着严重的计算开销,使得这些算法很难满足自动驾驶实时感知的要求,很难上车部署。
基于此,我们提出了一种新颖的Occupancy Network预测方法,和目前的SOTA感知算法相比,提出的FastOcc算法具有实时的推理速度以及具有竞争力的检测性能,提出的算法和其他算法的性能和推理速度如下图所示。
FastOcc算法和其他SOTA算法的精度和推理速度比较
论文链接:https://arxiv.org/pdf/2403.02710.pdf
网络模型的整体架构&细节梳理
为了提高Occupancy Network感知算法的推理速度,我们分别从输入图像的分辨率、特征提取主干网络、视角转换的方式以及栅格预测头结构四个部分进行了实验,通过实验结果发现,栅格预测头中的三维卷积或者反卷积具有很大的耗时优化空间。基于此,我们设计了FastOcc算法的网络结构,如下图所示。
FastOcc算法网络结构图
整体而言,提出的FastOcc算法包括三个子模块,分别是Image Feature Extraction用于多尺度特征提取、View Transformation用于视角转换、Occupancy Prediction Head用于实现感知输出,接下来我们会分别介绍这三个部分的细节。
图像特征提取(Image Feature Extraction)
对于提出的FastOcc算法而言,网络输入依旧是采集到的环视图像,这里我们采用了ResNet的网络结构完成环视图像的特征提取过程。同时,我们也利用了FPN特征金字塔结构用于聚合主干网络输出的多尺度图像特征。为了后续的表达方便,这里我们将输入图像表示为,经过特征提取后的特征表示为。
视角转换(View Transformation)
视角转换模块的主要作用就是完成2D图像特征向3D空间特征的转换过程,同时为了降低算法模型的开销,通常转换到3D空间的特征会进行粗糙的表达,这里为了方便表示,我们将转换到3D空间的特征标记为,其中代表嵌入特征向量的维度,代表感知空间的长度、宽度和高度。在目前的感知算法当中,主流的视角转换过程包括两类:
- 一类是以BEVFormer为代表的Backward的坐标变换方法。该类方法通常是先在3D空间生成体素Query,然后利用Cross-view Attention的方式将3D空间的体素Query与2D图像特征进行交互,完成最终的3D体素特征的构建。
- 一类是以LSS为代表的Forward的坐标变换方法。这类方法会利用网络中的深度估计网络来同时估计每个特征像素位置的语义特征信息和离散深度概率,通过外积运算构建出语义视锥特征,最终利用VoxelPooling层实现最终的3D体素特征的构建。
考虑到LSS算法具有更好的推理速度和效率,在本文中,我们采用了LSS算法作为我们的视角转换模块。同时,考虑到每个像素位置的离散深度都是估计出来的,其不确定性一定程度上会制约模型最终的感知性能。因此,在我们的具体实现中,我们利用点云信息来进行深度方向上的监督,以实现更好的感知结果。
栅格预测头(Occupancy Prediction Head)
在上图展示的网络结构图中,栅格预测头还包含三个子部分,分别是BEV特征提取、图像特征插值采样、特征集成。接下来,我们将逐一介绍三部分的方法的细节。
BEV特征提取
目前,大多数的Occupancy Network算法都是对视角转换模块得到的3D体素特征进行处理。而处理的形式一般是三维的全卷积网络。具体而言,对于三维全卷积网络的任意一层,其对输入的三维体素特征进行卷积所需要的计算量如下:
其中,和分别代表输入特征和输出特征的通道数量,代表特征图空间大小。相比于直接在3D空间中处理体素特征,我们采用了轻量级的2D BEV特征卷积模块。具体而言,对于视角转换模块的输出体素特征,我们首先将高度信息和语义特征进行融合得到2D的BEV特征,其次利用2D全卷积网络进行特征提取得到BEV特征,该2D过程的特征提取过程的计算量可以表述成如下的形式
通过3D和2D处理过程的计算量对比可以看出,通过利用轻量化的2D BEV特征卷积模块来代替原有的3D体素特征提取可以大大减少模型的计算量。同时,两类处理过程的可视化流程图如下图所示:
2D FCN和3D FCN网络结构的可视化情况
图像特征插值采样
为了减少栅格预测头模块的计算量,我们将视角转换模块输出的3D体素特征的高度进行压缩,并利用2D的BEV卷积模块进行特征提取。但为了增加缺失的Z轴高度特征信息并秉持着减少模型计算量的思想出发,我们提出了图像特征插值采样方法。
具体而言,我们首先根据需要感知的范围设定对应的三维体素空间,并将其分配到ego坐标系下,记作。其次,利用相机的外参和内参坐标变换矩阵,将ego坐标系下的坐标点投影到图像坐标系,用于提取对应位置的图像特征。
其中,和分别代表相机的内参和外参坐标变换矩阵,代表ego坐标系下的空间点投影到图像坐标系下的位置。在得到对应的图像坐标后,我们将超过图像范围或者具有负深度的坐标点过滤掉。然后,我们采用双线性插值运算根据投影后的坐标位置获取对应的图像语义特征,并对所有相机图像收集到的特征取平均值,得到最终的插值采样结果。
特征集成
为了将得到的平面BEV特征与插值采样得到的3D体素特征进行集成,我们首先利用上采样操作将BEV特征的空间尺寸和3D体素特征的空间尺寸进行对齐,并且沿着Z轴方向执行repeat操作,操作后得到的特征我们记作。然后我们将以及图像特征插值采样得到的特征进行Concat并通过一个卷积层进行集成得到最终的体素特征。
上述提到的图像特征插值采样和特征集成过程整体可以用下图进行表示:
图像特征插值采样以及特征集成过程
除此之外,为了进一步确保经过BEV特征提取模块输出的BEV特征包含有足够的特征信息用于完成后续的感知过程,我们采用了一个额外的监督方法,即利用一个语义分割头来首先语义分割任务,并利用Occupancy的真值来构建语义分割的真值标签完成整个的监督过程。
实验结果&评价指标
定量分析部分
首先展示一下我们提出的FastOcc算法在Occ3D-nuScenes数据集上和其他SOTA算法的对比情况,各个算法的具体指标见下表所示
各个算法指标的在Occ3D-nuScenes数据集上的对比
通过表格上的结果可以看出,我们提出的FastOcc算法相比于其他的算法而言,在大多数的类别上都更加的具有优势,同时总的mIoU指标也实现了SOTA的效果。
除此之外,我们也比较了不同的视角转换方式以及栅格预测头当中所使用的解码特征的模块对于感知性能以及推理耗时的影响(实验数据均是基于输入图像分辨率为640×1600,主干网络采用的是ResNet-101网络),相关的实验结果对比如下表所示
不同视角转换以及栅格预测头的精度和推理耗时对比
SurroundOcc算法采用了多尺度的Cross-view Attention视角转换方式以及3D卷积来实现3D体素特征的提取,具有最高的推理耗时。我们将原有的Cross-view Attention视角转换方式换成LSS的转换方式之后,mIoU精度有所提升,同时耗时也得到了降低。在此基础上,通过将原有的3D卷积换成3D FCN结构,可以进一步的增加精度,但是推理耗时也明显增加。最后我们选择采样LSS的坐标转换方式以及2D FCN结构实现检测性能和推理耗时之间的平衡。
此外,我们也验证了我们提出的基于BEV特征的语义分割监督任务以及图像特征插值采样的有效性,具体的消融实验结果见下表所示:
不同模块的消融实验对比情况
此外,我们还做了模型上的scale实验,通过控制主干网络的大小以及输入图像的分辨率,从而构建了一组Occupancy Network感知算法模型(FastOcc、FastOcc-Small、FastOcc-Tiny),具体配置见下表:
不同主干网络和分辨率配置下的模型能力对比
定性分析部分
下图展示了我们提出的FastOcc算法模型与SurroundOcc算法模型的可视化结果对比情况,可以明显的看到,提出的FastOcc算法模型以更加合理的方式填补了周围的环境元素,并且实现了更加准确的行驶车辆以及树木的感知。
FastOcc算法与SurroundOcc算法的可视化结果对比情况
结论
在本文中,针对现有的Occupancy Network算法模型检测耗时长,难以上车部署的问题,我们提出了FastOcc算法模型。通过将原有的处理3D体素的3D卷积模块用2D卷积进行替代,极大缩短了推理耗时,并且和其他算法相比实现了SOTA的感知结果。