背景:
三维视觉感知任务,包括基于多摄像机图像的三维检测和地图分割,是自动驾驶系统必不可少的任务。
本文工作:
在这项工作中,我们提出了一个新的框架Bevformer,它通过时空转换器(spatiotemporal transformer)学习统一的BEV表示来支持多个自动驾驶感知任务。 简而言之,Bevformer通过预先定义的网格状BEV查询与空间和时间空间进行交互,从而利用空间和时间信息。 为了聚合空间信息,我们设计了空间交叉注意力机制(spatial cross-attention),每个BEV查询从摄像机视图中的感兴趣区域提取空间特征。 对于时间信息,我们提出了时态自注意力机制(temporal self-attention)来递归地融合BEV的历史信息。
实验结果:
我们的方法在Nuscenes测试集上获得了新的最先进的56.9%的NDS度量,比以前的最佳性能高9个点,与基于激光雷达的基线的性能持平。 在低能见度条件下,BEVFormer能显著提高目标的速度估计精度和查全率。
背景介绍:3维空间感知
基于摄像机的感知
三维空间中的感知对于自动驾驶、机器人等各种应用至关重要。尽管基于激光雷达的方法取得了显著进展、以相机为基础的方法近年来引起了广泛的关注。 除了部署成本低之外,与基于激光雷达的同行相比,摄像机在检测远距离目标和识别基于视觉的道路元素(如交通灯、红绿灯)方面具有理想的优势。
传统方法1: 基于单目框架和跨相机后处理
在自动驾驶中,通过对周围场景的视觉感知,可以从多个摄像头给出的二维线索中预测出三维约束盒或语义图。 最简单的解决方案是基于单目框架和跨相机后处理(LSS, Detr)。 这个框架的缺点是,它单独处理不同的视图,不能跨摄像机捕捉信息,导致性能和效率低下。
传统方法2:基于BEV的检测框架
作为单目框架的替代方案,一个更统一的框架是从多摄像机图像中提取整体的表示。 鸟瞰(Bird’s-Eye-View,BEV)是一种常用的环境场景表示,因为它清晰地显示了物体的位置和规模,适合于各种自动驾驶任务,如感知和规划。 虽然以前的地图分割方法证明了BEV的有效性, 在三维物体检测中,基于BEV的方法并没有显示出比其他范式更大的优势。 其根本原因是三维目标检测任务需要很强的BEV特征来支持精确的三维包围盒预测,而从二维平面生成BEV是不适合的。 生成BEV特征的流行的BEV框架是基于深度信息,但这种范式对深度值或深度分布的准确性很敏感。 因此,基于BEV的方法的检测性能受到复合误差的影响,而不准确的BEV特征会严重损害最终性能。
研究动机:设计一种不依赖深度信息,自适应学习BEV特征的BEV生成方法
因此,我们的动机是设计一种不依赖深度信息,自适应学习BEV特征而不是严格依赖三维先验的BEV生成方法。 Transformer通过注意力机制动态聚合有价值的特征,从概念上满足了我们的需求。使用BEV特征执行感知任务的另一个动机是,BEV是连接时空空间的理想桥梁。 对于人类视觉感知系统来说,时间信息在推断物体运动状态和识别被遮挡物体方面起着至关重要的作用,视觉领域的许多工作已经证明了利用视频数据的有效性。 然而,现有的多摄像机三维检测方法很少利用时间信息。 目前自动驾驶面临的主要挑战是时间紧迫,场景中的物体变化迅速,因此简单地叠加交叉时间戳的BEV特征会带来额外的计算成本和干扰信息,这可能并不理想。 受递归神经网络启发, 我们利用BEV特征递归地传递过去到现在的时间信息,这与RNN模型的隐藏状态具有相同的精神。
解决方案:提出基于Transfromer的BEV 编码器——BEVformer。 优点:有效聚合时空信息,支持多种3维感知任务。
为此,我们提出了一种基于transformer的鸟瞰图(BEV)编码器,称为Bevformer,它可以有效地聚合来自多视角摄像机的时空特征和BEV的历史特征。 由Bevformer生成的BEV特征可以同时支持三维物体检测、地图分割等多个三维感知任务,对自动驾驶系统具有一定的应用价值。
关键设计:
图1:我们提出了Bevformer,这是一个自动驾驶的范例,它应用转换器和时间结构从多摄像机输入中生成鸟瞰(BEV)特征。 BEV-Former利用查询来查找空间/时间空间,并相应地聚合时空信息,从而有利于感知任务的更强表征。
如图1所示 该Bevformer包括三个关键设计:
(1)网格状的BEV查询(grid-shaped BEV queries),通过注意机制灵活地融合时空特征;
(2)空间交叉注意模块(spatial cross-attention module),从多摄像机图像中聚合空间特征;
(3)时间自注意模块(temporal self-attention module),从历史BEV特征中提取时间信息,有利于运动目标的速度估计和严重遮挡目标的检测,同时计算开销可以忽略不计。
利用Bevformer生成的统一特征,该模型可以与不同的任务特定头协同工作,如Deformable DETR和mask decoder,用于端到端的三维物体检测和地图分割。
主要贡献:
将多摄像机图像特征转换为鸟瞰(BEV)特征,可以为各种自动驾驶感知任务提供统一的周围环境表示。 本文提出了一种新的基于Transformer的BEV生成框架,该框架可以通过注意力机制有效地聚合来自多视点摄像机的时空特征和历史BEV特征。
图2:Bevformer的总体架构。 (a)Bevformer的编码器层包含网格状的BEV查询、时间自注意和空间交叉注意。 (b)在空间交叉注意中,每个BEV查询只与感兴趣区域中的图像特征交互。©在时间自注意中,每个BEV查询与两个特征交互:当前时间戳的BEV查询和前一个时间戳的BEV特征。
如图2所示, Bevformer有6个编码器层,每层都遵循Transformer的传统结构,除了三个定制的设计: BEV查询、空间交叉注意和时间自我注意。 具体地说,BEV查询是网格状的可学习参数,它旨在通过注意力机制从多摄像机视图查询BEV空间中的特征。 空间交叉注意和时间自注意是一种处理BEV查询的注意力机制层,用于根据BEV查询从多摄像机图像中查找和聚集空间特征以及从历史BEV中查找和聚集时间特征。
步骤:
我们预先定义了一组网格状的可学习参数 Q ∈ R H × W × C Q \in \mathbb{R}^{H \times W \times C} Q∈RH×W×C作为Bevformer的查询,其中H,W是BEV平面的空间形状。 具体地说,位于 p = ( x , y ) p=(x,y) p=(x,y)处的查询 Q ∈ R 1 × C Q \in \mathbb{R}^{1 \times C} Q∈R1×C 负责BEV平面中相应的网格单元区域。平面中的每个网格单元对应于现实世界中s米的大小。 BEV特征的中心默认情况下对应于自我汽车的位置。 遵循一般做法,在将BEV查询Q输入到Bevformer之前,我们将其添加可学习的位置嵌入。
由于多摄像机三维感知的输入规模较大(包含 N v i e w N_{view} Nview个视图摄像机视图),导致Vanilla多头关注的计算代价非常高。 因此,我们发展了基于deformable的空间交叉注意(spatial cross-attention),这是一个资源高效的关注层,其中每个BEV查询 Q p Q_p Qp仅与跨摄像机视图的感兴趣区域交互。 然而,deformable注意力最初是为2D感知而设计的,因此对于3D场景需要进行一些调整。
如图2(b)所示:
空间交叉注意(SCA)的过程可以表述
SCA ( Q p , F t ) = 1 ∣ V hit ∣ ∑ i ∈ V hit ∑ j = 1 N ref DeformAttn ( Q p , P ( p , i , j ) , F t i ) \operatorname{SCA}\left(Q_p, F_t\right)=\frac{1}{\left|\mathcal{V}{\text {hit }}\right|} \sum{i \in \mathcal{V}{\text {hit }}} \sum{j=1}^{N_{\text {ref }}} \operatorname{DeformAttn}\left(Q_p, \mathcal{P}(p, i, j), F_t^i\right) SCA(Qp,Ft)=∣Vhit ∣1∑i∈Vhit ∑j=1Nref DeformAttn(Qp,P(p,i,j),Fti)
其中 i i i 表示的是摄像机的视图编号, j j j 表示的是参考点, N ref N_{\text {ref }} Nref 是BEV查询中的所有参考点, F t i F_t^i Fti 是第 i i i 个摄像机视图的特征,对于每个BEV查询 Q p Q_p Qp,我们使用投影方程 P ( p , i , j ) \mathcal{P}(p, i, j) P(p,i,j) 得到第 i i i 个视图中的第 j j j个参考点。
接下来,我们介绍如何利用投影方程 P \mathcal{P} P从视图中得到参考点。首先,我们根据在 p = ( x , y ) p=(x, y) p=(x,y)的坐标点 Q Q Q的查询 Q p Q_p Qp计算真实世界的定位 ( x ′ , y ′ ) \left(x^{\prime}, y^{\prime}\right) (x′,y′)
x ′ = ( x − W 2 ) × s ; y ′ = ( y − H 2 ) × s , x^{\prime}=\left(x-\frac{W}{2}\right) \times s ; \quad y^{\prime}=\left(y-\frac{H}{2}\right) \times s, x′=(x−2W)×s;y′=(y−2H)×s,
其中 H 、 W H、W H、W 是BEV查询的空间形状, s s s 是BEV网格的分辨率大小, ( x ′ , y ′ ) \left(x^{\prime}, y^{\prime}\right) (x′,y′)是相对于自车的坐标位置。
在3D空间中,坐标为 ( x ′ , y ′ ) \left(x^{\prime}, y^{\prime}\right) (x′,y′)的目标物体在 z z z轴上的高度为 z ′ z^{\prime} z′。 因此,我们把先验框的高度预定义为 { z j ′ } j = 1 N ref \left\{z_j^{\prime}\right\}{j=1}^{N{\text {ref }}} {zj′}j=1Nref 以此来保证我们可以捕捉到不同高度的线索。对于每个查询 Q p Q_p Qp, 我们得到一个3D参考点柱 ( x ′ , y ′ , z j ′ ) j = 1 N ref \left(x^{\prime}, y^{\prime}, z_j^{\prime}\right){j=1}^{N{\text {ref }}} (x′,y′,zj′)j=1Nref
最后,我们通过相机的投影矩阵,可以把3D的参考点投影到不同的图像视图中。公式如下:
P ( p , i , j ) = ( x i j , y i j ) where z i j ⋅ [ x i j y i j 1 ] T = T i ⋅ [ x ′ y ′ z j ′ 1 ] T . \begin{aligned} \mathcal{P}(p, i, j) &=\left(x_{i j}, y_{i j}\right) \\ \text { where } z_{i j} \cdot\left[\begin{array}{llll} x_{i j} & y_{i j} & 1 \end{array}\right]^T &=T_i \cdot\left[\begin{array}{llll} x^{\prime} & y^{\prime} & z_j^{\prime} & 1 \end{array}\right]^T . \end{aligned} P(p,i,j) where zij⋅[xijyij1]T=(xij,yij)=Ti⋅[x′y′zj′1]T.
其中, P ( p , i , j ) \mathcal{P}(p, i, j) P(p,i,j) 是第 i i i个图中的第 j j j个3D点 ( x ′ , y ′ , z j ′ ) \left(x^{\prime}, y^{\prime}, z_j^{\prime}\right) (x′,y′,zj′)投影得到的 2 D 2 \mathrm{D} 2D 点, T i ∈ R 3 × 4 T_i \in \mathbb{R}^{3 \times 4} Ti∈R3×4 是已知的相机参数矩阵。
除了空间信息,时间信息对视觉系统理解周围环境也至关重要。 例如,在没有时间线索的情况下,从静态图像中推断运动物体的速度或检测高度遮挡的物体是具有挑战性的。为了解决这个问题,我们设计了时间自注意,它可以通过结合历史BEV特征来表示当前环境。
对于给定的BEV查询 Q Q Q 在当前时间戳 t t t 和在之前保存的时间戳为 t − 1 t-1 t−1的BEV特征 B t − 1 B_{t-1} Bt−1, 根据自车的运动,我们将 B t − 1 B_{t-1} Bt−1 和 Q Q Q 对齐,使得在同一个网格中的特征能够和真实的世界中的定位联系起来。据此,我们把对齐的历史BEV特征 B t − 1 B_{t-1} Bt−1 记作 B t − 1 ′ B_{t-1}^{\prime} Bt−1′。然而,从时间 t − 1 t-1 t−1到 t t t,在真实世界中运动的物体会有多样的偏移。这使得在不同的时间下的BEV特征图中的相同物体关联起来非常具有挑战性。
因此,我们通过时态自我关注(TSA)层对特征之间的这种时态联系进行建模,该层可以编写如下:
TSA ( Q p , { Q , B t − 1 ′ } ) = ∑ V ∈ { Q , B t − 1 ′ } DeformAttn ( Q p , p , V ) \operatorname{TSA}\left(Q_p,\left\{Q, B_{t-1}^{\prime}\right\}\right)=\sum_{V \in\left\{Q, B_{t-1}^{\prime}\right\}} \operatorname{DeformAttn}\left(Q_p, p, V\right) TSA(Qp,{Q,Bt−1′})=∑V∈{Q,Bt−1′}DeformAttn(Qp,p,V)
其中 Q p Q_p Qp 表示定位在 p = ( x , y ) p=(x,y) p=(x,y)处的查询。除此之外,和vanilla deformable attention不同,在temporal self-attention中的偏移量 Δ p \Delta p Δp是通过 Q Q Q 和 B t − 1 ′ B_{t-1}^{\prime} Bt−1′ 的连接得到的。
特别地,对于每个序列的第一个样本,时间自注意将退化为没有时间信息的自注意,在这里我们用重复的BEV查询 { Q , Q } \{Q, Q\} {Q,Q}替换了BEV特征 { Q , B t − 1 ′ } \left\{Q, B_{t-1}^{\prime}\right\} {Q,Bt−1′}
我们的时间自我注意可以更有效地模拟长时间依赖,而不是多个叠加的BEV特征。 Bevformer从先前的BEV特征中提取时间信息,因此所需的计算量和所受的干扰信息较少。
由于BEV特征 B t ∈ R H × W × C B_t \in \mathbb{R}^{H \times W \times C} Bt∈RH×W×C是一种通用的二维特征地图,可以用于各种自动驾驶感知任务,因此可以基于二维感知方法开发三维目标检测和地图分割任务头稍作修改。
https://github.com/zhiqi-li/BEVFormer