BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers
BEVFormer:利用时空变换从多相机图像中学习鸟瞰表示
研究团队:南京大学、上海AI实验室、香港大学
代码地址:https://github.com/zhiqi-li/BEVFormer
一、研究背景
-
三维空间感知对于自动驾驶、机器人等各种应用至关重要。尽管基于LiDAR的方法取得了显著进展,但基于相机的方法近年来引起了广泛关注。除了部署成本低外,与基于LiDAR的相机相比,相机在探测远距离物体和识别基于视觉的道路要素(例如交通信号灯、停车线等)方面具有理想的优势。
-
自动驾驶中对周围场景的视觉感知有望从多个摄像头给出的2D线索中预测3D边界框或语义地图。最直接的解决方案是基于单目框架和跨摄像头后处理。该框架的缺点是单独处理不同的视图,无法跨摄像头捕获信息,导致较低的性能和效率。
-
作为单目框架的替代,一个更加统一的框架是从多相机图像中提取整体表示。鸟瞰图( BEV )清晰地呈现了物体的位置和尺度,适用于各种自动驾驶任务,如感知和规划,是一种常用的周围场景表示方法。
-
虽然以往的地图分割方法证明了BEV的有效性,但是基于BEV的方法在三维目标检测上并没有表现出比其他范式显著的优势。其根本原因是3D目标检测任务需要较强的BEV特征来支持准确的3D边界框预测,而从2D平面生成BEV是不适定的。目前流行的BEV框架基于深度信息生成BEV特征,但该范式对深度值的准确性或深度分布敏感。因此,基于BEV的方法的检测性能会受到复合误差的影响,不准确的BEV特征会严重影响最终的性能。
二、研究思路
-
因此,本文旨在设计一种不依赖深度信息且能自适应学习BEV特征的BEV生成方法,而不是严格依赖3D先验。Transformer利用注意力机制动态聚合有价值的特征,从概念上满足了需求。
-
使用BEV特征执行感知任务的另一个动机是BEV是连接时间和空间的理想桥梁。对于人类视觉感知系统而言,时间信息在推断物体运动状态和识别被遮挡物体方面起着至关重要的作用,视觉领域的许多工作已经证明了使用视频数据的有效性。
-
然而,现有的先进多相机三维检测方法很少利用**时间信息。**显著的挑战是,自动驾驶是时间关键的,场景中的物体变化迅速,因此简单地堆叠跨时间戳的BEV特征会带来额外的计算成本和干扰信息,这可能并不理想。受循环神经网络( Recurrent Neural Networks,RNNs )的启发,本文利用BEV特征循环地传递从过去到现在的时间信息,这与RNN模型的隐藏状态具有相同的思路。
-
为此本文提出了一种基于transformer的鸟瞰( BEV )编码器,称为BEVFormer,它可以有效地聚合来自多视角相机的时空特征和历史BEV特征。由BEVFormer生成的BEV特征可以同时支持3D目标检测和地图分割等多个3D感知任务,对于自动驾驶系统具有重要价值。如图1所示,BEVFormer包含三个关键设计,分别是( 1 )网格状的BEV查询,通过注意力机制灵活地融合空间和时间特征;( 2 )空间交叉注意力模块,从多相机图像中聚合空间特征;( 3 )时间自注意力模块,从历史BEV特征中提取时间信息,这有利于运动物体的速度估计和严重遮挡物体的检测,同时带来可忽略的计算开销。利用BEVFormer生成的统一特征,该模型可以与Deformable DETR、掩码解码器等不同任务特定的头协作,进行端到端的三维目标检测和地图分割。
- 图1:自动驾驶范式BEVFormer
三、主要贡献
-
提出了BEVFormer,一个时空transformer编码器,它将多相机和/或时间戳输入到BEV表示中。利用统一的BEV特征,模型可以同时支持多个自动驾驶感知任务,包括3D检测和地图分割。
-
设计了可学习的BEV查询以及空间交叉注意力层和时间自注意力层,分别从跨摄像头中查找空间特征和从历史BEV中查找时间特征,然后将它们聚合为统一的BEV特征。
-
为了聚合空间信息,设计了空间交叉注意力,每个BEV查询从相机视图中提取感兴趣区域的空间特征。
-
对于时间信息,提出时间自注意力来循环融合历史BEV信息。
-
-
在多个具有挑战性的基准测试集上评估了所提出的BEVFormer,包括nuScenes和Waymo。
四、研究内容
1.总体架构
如图2所示,BEVFormer有6个编码器层,每个编码器层都遵循传统的transformer结构,除了三个定制的设计,即BEV查询、空间交叉注意力和时间自注意力。
-
BEV查询是一种网格状的可学习参数,旨在通过注意力机制从多相机视图中查询BEV空间中的特征。
-
空间交叉注意力和时间自注意力是处理BEV查询的注意力层,用于根据BEV查询查找和聚合来自多相机图像的空间特征和来自历史BEV的时间特征。
在推理过程中,在时间戳t,将多相机图像馈送到骨干网(例如ResNet - 101 ),得到不同相机视图的特征 F t = { F i t } i = 1 N v i e w F_t ={ \{ F_i^t \} }_{i=1}^{N_view} Ft={Fit}i=1Nview ,其中 F i t F_i^t Fit 是第i个视图的特征, N v i e w N_{view} Nview 是相机视图的总数。同时,在前一时刻t - 1保留了BEV特征Bt - 1。
-
在每个编码器层,首先使用BEV查询Q通过时间自注意力从先验BEV特征Bt - 1中查询时间信息。
-
然后利用BEV查询Q通过空间交叉注意力从多相机特征Ft中查询空间信息。
-
经过前馈网络后,编码器层输出细化后的BEV特征,作为下一个编码器层的输入。经过6层编码器堆叠,生成当前时间戳t的统一BEV特征Bt。以BEV特征Bt作为输入,3D检测头和地图分割头预测3D边界框和语义地图等感知结果。
2.BEV查询
-
预定义了一组网格状的可学习参数 Q ∈ R H × W × C Q∈R^{H × W × C} Q∈RH×W×C 作为BEVFormer的查询,其中H,W为BEV平面的空间形状。
-
具体而言,位于p = ( x , y)处的查询 Q p ∈ R 1 × C Q_p∈R^{1 × C} Qp∈R1×C 负责BEV平面中对应的网格单元区域。BEV平面中的每个网格单元对应一个s米的真实世界尺寸。
-
BEV特征的中心默认情况下与本车的位置相对应。按照通常的做法,在将BEV查询Q输入到BEVFormer之前,添加了可学习的位置嵌入positonnal embedding。
-
3.空间交叉注意力
-
由于多相机3D感知(包含Nview相机视图)的输入规模较大,传统多头注意力的计算成本极高。因此,本文开发了基于可变形注意力的空间交叉注意力,这是一个资源高效的注意力层,其中每个BEV查询Qp只与它的感兴趣区域进行跨相机视图的交互。然而,可变形注意力最初是为2D感知而设计的,因此对于3D场景需要进行一些调整。
-
如图2(b)所示,首先将BEV平面上的每个查询提升为一个柱状查询,从柱状中采样 N r e f N_{ref} Nref 个3D参考点,然后将这些点投影到2D视图。
-
对于一个BEV查询,投影的2D点只能落在某些视图上,其他视图不被击中。在这里,将命中视图称为 V h i t V_{hit} Vhit 。然后,将这些2D点视为查询 Q p Q_p Qp 的参考点,并从这些参考点周围的命中视图 V h i t V_{hit} Vhit 中采样特征。
-
最后,对采样的特征进行加权求和作为空间交叉注意力的输出。空间交叉注意力( SCA )的过程可以表示为:
i为相机视图索引,j为参考点索引,** N r e f N_{ref} Nref为每次BEV查询的总参考点。 F t i F^i_t Fti 为第i个相机视图的特征。对于每个BEV查询 Q p Q_p Qp,使用投影函数P( p , i , j)**得到第i个视图图像上的第j个参考点。
-
接下来介绍如何从投影函数P中获取视图图像上的参考点。首先计算查询Qp位于Q的p = ( x , y)处对应的真实世界位置( x′, y′)
其中H,W为BEV查询的空间形状,s为BEV网格的分辨率大小,( x′, y′)为以自车位置为原点的坐标。在三维空间中,位于( x′, y′)的物体会出现在z轴上z′的高度处。因此预先定义了一组锚点高度 { z ′ j } = 1 N r e f \{ z′_j \} ^{Nref}_{ = 1} {z′j}=1Nref *,*确保能够捕获出现在不同高度的线索。这样,对于每个查询Qp,得到一个3D参考点的支柱 ( x ′ , y ′ , z ′ j ) j = 1 N r e f ( x′, y′, z′_j)^{Nref}_{j = 1} (x′,y′,z′j)j=1Nref 。最后,通过相机的投影矩阵将3D参考点投影到不同的图像视图,可以写为:
这里,P( p , i , j)是从第j个3D点( x′, y′, z′j)投影到第i个视图的2D点, T i ∈ R 3 × 4 T_i∈R^{3 × 4} Ti∈R3×4 是第i个相机的已知投影矩阵。
4.时间自注意力
-
除了空间信息,时间信息对于视觉系统理解周围环境也是至关重要的。例如,在没有时间线索的情况下,从静态图像中推断运动物体的速度或检测高度遮挡的物体是具有挑战性的。为了解决这个问题,本文设计了时间自注意力,它可以通过结合历史BEV特征来表示当前环境。
-
鉴于BEV查询Q在当前时间戳t和历史BEV特征Bt - 1保存在时间戳t - 1,首先根据自运动将Bt - 1对齐到Q,以使相同网格上的特征对应于相同的现实位置。这里,我们将对齐后的BEV特征Bt - 1记为B′t - 1。然而,从时间t - 1到t,可移动物体以各种偏移量在现实世界中运动。在不同时间的BEV特征之间构造相同对象的精确关联是具有挑战性的。
-
因此,本文通过时间自注意力( TSA )层对特征之间的这种时间连接进行建模,该层可以写成如下形式:
-
其中Qp表示位于p = ( x , y)的BEV查询。此外,与传统可变形注意力不同,时间自注意力中的偏移量∆p通过Q和B′t - 1的级联来预测。特别地,对于每个序列的第一个样本,时序自注意力将退化为一个没有时序信息的自注意力,这里我们将BEV特征{ Q,B′t-1 }替换为重复的BEV查询{ Q,Q }。
-
相比于在[ 18、38、6]中简单地堆叠BEV,本文的时间自注意力可以更有效地建模长时间依赖。BEVFormer从以前的BEV特征中提取时态信息,而不是多个堆叠的BEV特征,因此需要更少的计算成本和更少的干扰信息。
5.BEV特征的应用
-
由于BEV特征Bt∈RH × W × C是一个通用的2D特征图,可以用于各种自动驾驶感知任务,因此可以在2D感知方法的基础上稍作修改开发3D目标检测和地图分割任务头。
-
对于3D目标检测,本文基于2D检测器Deformable DETR设计了一个端到端的3D检测头。这些改进包括使用单尺度BEV特征Bt作为解码器的输入,预测3D边界框和速度而不是2D边界框,以及仅使用L1损失来监督3D边界框回归。有了检测头,我们的模型可以端到端的预测3D边界框和速度,而不需要NMS后处理。
-
对于地图分割,我们基于二维分割方法展示全景SegFormer 设计了一个地图分割头。由于基于BEV的地图分割与常见的语义分割基本相同,我们利用[ 22 ]的掩码解码器和固定类别的查询来针对每个语义类别,包括包括汽车、车辆、道路(可行驶区域)和车道。
五、实验
1.数据集
-
nuScenes数据集:包含1000个场景,每个场景的时长约为20s,关键样本的标注频率为2Hz。每个样本由6个相机的RGB图像组成,具有360 °的水平视场。对于检测任务,共有来自10个类别的1.4 M标注的3D边界框。
-
Waymo公开数据集:包含798个训练序列和202个验证序列的大规模自动驾驶数据集。
2.实验设置
- baseline。为了消除任务头的影响,并公平地比较其他BEV生成方法,我们使用VPN和Lift - Splat来替换BEVFormer,并保持任务头和其他设置相同。我们还在不使用历史BEV特征的情况下,通过将时间自注意力调整为传统自注意力,将BEVFormer调整为静态模型BEVFormer - S。
3.实验结果
-
3D目标检测结果
-
表1和表2报告了关于nuScenes测试和val分解的主要结果。在公平的训练策略和可比较的模型规模下,本文方法在val集( 51.7 % NDS vs . 42.5 % NDS)上比先前最好的方法DETR3D高出9.2个点。
-
以往基于相机的方法几乎无法估计速度,而我们的方法证明了时间信息在多相机检测的速度估计中起着至关重要的作用。在测试集上,BEVFormer的平均平均速度误差( mean Average Velocity Error,mAVE )为0.378 m / s,远远优于其他基于相机的方法,接近基于LiDAR的。
-
-
多任务感知结果
-
同时使用检测和分割头训练我们的模型,以验证模型对多个任务的学习能力,结果如表4所示。
-
在相同设置下比较不同的BEV编码器时,除了道路分割结果与BEVFormer - S相当外,BEVFormer在所有任务上都取得了更高的性能。例如,在联合训练的情况下,BEVFormer在检测任务( 52.0 % NDS v.s. 41.0 % NDS)上比Lift - Splat * 高出11.0点,在车道分割( 23.9 % v.s. 18.3 %)上比Lift - Splat *高出5.6点。与单独训练任务相比,多任务学习通过共享更多的模块,节省了计算成本,减少了推理时间,包括主干和BEV编码器。
-
在本文中BEV编码器生成的BEV特征可以很好地适应不同的任务,并且多任务头的模型训练在检测任务和车辆分割上表现更好。然而,对于道路和车道分割,联合训练的模型表现不如单独训练的模型,这是多任务学习中一种常见的现象,称为负迁移。
-
-
消融研究
-
空间交叉注意的有效性。
- 为了验证空间交叉注意力的效果,使用BEVFormer - S进行消融实验排除时间信息的干扰,结果如表5。
- 默认的空间交叉注意力是基于可变形注意力的。为了进行比较,我们还构建了另外两种具有不同注意力机制的基线:( 1 )使用全局注意力替换可变形注意力;( 2 )使得每个查询只与其参考点进行交互,而不与周围的局部区域进行交互。为了进行更广泛的比较,我们还将BEVFormer替换为VPN 和Lift - Spalt提出的BEV生成方法。观察到在可比较的模型规模下,可变形注意力显著优于其他注意力机制。全局注意力消耗过多GPU内存,点交互感受野有限。稀疏注意力由于与先验确定的感兴趣区域进行交互,平衡感受野和GPU消耗,获得了更好的性能。
-
时间自注意力的有效性。
-
由表1和表4可以观察到,在相同的设置下,BEVFormer比BEVFormer - S有显著的改进,特别是在具有挑战性的检测任务上。时间信息的作用主要体现在以下几个方面:( 1 )时间信息的引入极大地提升了速度估计的精度;( 2 )利用时间信息预测目标的位置和朝向更加准确;( 3 )由于时间信息包含过去物体的线索,我们在严重遮挡的物体上获得了更高的召回率,如图3所示。
-
不同遮挡率子集的检测结果。根据{ 0 ~ 40 %,40 ~ 60 %,60 ~ 80 %,80 ~ 100 % }的可见性将nu Scenes val集合划分为4个子集。( a ):受时间信息的增强,BEVFormer在所有子集上都有较高的召回率,尤其是在能见度最低的子集上( 0 ~ 40 % )。( b )、( d )、( e ):时间信息有利于平移、定向和速度精度。( c )和( f ):不同方法之间的尺度和属性误差差距最小。时间信息并不能帮助对象的尺度预测。
-
为了评估BEVFormer在不同遮挡程度物体上的表现,我们根据nuScenes提供的官方可见性标签将nuScenes的验证集划分为4个子集。在每个子集中,我们还计算了匹配时中心距离阈值为2米的所有类别的平均召回率。所有方法的预测框最大数量都是300,以公平地比较召回率。在只有0 - 40 %的对象可见的子集上,BEVFormer的平均召回率优于BEVFormer - S和DETR3D,超过6.0 %。
-
-
模型规模和延迟。
-
-
在表6中比较了不同配置的性能和延迟,从是否使用多尺度视图特征、BEV查询的形状和层数3个方面对BEVFormer的尺度进行消融,以验证性能和推理延迟之间的权衡。
-
可以观察到在BEVFormer中使用一个编码器层的配置C达到了50.1 %的NDS,并将BEVFormer的延迟从原来的130ms降低到了25ms。配置D具有单尺度视图特征、较小的BEV尺寸和仅有1个编码器层,虽然与默认配置相比损失了3.9个点,但在推理过程中仅消耗了7ms。然而,然而,由于多视角图像输入,限制效率的瓶颈在于主干网,高效的自动驾驶主干网值得深入研究。总体而言,我们的架构能够适应不同的模型规模,并能够灵活地权衡性能和效率。
-
-
-
可视化