论文精读——《BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotempor》

BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers

论文精读

摘要(Abstract)

背景:

三维视觉感知任务,包括基于多摄像机图像的三维检测和地图分割,是自动驾驶系统必不可少的任务。

本文工作:

在这项工作中,我们提出了一个新的框架Bevformer,它通过时空转换器(spatiotemporal transformer)学习统一的BEV表示来支持多个自动驾驶感知任务。 简而言之,Bevformer通过预先定义的网格状BEV查询与空间和时间空间进行交互,从而利用空间和时间信息。 为了聚合空间信息,我们设计了空间交叉注意力机制(spatial cross-attention),每个BEV查询从摄像机视图中的感兴趣区域提取空间特征。 对于时间信息,我们提出了时态自注意力机制(temporal self-attention)来递归地融合BEV的历史信息。

实验结果:
我们的方法在Nuscenes测试集上获得了新的最先进的56.9%的NDS度量,比以前的最佳性能高9个点,与基于激光雷达的基线的性能持平。 在低能见度条件下,BEVFormer能显著提高目标的速度估计精度和查全率。

1. 介绍(Introduction)

背景介绍: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,用于端到端的三维物体检测和地图分割。

主要贡献:

  • 我们提出了一种时空转换器编码器(spatiotemporal transformer encoder)Bevformer,它将多摄像机和或时间戳输入投射到BEV表示中。 借助统一的BEV特征,我们的模型可以同时支持多个自动驾驶感知任务,包括3D检测和地图分割。
  • 我们设计了一个可学习的BEV查询和一个空间交叉关注层(spatial cross-attention layer)和一个时间自关注层(temporal self-attention layer),分别从交叉摄像机中查找空间特征和从历史BEV中查找时间特征,然后将它们聚合成统一的BEV特征。
  • 我们在多个具有挑战性的基准上评估所提出的Bevformer,包括Nuscenes和Waymo。 与现有技术相比,我们的Bevformer始终在性能上有所改进。 例如,在相同的参数和计算开销下Bevformer在Nuscenes测试集上获得了56.9%的NDS,优于以前最好的检测方法Detr3D下降9.0个百分点(56.9%对47.9%)。 对于地图分割任务,我们也达到了最先进的性能,比Lift-Splat关于最具挑战性的车道分割。 我们希望这个简单而强大的框架可以作为后续3D感知任务的新基线。

2. 相关工作(Related Work)

2.1 基于Transformer的2D感知(Transformer-based 2D perception)

2.2 基于摄像机的3D感知(Camera-based 3D Perception)

3. BEVFormer

将多摄像机图像特征转换为鸟瞰(BEV)特征,可以为各种自动驾驶感知任务提供统一的周围环境表示。 本文提出了一种新的基于Transformer的BEV生成框架,该框架可以通过注意力机制有效地聚合来自多视点摄像机的时空特征和历史BEV特征。

3.1 整体结构(Overall Architecture)

在这里插入图片描述

图2:Bevformer的总体架构。 (a)Bevformer的编码器层包含网格状的BEV查询、时间自注意和空间交叉注意。 (b)在空间交叉注意中,每个BEV查询只与感兴趣区域中的图像特征交互。©在时间自注意中,每个BEV查询与两个特征交互:当前时间戳的BEV查询和前一个时间戳的BEV特征。

如图2所示, Bevformer有6个编码器层,每层都遵循Transformer的传统结构,除了三个定制的设计: BEV查询、空间交叉注意和时间自我注意。 具体地说,BEV查询是网格状的可学习参数,它旨在通过注意力机制从多摄像机视图查询BEV空间中的特征。 空间交叉注意和时间自注意是一种处理BEV查询的注意力机制层,用于根据BEV查询从多摄像机图像中查找和聚集空间特征以及从历史BEV中查找和聚集时间特征。

步骤:

  • 在推理过程中,在时间戳 t t t处,我们将多摄像机图像馈送到骨干网(例如,ResNet-101),并获得不同相机视图的特征 F t = { F t i } i = 1 N v i e w F_t={\{F_t^i\}}_{i=1}^{N_{view}} Ft={Fti}i=1Nview, 其中 F t i F_t^i Fti是第 i i i个视图的特征, N v i e w N_{view} Nview视图是相机视图的总数。 同时,我们保留了BEV特征 B t − 1 B_{t-1} Bt1在之前的时间戳 t − 1 t-1 t1处。
  • 在每个编码器层中,我们首先使用BEV查询Q通过时间自注意从先前的BEV特征 B t − 1 B_{t-1} Bt1中查询时间信息。
  • 然后使用BEV查询Q通过空间交叉注意从多摄像机特征 F t F_t Ft中查询空间信息。
  • 前馈网络(feed-forward network)后,编码器层输出细化后的BEV特征,这是下一个编码器层的输入。 在6个堆叠编码器层之后,生成当前时间戳t处的统一BEV特征 B t B_t Bt
  • 以BEV特征 B t B_t Bt为输入,3D检测头和地图分割头预测3D等感知结果, 例如包围盒和语义图。

3.2 BEV 查询(BEV Queries)

我们预先定义了一组网格状的可学习参数 Q ∈ R H × W × C Q \in \mathbb{R}^{H \times W \times C} QRH×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} QR1×C 负责BEV平面中相应的网格单元区域。平面中的每个网格单元对应于现实世界中s米的大小。 BEV特征的中心默认情况下对应于自我汽车的位置。 遵循一般做法,在将BEV查询Q输入到Bevformer之前,我们将其添加可学习的位置嵌入。

3.3 空间交叉注意力机制(Spatial Cross-Attention)

由于多摄像机三维感知的输入规模较大(包含 N v i e w N_{view} Nview个视图摄像机视图),导致Vanilla多头关注的计算代价非常高。 因此,我们发展了基于deformable的空间交叉注意(spatial cross-attention),这是一个资源高效的关注层,其中每个BEV查询 Q p Q_p Qp仅与跨摄像机视图的感兴趣区域交互。 然而,deformable注意力最初是为2D感知而设计的,因此对于3D场景需要进行一些调整。
如图2(b)所示:

  • 我们首先将BEV平面上的每个查询提升为柱状查询,从柱子上取样 N r e f N_{ref} Nref 个3D参考点,
  • 然后将这些点投影到二维视图上。 对于一个BEV查询,投影的2D点只能落在某些视图上,其他视图不会被命中。 这里,我们将命中的视图称为 V h i t V_{hit} Vhit
  • 之后,我们将这些2D点作为查询的参考点 Q p Q_p Qp,并从这些参考点命中的视图中周围的区域采样特征。
  • 最后,我们对采样的特征进行加权和,作为空间交叉注意的输出。

空间交叉注意(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 1iVhit 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=(x2W)×s;y=(y2H)×s,

其中 H 、 W H、W HW 是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[xyzj1]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} TiR3×4 是已知的相机参数矩阵。

3.4 时间自注意力机制(Temporal Self-Attention)

除了空间信息,时间信息对视觉系统理解周围环境也至关重要。 例如,在没有时间线索的情况下,从静态图像中推断运动物体的速度或检测高度遮挡的物体是具有挑战性的。为了解决这个问题,我们设计了时间自注意,它可以通过结合历史BEV特征来表示当前环境。

对于给定的BEV查询 Q Q Q 在当前时间戳 t t t 和在之前保存的时间戳为 t − 1 t-1 t1的BEV特征 B t − 1 B_{t-1} Bt1, 根据自车的运动,我们将 B t − 1 B_{t-1} Bt1 Q Q Q 对齐,使得在同一个网格中的特征能够和真实的世界中的定位联系起来。据此,我们把对齐的历史BEV特征 B t − 1 B_{t-1} Bt1 记作 B t − 1 ′ B_{t-1}^{\prime} Bt1。然而,从时间 t − 1 t-1 t1 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,Bt1})=V{Q,Bt1}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} Bt1 的连接得到的。

特别地,对于每个序列的第一个样本,时间自注意将退化为没有时间信息的自注意,在这里我们用重复的BEV查询 { Q , Q } \{Q, Q\} {Q,Q}替换了BEV特征 { Q , B t − 1 ′ } \left\{Q, B_{t-1}^{\prime}\right\} {Q,Bt1}

我们的时间自我注意可以更有效地模拟长时间依赖,而不是多个叠加的BEV特征。 Bevformer从先前的BEV特征中提取时间信息,因此所需的计算量和所受的干扰信息较少。

3.5 BEV特征的应用(Applications of BEV Features)

由于BEV特征 B t ∈ R H × W × C B_t \in \mathbb{R}^{H \times W \times C} BtRH×W×C是一种通用的二维特征地图,可以用于各种自动驾驶感知任务,因此可以基于二维感知方法开发三维目标检测和地图分割任务头稍作修改。

  • 针对三维目标检测,在二维检测器可变形检测器的基础上,设计了一种端到端的三维检测头。 改进包括使用单尺度BEV特征 B t B_t Bt作为解码器的输入,预测3D包围盒和速度而不是2D包围盒,只使用L1损失来监督3D包围盒回归。 利用检测头,我们的模型可以对三维边界盒
    和速度进行端到端的预测,而不需要NMS后处理。
  • 地图分割方面,基于二维分割方法Panoption Segformer设计了一个地图分割头。 由于基于BEV的地图分割与常用的语义分割基本相同,我们使用了[22]和针对每个语义类别的固定类查询,包括汽车、车辆、道路(可驾驶区域)和车道。

3.6 实现细节(Implementation Details)

  • 训练阶段:对于时间戳T处的每一个样本,我们从过去2秒的连续序列中随机抽取另外3个样本,这种随机抽样策略可以增加自我运动的多样性。 我们将这四个样本的时间戳表示为 t 3 、 t 2 、 t 1 、 t t3、t2、t1、t t3t2t1t。 对于前三个时间戳的样本,它们负责循环生成BEV特征 { B t − 3 , B t − 2 , B t − 1 } \{B_{t-3},B_{t-2},B_{t-1}\} {Bt3,Bt2,Bt1},并且该阶段不需要梯度。 对于时间戳 t − 3 t-3 t3处的第一个样本,没有先前的BEV特征,时间自我注意退化为自我注意。 在时间 t t t 处,该模型基于多摄像机输入和先前的BEV特征 B t − 1 B_{t-1} Bt1
    生成BEV特征 B t B_t Bt,使得 B t B_t Bt 包含跨越四个样本的时间和空间线索。 最后,我们将BEV特征 B t B_t Bt作为检测头和分割头的输入,并计算相应的损失函数。
  • 推断阶段: 在推理阶段,我们按照时间顺序对视频序列的每一帧进行评估。 上一个时间戳的BEV特征被保存并用于下一个时间戳,这种在线推理策略具有时间效率高和符合实际应用的特点。 虽然我们利用了时间信息,但我们的推理速度仍然可以与其他方法相媲美。

参考

https://github.com/zhiqi-li/BEVFormer

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zyw2002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值