当前位置:AIGC资讯 > AIGC > 正文

WidthFormer:实时自动驾驶!助力基于Transformer的BEV方案量产

本文经自动驾驶之心公众号授权转载,转载请联系出处。

写在前面&行业理解

基于BEV的transformer方案今年量产的主要方案,transformer结构和CNN相比,特征提取能力更强,但需要较多的算力,这也是为什么许多车上都是1~2颗orin芯片支持。所以如何轻量化基于Transformer的BEV方案,成为各大自动驾驶公司后面优化的重点,地平线的最新工作,将Transformer+BVE轻量化,保持了性能领先和速度领先。

WidthFormer有哪些优势?

WidthFormer是一种轻量级且易于部署的BEV变换方法,它使用单层transformer解码器来计算BEV表示。除此之外,还提出了参考位置编码(RefPE),这是一种新的用于3D对象检测的位置编码机制,以辅助WidthFormer的视图转换,重点来啦!它还可以用于以即插即用的方式提高稀疏3D检测器的性能。在nuScenes 3D检测数据集上评估了所提出的模块,结果表明RefPE可以显著提高稀疏目标检测器的性能。此外,WidthFormer在一系列3D检测架构中的性能和效率都优于以前的BEV变换方法。

代码:https://github.com/ChenhongyiYang/WidthFormer

WidthFormer在不同的3D检测架构中优于以前的方法。当使用256×704输入图像时,它在NVIDIA 3090 GPU和地平线J5芯片上实现了1.5毫秒和2.8毫秒的延迟。此外,WidthFormer对不同程度的相机扰动也表现出较强的鲁棒性。这个研究为在现实世界复杂的道路环境中部署BEV transformation方法提供了宝贵的见解。

基于BEV变换的方法一览

直观的基于IPM的方法通过3D-2D投影和插值计算BEV特征。其中的一个问题是,当平坦地面假设不成立时,BEV特征的质量将受到严重损害。在基于Lift Splat的方法中,BEV特征是通过垂直汇集投影的点云特征,并根据其预测深度进行加权来计算的。尽管Lift splat工艺具有高性能,但其效率远远不够。BEVFusion通过多线程机制加速了这个池化过程!

M2BEV通过假设均匀的深度分布来节省存储器使用。MatrixVT通过在垂直维度上压缩视觉特征来提高整体效率,然后使用有效的极坐标变换来计算BEV特征。BEVDepth结合了点云,用于改进深度估计。基于transformer的VT方法通过注意力机制直接输出BEV表示。PYVA使用交叉注意力来学习BEV特征,并使模型具有周期一致性。CVT和PETR依赖于3D位置编码来向模型提供3D几何信息。为了提高效率,最近的许多方法采用了可变形注意力。

网络结构

如图3所示,WidthFormer将多视图图像作为输入,并输出转换后的BEV特征。它首先通过合并图像的高度维度将图像特征压缩为宽度特征。然后使用RefineTransformer对宽度特征进行细化,以补偿潜在的信息损失。在添加了参考位置编码后,宽度特征被输入到转换器解码器中,用作key和value,这些key和value由根据预定义的BEV极坐标计算的BEV查询向量进行查询!

1)参考位置编码 (RefPE)

作者为基于transformer的3D检测器(例如,PETR)和本文的BEV视图变换模块设计了一种新的3D位置编码机制:参考位置编码(RefPE)。RefPE有一个旋转部分和一个距离部分。对于稀疏的3D检测器,它有另一个高度部分。旋转编码简单地通过对BEV平面上的相机射线的旋转度进行编码来计算。如(a)所示,为了计算逐点距离PE和高度PE,利用从视觉特征预测的参考系数来聚合相机射线上参考点的距离和高度PE。如(b)所示,对于宽度特征,去除高度PE,并通过使用预测的高度分布沿着图像列聚合所有逐点距离PE来计算它们的距离PE。

2) 使用WidthForme完成BEV Transformation

WidthFormer将多视图图像作为输入,并输出转换后的BEV特征。它首先通过合并图像的高度维度将图像特征压缩为宽度特征。然后使用RefineTransformer对宽度特征进行细化,以补偿潜在的信息损失。在添加了我们的参考位置编码后,宽度特征被输入到转换器解码器中,用作关键字和值,这些关键字和值由根据预定义的BEV极坐标计算的BEV查询向量进行查询。在所提出的RefPE的支持下,设计了一种新的基于transformer的BEV视图转换模块WidthFormer。形式上,WidthFormer的输入是多视图图像特征,输出是统一的BEV表示,WidthFormer的概述如图3所示!

3)细化Width特征

虽然将二维特征压缩为一维特征可以极大地提高模型的效率和可扩展性,但是不可避免的引入了信息丢失,那么有什么方法可以补偿这个丢失的信息呢?

Refine transformer。Refine Transformer是一种轻量级的transformer解码器。它通过关注其他宽度特征和原始图像特征并从中检索信息来细化初始宽度特征。如图3所示,通过MaxPooling图像特征的高度维度来计算初始宽度特征。在Refine Transformer中,宽度特征首先通过自注意操作从其他宽度特征中检索信息;然后它从相应的 使用交叉注意力操作的图像列。最后,使用前馈网络来计算最终的宽度特征。

补充任务。为了进一步提高宽度特征的表示能力,在训练过程中,用互补任务训练模型,将任务相关信息直接注入宽度特征,这是由BEVFormer v2推动的。如图3(a)所示,互补任务包括单目3D检测任务和高度预测任务。为这两个任务附加了一个FCOS3D样式的Head。头部采用1D宽度特征作为输入,并以单目方式检测3D目标。为了使其能够以1D宽度特征作为输入,进行了两个修改:(1)将所有2D卷积操作更改为1D卷积;(2) 在标签编码过程中,忽略了高度范围,只限制了宽度范围。为了使互补任务与WidthFormer保持一致,将原来的回归深度估计改为分类风格。对于高度预测,在FCOS3D头部添加了一个额外的分支,以预测目标在原始图像特征中的高度位置,这可以补充高度pooling中丢失的信息。注意,负责补充任务在模型推理过程中可以完全去除,不会影响推理效率。此外,训练辅助头只消耗<10M的额外GPU内存,因此对训练效率的影响最小!

实验结果对比

在常用的nuScenes数据集上对提出的方法进行了基准测试,该数据集分为700、150和150个场景(分别用于训练、验证和测试)。每个场景包含6个视图的图像,这些图像覆盖了整个周围环境。这里遵循官方评估协议,对3D检测任务,除了常用的平均精度(mAP)之外,评估度量还包括nuScenes(TP)误差,其包括平均平移误差(mATE)、平均尺度误差(mASE)、平均方向误差(mAOE)、平均速度误差(mAVE)和平均属性误差(mAAE),除此之外还有nuScenes检测分数(NDS)!

这里使用两种3D检测架构:BEVDet和BEVDet4D来测试提出的WidthFormer,其涵盖单帧和多帧设置。采用了BEVDet代码库中所有三个检测器的实现方式。除非另有规定,否则使用BEVDet的默认数据预处理和扩充设置。将BEV特征大小设置为128×128,将BEV通道大小设置为64。对于BEVDet4D和BEVDepth4D实验,遵循仅使用一个历史帧的原始BEVDet4D实现。所有模型都使用CBGS进行了24个epoch的训练,ImageNet预训练的ResNet-50用作默认骨干网络。所有训练和CUDA延迟测量均使用NVIDIA 3090 GPU进行。

使用PETR-DN和StreamPETR检测器的不同位置编码方法的比较。ResNet-50-DCN用作默认主干网。输入大小对于PETR-DN设置为512×1408,对于StreamPETR设置为256×704。所有模型都在没有CBGS的情况下训练了24个epoch。

使用BEVDet和BEVDet4D检测器的不同BEV视图转换方法的比较。ResNet-50被用作默认的骨干网络。输入大小设置为256×704。所有模型都使用CBGS进行了划时代训练。

在不同尺寸设置下使用BEVDet的不同VT方法的CUDA延迟和mAP权衡比较:

放大检测结果,并与nuScenes val-set上其他最先进的3D检测器进行比较。‘MF’代表多帧融合,’C'代表相机;'L'代表LIDAR!

原文链接:https://mp.weixin.qq.com/s/avoZwvY7H6kKk_4NlbTyjg

更新时间 2024-01-19