动机:针对目前对于不同的视觉任务,采用基于不同视图的方法的问题(基于图像和基于BEV的方法),作者希望提出一个统一的框架处理多任务学习。
在过去的几年里,二维视觉感知技术得到了迅速的发展, 并出现了一些杰出的范例,如Mask R-CNN,它具有高性能、可扩展和多任务兼容的特性。
然而,对于同时要求精度和时间效率的基于视觉的自动驾驶场景,诸如三维目标检测和地图恢复等主要任务在最新的基准测试中仍由不同的范式来完成。
例如在nuScenes基准测试中,基于图像视图的方法,例如FCOS3D和PGD的检测性能在基于多摄像头的3D目标检测任务中,性能保持领先水平。然而在BEV语义分割领域的算法主要是基于BEV的方法 ,类似于PON、Lift-Splat-Shoot, VPN。
在自动驾驶中,究竟上述的哪个视图空间对感知更合理,我们能否在统一的框架中处理这些任务?
针对这些问题,本文提出了BEVDet。通过BEVDet,我们探索了在BEV中检测3D对象的优势,期望与最新的基于图像视图的方法相比,具有更好的性能,并与BEV语义分割范式保持一致。这样可以进一步验证多任务学习的可行性,对高效推理有一定的意义。
Framework: 基于模块化的设计思想,BEVDet的网络框架和基于BEV的语义分割算法框架类似,包括四个部分(Image-view Encoder、View Transformer、BEV Encoder、Task-specific Head)。
BEVDet和目前最新的基于BEV的语义分割算法有着相似的框架。
BEVDet的模型包括四个部分:
图像编码器(Image-view Encoder)
:用来提取图像特征视图转换器(View Transformer)
: 将图像特征映射到鸟瞰图坐标BEV编码器(BEV Encoder)
: 进一步对BEV空间的特征进行编码检测头(Task-specific Head)
: 根据所执行任务设计输出头, 预测3D物体的目标值。得益于这种模块化设计,我们可以重用大量现有的在其他领域已被证明是有效的作品。但要升级这一特定于3D目标检测任务的范式仍有很长的一段路要走。
(1) 改进策略1:为了防止模型的过拟合,在BEV的空间中进行额外的数据增强操作。
虽然构建BEVDet的框架很简单,但构建其健壮的性能却并非易事。在验证BEVDet可行性时,为了获得合理的性能,将BEVDet的数据处理策略和参数个数设置得接近于基于图像视图的三维物体检测器,如FCOS3D和PGD。
但是在训练的过程中,出现了严重的过拟合问题,线索显示导致这样的原因是BEVDet在BEV空间中的过度拟合能力。这促使我们在基于图像的视图空间中应用一个复杂的数据增强策略,例如Lift-Splat-Shoot, 以达到正则化的效果。但是这种更改只在BEV 编码器不存在时有用,否则会降低性能。
另一方面,基于图像视图编码器的批处理大小是子序列模块的N倍。训练数据的不足也是导致在基于BEV空间中学习过拟合的一部分原因。此外,我们观察到视图转换器以像素的方式将图像视图空间与BEV空间连接起来,从数据增强的角度对两者进行解耦。这使得在图像视图中的数据增强对数据没有正则化的影响子序列模块(子序列模块包括BEV Encoder 和 3D object Detection Head)。
因此,作为补充,在BEV空间中进行额外的数据增强操作,如翻转、缩放和旋转,以提高模型在这些方面的鲁棒性。这可以很好地防止BEVDet过拟合。
(2) 改进策略2:对NMS进行升级,以提高在三维场景的适应性。
此外,我们对经典的非极大值抑制策略(NMS)进行了升级,以提高其在三维目标检测场景中的适应性。通过删除按顺序执行的操作符,推理过程进一步加快。
通过这些修改,BEVDet在现有范式的准确性和推理延迟之间提供了一个出色的权衡。在nuScenes 验证集上,高速版本BEVDet-Tiny达到了很高的准确度(mAP值为31.2% ,NDS值为39.2%,图像大小是704256),这仅仅是竞争对手FCOS3D的1/8(29.5% mAP和37.2% NDS,图像大小是1600900)缩小图像大小可以减少89%的计算预算,并提供9.2倍的显著加速(例如,BEVDet具有215.3 GFLOPs和15.6 FPS,而FCOS3D具有2,008.2 GFLOPs和1.7 FPS)。通过构造另一个被称为BEVDet-Base的高精度配置,我们突破了39.3% mAP和47.2% NDS的新纪录。
此外,与现有的范例相比,在BEV空间中显式编码特征使BEVDet能够感知目标的平移、尺度、方向和速度。在消融研究中可以发现BEVDet的更多特征。
基于BEV的语义分割也包含了上文所说的4大部分
如图1所示,模块化设计的BEVDet由四种类型组成一个图像-视图编码器,一个视图转换器,一个BEV编码器和一个任务特定的头。我们通过构建几个模型来研究BEVDet的可行性,具有不同结构的衍生品如表中所列。
图像编码器(Image-view Encoder)
视图转换器(View Transformer)
BEV编码器(BEV Encoder)
检测头(Task-specific Head)
问题:
图像域数据增广
证明:图像空间的数据增广与BEV特征空间是解耦的
设图像像素坐标 P i m a g e = [ x i , y i , 1 ] T P_{image}=[x_i,y_i,1]^T Pimage=[xi,yi,1]T 对应的深度是 d d d, 相机的内参是 I I I (3*3的矩阵),则相应的3D坐标为 P c a m e r a = I − 1 ( p i m a g e ∗ d ) P_{camera}=I^{-1}(p_{image}*d) Pcamera=I−1(pimage∗d).
对于图像领域的数据增广,比如翻转、裁剪、旋转都可以表达为3*3的矩阵 A A A,即 P i m a g e ′ = A P i m a g e P^{'}_{image}=AP_{image} Pimage′=APimage
注意在视图转换时,为了保证图像 pixel 和 3d 空间中对应点的一致性,需要进行逆变换,即
p camera ′ = I − 1 ( A − 1 p image ′ ∗ d ) = I − 1 ( A − 1 A [ x i , y i , 1 ] T ∗ d ) = I − 1 ( [ x i , y i , 1 ] T ∗ d ) = p camera \begin{aligned} \mathbf{p}_{\text {camera }}^{\prime} &=I^{-1}\left(A^{-1} \mathbf{p}_{\text {image }}^{\prime} * d\right) \\ &=I^{-1}\left(A^{-1} A\left[x_i, y_i, 1\right]^T * d\right) \\ &=I^{-1}\left(\left[x_i, y_i, 1\right]^T * d\right) \\ &=\mathbf{p}_{\text {camera }} \end{aligned} pcamera ′=I−1(A−1pimage ′∗d)=I−1(A−1A[xi,yi,1]T∗d)=I−1([xi,yi,1]T∗d)=pcamera
因此对图像进行数据增广操作,不会对BEV特征的空间分布产生影响。
解决方法:
BEV空间数据增广
由于多视图图像在BEV进行了特征融合,BEV编码器的学习数据比图像编码器的学习数据少。翻转、缩放和旋转被应用于BEV特征图的数据增广(同时对视图转换器的输出以及检测目标进行操作以保证空间一致性)。注意该增广方法需要视图转换解耦的条件,因此其余方法可能不适用。
BEV空间中不同类别的空间分布与图像视图空间中的空间分布截然不同。在图像视图空间中,由于相机的透视成像机制,所有类别共享相似的空间分布。因此,对于经典的NMS策略对于不同的类别都采用相同的阈值来来筛选预测结果。(例如在2D目标检测中,任何两个实例的bounding box的IOU值总是低于0.5)
然而,在BEV空间中,各个类的占用面积本质上是不同的,实例之间的重叠应接近于零。因此,预测结果之间的IOU分布因类别而异。
比如行人和锥型交通路标在接地面上占用很小的面积,这总是小于算法的输出分辨率。常见的对象检测范式冗余地生成预测。每个物体的占地面积小,可能使冗余结果与真正结果没有交集。这将使依赖正样本和负样本之间空间关系(IOU)的经典NMS失效。
Scale-NMS在执行经典NMS算法之前,**根据每个对象的类别缩放其大小。**通过这种方式,调整正样例和冗余结果之间的IOU分布,以与经典NMS匹配。缩放因子是特定于类别的。它们是通过对验证集进行超参数搜索生成的。
数据集(dataset)
评价标准(Evaluation Metrics)
使用官方预先定义的评价指标 :
其中此处的map值和在二维目标检测中的通过准确度和查全率计算map值比较类似,但是它的定义是基于2D中心点的距离而不是IOU。
NDS是综合判断检测结果的其他指标的综合能力。其余的指标是用来计算正样本对应的精度
训练参数(Training Parameters)
数据处理(Data Processing)
介绍了数据扩充的相关指标
推理速度(Inference Speed)
在nuScenes验证集上,BEVDet在位置、尺寸、朝向和速度的估计上准确率高,但在属性的估计上相比于基于图像的3D检测准确率较低。这可能是由于属性判断依赖于外观线索,更容易在图像中感知。结合两种视图可能是一个有前途的方法。
在nuScenes测试集上,BEVDet能达到使用激光雷达预训练视觉检测模型的相当性能,且与基于激光雷达的经典3D检测方法PointPillars性能相当。
数据增广:仅使用BEV编码器而不适用任何数据增广的方法(A)性能最差,且很早就开始过拟合。如果仅加上图像数据增广(B),能延缓过拟合出现时间,但未过拟合时的最优性能甚至不如A方法。若仅加上BEV数据增广(C),能更有效地减轻过拟合,且最优性能超过A方法。这说明BEV数据增广比图像数据增广更加有效。同时使用两种数据增广(D)的过拟合时间和性能均最大,且过拟合现象很弱。若上面四种方法(AD)均移除BEV编码器(对应方法EH):D和H比较可得BEV编码器能提高性能;比较E和F可知,图像数据增广仅在无BEV编码器时有正面效果。这表明BEV编码器有强感知能力,仅在BEV数据增广下才能避免过拟合。
尺度NMS:与普通的NMS以及CenterPoint中提出的环形NMS比较,尺度NMS在小物体的检测精度上有很大提升,其余物体也有一定提升。
分辨率:增大输入图像和BEV特征图的分辨率均能带来性能提升,但会带来额外的推断时间。
加速:该加速是基于Lift-Splat-Shoot用图像产生的点云形状是固定的,因此每个点可以预先分配一个体素索引,用于指示其属于哪一个体素。
本文的改进如下图所示,除了点的体素索引,还建立辅助索引,用于统计每个体素索引的出现次数。然后将点分配到2D矩阵上,沿辅助轴求和。
如果推断时相机的内外参不变,每个点的体素索引和辅助索引均是固定的,在初始化阶段即可预先计算;但此方法会带来额外空间需求,且该空间与体素数量和最大辅助索引值有关。本文设定一个辅助索引最大值,辅助索引值超过的点被丢弃,而几乎不会对性能产生影响。
在本文中,我们提出了一种强大的、可扩展的多摄像机三维目标检测范式BEVDet。BEVDet是参照BEVDet 15在解决BEV中语义分割的成功经验构建的,主要是通过构建一个独特的数据增强策略。在大规模基准测试nuSense中,BEVDet显著地突破了性能边界,特别擅长预测目标的平移、规模、方向和速度。未来的工作将集中在(1) 提高BEVDet的性能,特别是目标属性预测。(2)研究基于BEVDet的多任务学习。
BEVDet: High-performance Multi-camera 3D Object Detection in Bird-Eye-View
https://github.com/HuangJunJie2017/BEVDet
自动驾驶感知新范式–BEV感知经典论文总结和对比(上)_苹果姐的博客-CSDN博客_bev视角
BEVDet系列源码解读