本文提出了一种简单但有效的框架,称为Fast-BEV,它能够在车载芯片上进行更快的BEV感知。
Fast-BEV框架包括五个部分:
(1) 一个轻量级且易于部署的视图变换方法,能够快速将2D图像特征转化为3D体素空间;
(2) 一个多尺度图像编码器,利用多尺度信息以提升性能;
(3) 一个高效的BEV编码器,特别设计用于加速车载推理。
(4) 一种针对图像和BEV空间的强数据增强策略,以避免过拟合;
(5) 一种多帧特征融合机制,以利用时间信息。
在这些方法中,(1) 和(3) 使得Fast-BEV在车载芯片上具有快速推理和易于部署的特点,而(2)、(4) 和(5) 确保了Fast-BEV的竞争性性能。
作者认为基于query的变换和基于隐式或显式的depth变换在车载芯片上难以部署,并且推理速度较慢:
-
基于查询的变换方法如图1(a)所示。由于解码器需要在transformer中使用注意力机制进行计算,实际部署的芯片需要能够支持注意力操作(涉及矩阵乘法和多层感知机(MLP)层),因此这些方法通常需要专用芯片来支持。
-
基于深度的变换方法如图1(b)所示。这些方法通常需要加速不友好的体素池化操作,甚至多线程CUDA核心也可能不是最佳解决方案。此外,这在资源受限或不支持CUDA加速推理库的芯片上运行不方便。此外,它们在推理时耗时较长,这阻碍了它们的实际部署
本文提出的方法如图C所示,遵循M2BEV的原则——该方法假设在图像到BEV(2D到3D)的视图变换过程中,沿摄像头射线的深度分布是均匀的——作者提出了Fast-Ray变换,如图1(c)所示。借助查找表(Look-Up-Table)和多视图到单体素的操作,Fast-Ray变换将BEV变换的速度提升到了一个新的水平。
基于Fast-Ray变换,我们进一步提出了Fast-BEV,这是一种更快且更强大的全卷积BEV感知框架。所提出的Fast-BEV由五个部分组成:Fast-Ray变换、多尺度图像编码器、高效BEV编码器、数据增强和时间融合。这些部分共同构成了一个框架,使Fast-BEV具有快速的推理速度和竞争力的性能。
具体来说:
-
Fast-Ray变换:我们创新性地提出了Fast-Ray变换,这是一种轻量级且易于部署的视图变换方法,用于快速推理。它通过沿摄像机射线将多视图二维图像特征投影到三维体素来获得BEV表示。此外,我们还提出了两种操作:查找表(Look-Up-Table)和多视图到单体素(Multi-View to One-Voxel)操作,以优化车载平台的处理过程。
-
多尺度图像编码器:现有方法中的视图变换非常耗时,多尺度投影操作会有较大的时间开销,因此在实际中难以使用。基于Fast-Ray变换,我们的2D到3D投影速度极快,使得多尺度投影操作的多尺度图像编码器成为可能。具体来说,与大多数现有方法使用单一尺度特征作为图像编码器输出不同,我们在图像编码器输出部分使用了一个三层的多尺度特征金字塔网络(FPN)结构,并在其后进行了相应的三层多尺度投影操作。
-
BEV编码器:对于BEV编码器,我们使用了非常少的基本残差网络作为基础BEV编码器。在此基础上,使用了三种降维操作来加速编码器,分别是“空间到通道”(S2C)、多尺度拼接融合(MSCF)和多帧拼接融合(MFCF)。
-
数据增强策略:我们进一步引入了强大的数据增强策略, 例如翻转、旋转、缩放等,适用于图像和BEV空间。这种在图像空间和BEV空间分别进行的数据增强策略不仅避免了过拟合,还取得了更好的性能。
-
时间融合:我们进一步引入了时间融合,通过引入时间特征融合模块,将Fast-BEV从仅空间的处理扩展到时空处理,使当前关键帧能够利用历史帧的信息。
下面将会对上述内容做详细解释!!!
本文主要评估指标为FPS、NDS
NDS指的是NuScenes Detection Score,即NuScenes检测评分。这是一个综合评价自动驾驶感知算法性能的指标,特别用于评估三维目标检测任务。NDS结合了多种评估指标,包括平均精度(mAP)、位置误差、尺寸误差、方向误差、速度误差和属性误差等,以提供一个综合的性能得分。具体来说,NDS通过对这些单项指标进行加权平均计算,反映了算法在不同方面的整体表现。较高的NDS意味着算法在各个评估指标上都表现良好。
基于摄像头的周围3D物体检测:
在基于摄像头的3D物体检测中,新提出的多视图变换技术将任务重新定义为立体匹配问题,其中周围图像特征被转换为立体表示,如鸟瞰图(BEV)或3D体素。以下是一些相关的方法:
-
LSS:通过在预测的深度分布上投影像素级特征生成相机截锥体(frustums),然后将这些截锥体转换为BEV网格。
-
OFT:通过将预定义的体素投影到图像特征上来生成体素表示。
-
BEVDet:将LSS应用于全卷积方法,首先验证了显式BEV的性能。
-
M2BEV:遵循OFT的视图变换路线,不预测深度信息,并在此基础上探索BEV多任务感知。
-
BEVDepth:在LSS的基础上进一步扩展,引入了稳健的深度监督和高效的池化操作。
-
DETR3D和Graph-DETR3D:使用网格形状的BEV查询,将每个BEV查询解码为3D参考点,从图像中采样相关的2D特征进行细化。
-
BEVFormer:在2D到3D的变换中引入空间交叉注意力,使每个查询能够在摄像头视图之间聚合相关的2D特征。
-
PETR:提出了3D坐标生成来感知3D位置感知特征,避免生成3D参考点。
基于摄像头的多视图时间融合:
基于摄像头的方法尝试在检测过程中引入多帧融合,BEV作为一种中间特征,同时结合了来自多个摄像头的视觉信息,非常适合进行时间对齐。以下是一些相关的方法:
-
BEVDet4D:扩展了BEVDet,通过对齐多帧特征并利用自车运动中的空间相关性来改进检测。
-
PETRv2:直接在3D空间中实现时间对齐,基于3D位置嵌入的视角。
-
BEVFormer:设计了一个时间自注意力机制,用于递归地融合历史BEV信息,类似于RNN模型中的隐藏状态。
Fast-Ray视图变换
在介绍Fast-Ray之前,我们先回顾一下LSS和Transformer这两种方案的特点
基于查询的方法通过Transformer中的注意力机制获得3D BEV特征。这个过程可以表示为公式1:
其中:
在一些计算平台上,Transformer架构的注意力操作存在部署挑战,这阻碍了这些方法的实际应用。
基于深度的方法通过计算2D特征与预测深度的外积来获得3D BEV特征。具体过程如下公式2所示:
这些方法在支持CUDA多线程的GPU平台上可以显著提高推理速度,但在较大分辨率和特征维度下会遇到计算速度瓶颈,并且在没有推理库支持的非GPU平台上迁移起来并不友好。
Fast-BEV
M2BEV是首批解决多摄像头多任务感知并使用统一BEV表示的研究之一,由于其不依赖于昂贵的视图变换器或深度表示,具有很大的应用潜力,特别是在车载平台上。M2BEV的输入为多摄像头RGB图像,输出为预测的3D边界框和地图分割结果。它包括以下几个部分:
- 2D图像编码器:从多摄像头图像中提取图像特征;
- 图像到BEV(2D→3D)视图变换模块:将2D图像特征映射到3D BEV空间;
- 3D BEV编码器:处理3D特征;
- 任务特定头部:执行感知任务,如3D目标检测和地图分割。
详细内容:M2BEV-CSDN博客
受到其简洁性的启发,我们提出了Fast-BEV,在速度和性能方面都表现出色。如图2所示,Fast-BEV以多摄像头图像为输入,预测包括速度在内的3D边界框作为输出。其主要框架可以分为五个关键模块:
Fast-Ray Transformation
视图转换是将特征从2D图像空间转换到3D鸟瞰图(BEV)空间的关键组件,通常在整个流水线中消耗大量时间。
首先假设深度分布沿光线方向是均匀的。
这种假设的优点是,一旦获得了相机的内参和外参,我们就可以轻松地确定2D到3D的投影关系。由于这里不需要使用可学习参数,我们可以轻松计算图像特征图中的点和BEV特征图之间的对应关系矩阵。
基于这一假设,我们从两个方面进一步加速这一过程:
-
预计算投影索引(查找表):通过预先计算从2D图像空间到3D BEV空间的投影索引,在实际运行时快速查找对应关系,避免重复计算。
-
生成密集体素特征(多视图到单体素):通过将所有相机视图的图像特征投影到同一个体素特征上,形成一个密集的体素结构,减少了在不同视图间进行稀疏体素特征聚合的开销。
查找表(Look-Up-Table)
查找表中的投影索引是从2D图像空间到3D体素空间的映射索引。由于在感知系统构建时,相机的位置及其内参和外参是固定的,并且我们的方法不依赖于数据相关的深度预测或变换器,因此投影索引对于每一个输入都是相同的。这样一来,我们就不需要在每次迭代中都计算相同的索引,而是可以预先计算并存储固定的投影索引。
我们提出预先计算固定的投影索引,并将其存储为静态查找表(Look-Up-Table)。在推理过程中,我们可以通过查询查找表来获得投影索引,这在边缘设备上是一种非常低成本的操作。此外,如果我们从单帧扩展到多帧,我们也可以轻松地预先计算内参和外参,并将其预先对齐到当前帧。
如算法1所示,我们通过相机参数矩阵投影构建与输出3D体素空间具有相同维度的查找表LUT。我们遍历每个体素单元,并通过投影计算与3D坐标相对应的2D像素坐标。如果获得的2D像素坐标地址合法,我们将它们填充到LUT中,以建立一个与数据无关的索引映射。
多视图到单体素
基础的视图转换使用了简单的体素聚合操作,这种操作为每个摄像机视角存储一个离散的体素特征,然后聚合它们生成最终的体素特征。如图 3(a) 所示,这是每个离散体素填充的鸟瞰图。由于每个摄像机的视角有限,每个体素特征非常稀疏,例如,只有大约 17% 的位置是非零的。我们发现,这些体素特征的聚合非常昂贵,因为它们的尺寸巨大。
也就是之前MBEV所使用的方法,每个图像去分别生成体素特征,然后再去融合,融合过程消耗时间很大,而作者提出的方法利用LUT去直接将不同view的特征融合到统一体素空间,节省了时间成本
我们提出了生成一个密集体素特征的方法,以避免昂贵的体素聚合。具体来说,我们让所有摄像机视角的图像特征投影到相同的体素特征上,最终生成一个密集的体素,这种方法被称为多视图到单体素。如图 3(b) 所示,这是密集体素填充的鸟瞰图。
Fast-Ray 转换算法(如算法 2 所示)将输入的多视图 2D 图像特征转换为单体素 3D 空间,其中每个体素单元由预先计算的查找表(LUT)填充对应的 2D 图像特征。对于多视图重叠区域的情况,我们直接采用第一个遇到的视角来加快查找表的构建速度。结合查找表和多视图到单体素的加速设计,视图转换操作具有极快的投影速度。
Multi-Scale Image Encoder
Efficient BEV Encoder
S2C操作,降低维度,多尺度拼接融合(MSCF)操作和多帧拼接融合(MFCF)操作
值得注意的是,在使用MFCF操作符之前,通过多尺度投影获得的BEV特征在不同的尺度上。我们首先将多尺度BEV特征在X和Y维度上采样到相同的大小,比如200×200。
MSCF和MFCF操作符在通道维度上拼接多尺度、多帧的特征,并将它们从高参数量融合为低参数量:
此外,通过实验发现,BEV编码器的块数和3D体素分辨率的大小对性能的影响相对较小,但会占用大量计算时间,因此更少的块数和较小的体素分辨率也更加重要。
Data Augmentation
文章使用了常见的数据增强方法,在2D图像和BEV中,用于增强模型的泛化性:
图像增强
在3D物体检测中,数据增强比2D检测更具挑战性,因为3D场景中的图像与3D相机坐标有直接关系。因此,如果我们对图像进行数据增强,也需要更改相机内参矩阵 。在增强操作上,我们基本上遵循常见操作,例如翻转、裁剪和旋转。在图5的左侧部分,我们展示了一些图像增强的例子。
BEV增强
与图像增强类似,可以对BEV空间应用类似的操作,例如翻转、缩放和旋转。需要注意的是,增强变换应该同时应用于BEV特征图和3D真值框,以保持一致性。BEV增强变换可以通过相应地修改相机外参矩阵来控制。在图5的右侧部分,我们展示了一种BEV增强类型——随机旋转增强。
Temporal Fusion
受到BEVDet4D 和 BEVFormer的启发,我们也将历史帧引入当前帧以进行时序特征融合。历史帧的特征通过空间对齐操作和连接操作与当前帧的相应特征进行融合。时序融合可以被视为帧级别的特征增强,在一定范围内使用更长的时间序列可以带来更好的性能提升。
具体来说,我们对当前帧进行采样,选择三个历史关键帧,每个关键帧之间有0.5秒的间隔。我们采用了BEVDet4D中的多帧特征对齐方法。正如图6所示,在获取到四个对齐的BEV特征后,我们直接将它们进行连接并输入到BEV编码器中。
BEVDet4D:多帧时序信息融合方法详解-CSDN博客
在训练阶段,历史帧特征是使用图像编码器在线提取的。在测试阶段,历史帧特征可以离线保存,并直接取出以加速计算。
通过将历史帧的特征与当前帧的特征进行时序融合,我们能够有效利用之前的时序信息,提高3D检测模型的准确性和鲁棒性。
Detection Head
给定损失函数公式为:
权重系数
是用于平衡不同损失项的权重系数,这些系数在训练中可以调节,以平衡各个损失项的影响。