0. 简介

相信最近大家已经被Transformer给洗脑了,作者也在《多传感器融合综述—-FOV与BEV》中提到了深度学习相关的技术。这就随之带动的就是如何使用基于纯相机的鸟瞰图(BEV)感知技术来替代昂贵的激光雷达传感器,并使其能够应用在自动驾驶上,这目前是急需解决的问题,由于现在Transformer的计算仍然需要大量资源来执行车载推理,无法满足实时性。为此我们来看一下这一篇《Fast-BEV: Towards Real-time On-vehicle Bird’s-Eye View Perception》文章,文中发现发现BEV表示可以在不使用昂贵的视图变换或深度表示的情况下就可以拥有较好的性能,文中将M^2BEV 作为Baseline,然后进一步引入(1)用于图像和BEV空间的强大数据增强策略以避免过度拟合(2)多帧特征融合机制以利用时间信息(3)优化的部署友好视图变换以加速推理。文中提到M1 模型(R18@256 × 704)在 Tesla T4 平台上可以以 50 FPS 的速度运行。代码也已经在Github上开源了。

1. 主要贡献

精确的3D感知系统对自动驾驶来说是至关重要的。而使用纯视觉的BEV方法能够替代传统昂贵的激光雷达。本文基于M^2BEV思想,文中认为图像到BEV视图变换过程中,沿着相机光线的深度分布是均匀的。并提出了更强、更快的全卷积BEV感知框架,无需使用昂贵的视图变换器或深度表示。主要贡献如下:

  • 我们在M^2BEV上验证了两种技术的有效性:强数据增强和多帧时间融合,使Fast-BEV达到最先进的性能。

  • 我们提出了两种加速设计:预先计算投影索引并将其投影到相同的体素特征,使Fast-BEV可以在车载芯片上轻松部署,并具有快速的推理速度。

  • 本文所提出的Fast-BEV是针对实时车载BEV感知的首个部署导向工作。希望我们的工作能够对工业级、实时、车载BEV感知提供启示。

2. 详细内容

下图是整个框架的示意图,我们可以看到其模型框架基本是依据M^2BEV完成的,但是本文针对M^2BEV的问题进行了改进,下面我们详细来看一下

图1:Fast-BEV是基于M^2BEV的改进,首先加入了1强大的数据增强,以避免过拟合,并且2加入了多帧特征融合机制,以利用时间信息,从而实现最先进的性能。此外,我们还提出优化3视图变换,以使其更适合车载平台的部署。

2.1 重新回顾$$M^2BEV$$

M^2BEV是解决多相机多任务感知的统一BEV表示的首批工作之一。它也更适用于车载平台,因为它不需要昂贵的视图变换器或深度表示。如下图顶部所示,M^2BEV的输入是多相机RGB图像,输出是预测的3D边界框(包括速度)和地图分割结果。M^2BEV有四个关键模块:(1)2D图像编码器,主要提取多相机图像的图像特征;(2)图像到BEV(2D→3D)视图变换模块,用于将2D图像特征映射到3D BEV空间;(3)3D BEV编码器,用于处理3D特征;(4)任务特定的头部执行感知任务,例如3D检测。

图2:Fast-BEV 概述。与 M^2BEV 相同,多摄像机图像首先输入图像编码器以提取图像特征。然后,通过视图变换将图像特征转换为 BEV 空间。随后是 BEV 编码器和任务特定的头部,以执行感知任务。所提出的 Fast-BEV 进一步应用了 :1、图像和 BEV 域的数据增强,2、M^2BEV的时间多帧融合。我们进一步建议预先计算图像到体素的索引,并让所有摄像机投影到相同的密集体素,以使 3、视图变换模型部署友好。

2.2 Fast-BEV的整体框架

虽然M^2BEV可以取得有竞争力的结果,但我们发现它的性能和效率可以进一步提高。如上图的下面部分所示,我们在M^2BEV中整合了三种技术,从而形成了我们更强大更快的Fast-BEV。

  1. 数据增强。我们凭经验发现,在$$M^2BEV$$的后期训练中有严重的过拟合问题。这是因为原始$$M^2BEV$$中没有使用数据增强。受到最近的工作[18,37]的启发,我们在图像和BEV空间上增加强烈的3D增强,例如随机翻转,旋转等。详情请参阅第3.3节。
  2. 时间融合。在实际的自主驾驶场景中,输入是时间连续的,具有巨大的互补信息。例如,在当前帧中部分被遮挡的一个行人可能在过去的几帧中完全可见。因此,我们通过引入时间特征融合模块,将$$M^2BEV$$从仅空间空间扩展到空间-时间空间,类似于[31,20]。更具体来说就是,我们使用当前帧BEV特征和存储的历史帧特征作为输入,以端对端的方式训练Fast-BEV。更多细节详见第3.4节。
  3. 优化视图转换:我们发现从图像空间到体素空间的投影对延迟起着主导作用。我们提出了从两个角度优化投影:(1) 我们预先计算固定的投影索引并将其存储为静态查询表,这在推理期间非常高效。(2) 我们让所有摄像机投影到同一个体素,以避免昂贵的体素聚合。我们的方法不基于 Lift-Splat-Shoot 的改进视图转换方案[37,18,1],因为它不需要使用复杂且困难的DSP/GPU并行计算,而是足够快的仅使用CPU计算,非常方便部署。更多细节请参见第3.5节。

我们想澄清的是,1和2受到了文章[31,20]的启发,我们不打算将这两部分视为新颖的设计。这些改进使我们提出的流水线,Fast-BEV,成为一种 SOTA 方法,同时保持其在车载平台上的简单性。

2.3 数据增强

我们在图像空间和 BEV 空间中添加了数据增强,主要参考了 BEVDet [18]。

图像增强:3D 物体检测中的数据增强比 2D 检测更具挑战性,因为 3D 场景中的图像与 3D 相机坐标有直接关系。因此,如果我们在图像上应用数据增强,则需要更改相机内参矩阵 [18]。对于增强操作,我们基本遵循通用操作,例如翻转、裁剪和旋转。在 Fig. 3 的左部分,我们展示了一些图像增强的例子。

BEV 增强。与图像增强类似,可以对 BEV 空间应用类似的操作,例如翻转、缩放和旋转。请注意,增强变换应该同时应用于 BEV 特征图和3D 地面实际框,以保持一致性。可以通过相应地修改相机外向矩阵来控制 BEV 增强变换。图3的右部展示了随机旋转增强,是 BEV 增强的一种类型。

图3:Fast-BEV中使用的数据增强的示例。中间的图显示的是不使用数据增强的原始M^2BEV。左边的图显示了图像增强以及一些增强类型,例如随机翻转、裁剪和旋转。右边的图显示了BEV增强的一种类型,即随机旋转。

2.4 多帧特征融合

基于BEVDet4D [31] 和BEV-Former [20] 的启发,我们也将历史帧引入当前帧进行时间特征融合。我们在这里使用三个历史关键帧对当前帧进行采样,每个关键帧间隔0.5秒。我们采用了BEVDet4D的多帧特征对齐方法。如图4所示,在得到四个对齐的BEV特征后,我们直接将它们连接在一起并将其输入3D编码器。在训练阶段,使用图像编码器在线提取历史帧特征。在测试阶段,可以将历史帧特征保存在离线并直接提取以加速。

与BEVDet4D和BEVFormer相比,BEVDet4D仅引入了一个历史帧,我们认为这不足以利用历史信息。Fast-BEV使用了三个历史帧,导致显著的性能改进。BEVFormer通过使用两个历史帧略胜于BEVDet4D。然而,由于内存问题,在训练阶段,历史特征是不带梯度地分离出来的,这不是最佳的。此外,BEVFormer使用RNN风格进行序列融合,效率低下。相比之下,Fast-BEV中的所有帧都是以端到端的方式训练的,对于常用的GPU更友好。

图4:说明了时间多帧特征融合模块。三个历史帧先提取特征,并投影到相应的 BEV 空间,然后使用相机外向和全局坐标对齐当前帧。最后,我们在通道维度直接连接这些多帧 BEV 特征。

2.5 优化视图变换

View Transformation是将2D图像空间特征转换为3D BEV空间特征的关键组件,在整个pipeline中通常需要花费大量时间。Lift-Splat-Shoot [16]是视图转换的经典方法。尽管已经针对高级GPU设备(例如,NVIDIA Tesla A100,V100)提出了一些加速技术[37, 18, 1],但该优化不能轻松转移到其他设备,比如边缘芯片。另一种视图转换类别是M^2BEV [19],它假设沿着光线的深度分布是均匀的。优点是,一旦我们得到了相机的内部/外部参数,我们就可以很容易地知道2D到3D投影。由于这里没有使用可学习的参数,我们可以很容易地计算2D特征图上的点与BEV特征图之间的对应矩阵。我们遵循M^2BEV的投影方法,并从两个方面进一步加速它:预先计算投影索引和密集体素特征生成。

投影索引是从2D图像空间到3D体素空间的映射索引。因为我们的方法不依赖于数据相关的深度预测或变换器,所以投影索引对于每个输入都是相同的。因此,我们可以预先计算固定的投影索引并存储它。在推理阶段,我们可以通过查询查询表获得投影索引,这在边缘设备上是非常“便宜”的操作。此外,如果我们从单帧扩展到多帧,我们也可以轻松预先计算内在和外在参数并将其预先对齐到当前帧。

M^2BEV 会为每个相机视图存储一个体素特征,然后将它们聚合以生成最终的体素特征(请参见图5)。由于每个相机的视角有限,因此每个体素特征非常稀疏,例如,仅有约17%的位置是非零。我们发现,由于体素特征的巨大大小,这些体素特征的聚合非常昂贵。我们建议生成一个密集的体素特征以避免昂贵的体素聚合。具体而言,我们让来自所有相机视图的图像特征投影到相同的体素特征,从而在最后得到一个密集的体素。在表1中,我们对四种不同方法的视图转换延迟进行了分析。我们发现
(1)BEVDepth [37]在GPU上实现了最低的延迟,但它需要专用的并行计算支持,使其不适用于CPU。
(2)与M^2BEV相比,所提出的Fast-BEV在CPU上实现了数量级的加速。

)

图5:(a)在M2BEV基线中,每个相机有一个稀疏体素(仅有约17%的位置是非零的)。需要一个昂贵的聚合操作来结合稀疏体素。 (b)所提出的Fast-BEV让所有相机投影到一个密集体素,避免了昂贵的体素聚合。

3. 参考链接

https://blog.csdn.net/CV_Autobot/article/details/128755022