论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline

该论文是商汤科技在BEV(Bird’s-Eye View)方面做的一个又快又准的一个baseline,并实现了在车载芯片,GPU,CPU上均可进行部署。并取得了不错的效果。

 论文地址:https://arxiv.org/pdf/2301.12511v1.pdf

代码地址:https://github.com/sense-gvt/fast-bev

一、摘要:

近年来,基于鸟瞰(BEV)表示的感知任务受到越来越多的关注,BEV表示有望成为下一代自动驾驶汽车(AV)感知的基础。然而,大多数现有的BEV解决方案要么需要大量资源来执行车载推理,要么性能不佳。本文提出了一个简单而有效的框架,称为Fast-BEV,能够在车载芯片上执行更快的BEV感知。为了实现这一目标,我们首先经验地发现BEV表示法可以足够强大,不需要昂贵的基于变压器的变换和深度表示法。我们的fast -BEV由五个部分组成,我们新颖地提出(1)一种轻量级部署友好的视图转换,可以快速将2D图像特征转换为3D体素空间,(2)一种多尺度图像编码器,利用多尺度信息获得更好的性能,(3)一种高效的BEV编码器,特别设计用于加速车载推断。我们进一步引入了(4)图像和BEV空间的强数据增强策略,以避免过度拟合,(5)利用时间信息的多帧特征融合机制。其中,(1)和(3)使fast - bev能够在车载芯片上进行快速推断和部署,(2),(4)和(5)确保fast - bev具有竞争力的性能。所有这些使得fast - bev成为一种高性能、快速推理速度和部署在自动驾驶车载芯片上的解决方案。通过实验,在2080Ti平台上,我们的R50模型在nuScenes验证集上可以运行52.6 FPS, NDS为47.3%,超过了BEVDepth-R50模型的41.3 FPS和47.5% NDS,以及BEVDet4DR50模型的30.2 FPS和45.7% NDS。我们最大的模型(R101@900x1600)在nuScenes验证集上建立了一个具有竞争力的53.5% NDS。我们进一步在当前流行的车载芯片上开发了一个相当准确和高效的基准。

二、主要网络模型:

其主要提出了5点重要的改进:

1)轻量级视图转换;

2)多尺度图像编码;

3)高效BEV编码;

4)原始图像增强和BEV空间增强;

5)利用时间信息多帧融合。

其中,fast-bev的快速实现主要基于(1)和(3),高效率转换和编码大大减少了运算时间;而(2),(4)和(5)使用多尺度特征,增强策略以及时序融合改善了性能。下面主要介绍这四个方面。下图为网络框架图:

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第1张图片

 三、五大模块介绍:

1,快速视图转换

          这里作者将其称为:Fast-Ray转换。读过其他类似的bev论文可以发现,从图像空间到体素空间的投影对延迟起主导作用。本文提出了快速射线转换,将多视图2D图像特征沿摄像机射线投射到3D体素,并且有两个操作优化了车载平台的过程。(1)我们预先计算固定的投影索引,并将它们存储为一个静态的查找表,这在推理过程中是非常高效的。(2)我们让所有的摄像头投射到同一个体素上,以避免昂贵的体素聚合(多视图到单体素)。我们的方案不像基于lift - splash - shoot的改进视图转换方案,其离散深度,然后估计深度,即使加上繁琐的CUDA并行计算,速度也不够快,更不用CPU来进行相应的计算过程,在GPU上的耗时可以忽略不计,在CPU上的速度远远领先于其他方案,部署非常方便。

          这里作者遵循假设深度沿射线分布均匀。这样做的好处是,一旦我们得到了相机的内在/外在参数,就可以很容易地知道2d到3d的投影。由于这里没有使用可学习的参数,可以很容易地计算图像特征图中的点与BEV特征图之间的对应矩阵。其在这里使用了查找表(look-up-table)和密集体素生成(Multi-View to One-Voxel)。

         (1) 查找表是建立了bev空间分别与各个视图的对应位置,建立了投影索引。投影索引是二维图像空间到三维体素空间的映射索引。为什么呢?其实在GKT中就有这样的操作。

        原因是:考虑到在构建感知系统时,摄像机位置及其内/外参数是固定的,并且该论文的方法不使用依赖数据的depth predicate和Transformer,因此对于每个输入,各个摄像头的投影指数都是相同的。因此,不需要为每次迭代计算相同的索引,只需预先计算固定的投影索引并存储它。本文建议预先计算固定的投影索引,并将它们存储为静态查找表。在推理过程中,我们可以通过查询查找表来获得投影索引,这是边缘设备上非常便宜的操作。此外,如果我们从单个帧扩展到多个帧,我们也可以轻松地预先计算内在和外在参数,并将它们预先对齐到当前帧。如下表所示,我们通过摄像机参数矩阵投影建立了与输出三维体素空间相同维数的查找表LUT。我们迭代每个体素单元,通过投影计算出3D坐标对应的2D像素坐标。如果获得的二维像素坐标地址合法,我们将其填充到LUT中,以建立一个与数据无关的索引映射。

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第2张图片

        (2)多视图转一体素。由于每个摄像头所照射范围有限,因此如果与bev网格全部做转换会有大大的计算资源浪费,因此结合lut做对应即可。具体来说,让来自所有相机视图的图像特征投射到同一个体素特征上,最终形成一个密集的体素,命名为Multi-View to OneVoxel。如下图所示,是填充密集体素的鸟瞰图。Fast-Ray变换算法如下表所示,该算法将输入的多视图二维图像特征转移到一体素三维空间,其中每个体素单元由预先计算的LUT填充相应的二维图像特征。对于多个视图区域重叠的情况,我们直接采用第一个遇到的视图来提高建表速度。结合查找表和多视图到一体素的加速设计,视图转换操作具有极快的投影速度。

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第3张图片

 2,多尺度图像编码器

       受二维检测任务的启发(比如yolo),多尺度可以带来性能提升。我们利用Fast-Ray变换带来的速度优势,设计了多尺度BEV感知范式,期望从多尺度信息中获得性能收益。在Fast-BEV中,图像编码器通过三层FPN输出结构从统一的单尺度图像输入中获得多尺度图像特征输出。具体如下图。

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第4张图片

 3,高效BEV编码器:

         实验发现,在快速增加耗时的情况下,3D编码器中更多的块和更大的分辨率并不能显著提高模型性能。结合“空间到信道”(space-to - channel, S2C),我们只使用一层多尺度级联融合(MSCF)和多帧级联融合(MFCF)模块作为BEV编码器,减少了剩余结构,大大减少了时间消耗,对精度没有损害。

   这里主要阐述了三个算子:S2C(space-to-channel),MSCP(multi-scale concatenation fusion),以及MFCF(multi-frame concat fusion)。其中S2C是将4维张量:(X,Y,Z,C)转化为三维张量(X,Y,ZC),方便卷积,避免使用3D卷积,加快运算速度。MFCF算子之前,由于通过多尺度投影得到的BEV特征是不同尺度的。因此将首先在X和Y维度上对多尺度BEV特征进行相同大小的采样,例如200 × 200。之后使用mscf和mfcf算子在信道维度上拼接多尺度多帧特征。(详见论文,本人这个地方不太懂,应该是要看源码。)

4,数据增强:

        从经验上观察到,在bev基本框架的训练后期出现了严重的过拟合问题。这是因为在基本框架中没有使用数据增强。在最近工作bevdet等的激励下,我们在图像和BEV空间上都添加了强大的数据增强,如随机翻转,旋转等。数据增强包括图像增强以及bev数据增强。具体如下:

  (1)图像增强。由于三维场景下的图像与三维相机坐标有直接关系,因此三维目标检测中的数据增强比二维目标检测更具挑战性。因此,如果对图像进行数据增强,我们还需要改变相机的固有矩阵。对于增强操作,我们基本上遵循常见的操作,例如翻转、裁剪和旋转。在下图的左边部分,展示了一些图像增强的例子。

  (2)bev增强。与图像增强类似,类似的操作也可以应用于BEV空间,如翻转、缩放和旋转。注意,增强变换应该同时应用于BEV特征图和3D ground-truth box以保持一致性。通过对摄像机外参矩阵进行相应的修改,可以控制BEV的增广变换。在下图的右侧,我们展示了随机旋转增强,一种BEV增强。

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第5张图片

 

5,时间融合:

          在真实的自动驾驶场景中,输入在时间上是连续的,并且在时间上有大量的互补信息。例如,在当前帧被部分遮挡的行人可能在过去的几帧中完全可见。因此,我们通过引入时间特征融合模块,将基本框架从纯空间空间扩展到时空空间。

         受BEVDet4D和BEVFormer的启发,我们还将历史框架引入到当前框架中进行时间特征融合。通过空间对齐操作和拼接操作,将历史帧的特征与当前帧的相应特征进行融合。时间融合可以看作是帧级的特征增强,在一定范围内较长的时间序列可以带来更多的性能提升。

        具体来说,我们用三个历史关键帧对当前帧进行采样;每个关键帧间隔0.5s。我们采用了BEVDet4D的多帧特征对齐方法。如下图所示,在我们得到四个对齐的BEV特征后,我们直接将它们连接起来并馈送到BEV编码器中。在训练阶段,使用图像编码器在线提取历史帧特征。在测试阶段,历史帧特性可以离线保存,直接取出进行加速。

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第6张图片

 

四、损失函数:

      参考PointPillars,我们使用三个并行的1 × 1卷积对BEV特征执行3D检测任务,可以预测每个对象的类别、盒子大小和方向。损失与PointPillars相同:

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第7张图片

 五、效果对比

1,速度:

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第8张图片

 2,效果:

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第9张图片

 论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第10张图片

 

六、消融实验:

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第11张图片

 为了适配不同的设备做了5种不同配置的网络:

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第12张图片

 七、效果:

论文阅读——Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline_第13张图片

八、代码

      还没复现,大家多交流哦 。

你可能感兴趣的:(论文阅读)