1. 论文摘要介绍表

类别 描述
论文标题 BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers
作者/机构 Zhiqi Li 等 (南京大学, 上海 AI 实验室, 香港大学)
核心问题 1. 2D 图像生成 3D BEV 特征通常依赖深度估计,容易产生复合误差。
2. 现有多视角 3D 检测方法缺乏对时间信息的有效利用,导致速度估计差、遮挡检测难。
核心创新 1. 统一 BEV 表达:不依赖深度信息,通过 Transformer 学习 BEV。
2. 空间交叉注意力 (SCA):BEV 查询直接在多视角图像上查找对应区域聚合特征。
3. 时序自注意力 (TSA):利用 RNN 思想,通过自注意力融合历史 BEV 特征,引入时序信息。
关键技术 Grid-shaped BEV Queries (网格状查询), Deformable Attention (可变形注意力), Ego-motion Alignment (自车运动对齐)。
性能表现 nuScenes NDS: 56.9% (超过前 SOTA DETR3D 9.0 个点)。
速度估计误差 (mAVE) 极低,且在地图分割任务上也表现优异。
应用场景 自动驾驶 3D 物体检测、地图分割 (车道、车辆、可行驶区域)。

2. 论文具体实现流程

输入:

  1. 多视角图像:当前时刻 tttNNN 张环视相机图像。
  2. 历史 BEV 特征:前一时刻 t−1t-1t1 生成的 BEV 特征 Bt−1B_{t-1}Bt1
  3. 自车运动信息:用于对齐历史特征的车辆位姿变化。

核心处理流程 (BEV Encoder):

  1. 特征提取 (Backbone):使用 ResNet-101 等主干网络从多视角图像中提取 2D 特征图 FtF_tFt
  2. BEV 查询初始化:定义一组网格状的可学习参数 QQQ (对应 BEV 平面的物理网格)。
  3. 时序自注意力 (Temporal Self-Attention, TSA)
    • 根据自车运动将历史 BEV Bt−1B_{t-1}Bt1 对齐到当前坐标系。
    • BEV 查询 QQQ 与对齐后的历史 BEV 进行交互,聚合时间信息。
  4. 空间交叉注意力 (Spatial Cross-Attention, SCA)
    • 将 BEV 查询提升为 3D 柱体,采样 3D 参考点。
    • 利用相机内外参将 3D 点投影回 2D 图像视图。
    • 在投影点附近采样图像特征 FtF_tFt 并聚合,提取空间信息。
  5. 前馈网络 (FFN):常规 Transformer 操作。
  6. 循环堆叠:上述过程重复 6 层编码器层,不断细化 BEV 特征。

输出:

  • 统一 BEV 特征 BtB_tBt:包含时空信息的 2D 特征图。

下游任务 (Heads):

  • 3D 检测头:基于 Deformable DETR,预测 3D 框、速度、类别。
  • 地图分割头:基于 Mask Decoder,预测车道、道路等语义分割掩码。

3. 有趣的白话版详细解说

标题:BEVFormer —— 给自动驾驶装上“上帝视角”和“记忆力”

今天来聊一篇自动驾驶领域的重磅论文 BEVFormer。如果不搞那些复杂的数学公式,这个技术其实非常有意思。

1. 它是干嘛的?
想象你在开车,你的眼睛(摄像头)看到的是平面的画面,但你需要知道前后左右(3D 空间)哪里有车,距离多远。以前的 AI 比较笨,它得先对着照片猜“这辆车离我大概 10 米远”,一旦猜错了(比如把画在墙上的车当真车),后面全乱套。
BEVFormer 的作用就是做一个超级转换器:它把车身周围好几个摄像头拍到的平面照片,直接变成一张从天空中俯视的地图(鸟瞰图,也就是 BEV)。在这张图上,哪里有车、车往哪跑,一目了然。

2. 它是怎么做到的?(三大法宝)

  • 法宝一:撒网(BEV Queries)
    BEVFormer 不去死磕每张照片的深度,而是先在车周围的空地上“撒一张网”(网格查询)。它假设车周围就是一个足球场那么大的方格子地图,每个格子就是一个侦探(Query)。

  • 法宝二:查户口(空间交叉注意力)
    每个格子侦探会问:“我是地图上坐标 (10, 10) 的位置,对应的摄像头照片里有东西吗?”
    系统会根据摄像头的角度,算出这个坐标在照片里的具体位置,然后把那块儿的图像信息抓取过来。这就像侦探拿着地图去照片里“查户口”,不管你在哪张照片里,都能把你找出来填回地图的格子里。

  • 法宝三:回忆杀(时序自注意力)
    这是最厉害的一点!以前的 AI 是“金鱼记忆”,只看当前这一秒。如果一辆车被路牌挡住了,AI 就瞎了。
    BEVFormer 有记忆力。它会把上一秒画好的地图拿过来,根据车子自己的移动(比如我往前开了 5 米,那上一秒的地图就要往后挪 5 米)对齐。
    这样,即使这一秒那辆车被挡住了,BEVFormer 会说:“嘿,别想骗我,上一秒这里有辆车在往左开,它肯定还在那!”这就不仅能看透遮挡,还能极其精准地算出别的车开了多快(测速)。

3. 结果怎么样?
效果那是相当炸裂。在自动驾驶著名的 nuScenes 考试中,它比之前的学霸(DETR3D)高了整整 9 分。特别是在测速和看那这种若隐若现的物体时,简直是降维打击。

4. 个人观点
BEVFormer 之所以牛,是因为它优雅。它没有强行去算深度(那个很难且容易错),而是利用 Transformer 强大的“注意力”机制,把空间(多张照片拼在一起)和时间(过去和现在拼在一起)完美融合在了一起。它就像是给了自动驾驶汽车一个带记忆的上帝视角。这篇论文基本上是现在做自动驾驶感知的必读经典,它告诉我们:不要只盯着眼前的照片看,要学会统筹全局和利用过去的经验。

4. 论文完整翻译

在这里插入图片描述

摘要

3D 视觉感知任务,包括基于多摄像头图像的 3D 检测和地图分割,对于自动驾驶系统至关重要。在这项工作中,我们提出了一个新的框架,称为 BEVFormer,它利用时空 Transformer 学习统一的 BEV 表示,以支持多种自动驾驶感知任务。简而言之,BEVFormer 通过预定义的网格状 BEV 查询(BEV queries)与空间和时间空间进行交互,从而利用空间和时间信息。为了聚合空间信息,我们设计了空间交叉注意力(Spatial Cross-Attention),使每个 BEV 查询从跨摄像头视图的感兴趣区域提取空间特征。对于时间信息,我们提出了时序自注意力(Temporal Self-Attention),以循环方式融合历史 BEV 信息。我们的方法在 nuScenes 测试集上实现了 56.9% 的 NDS 指标,刷新了最先进水平(SOTA),比之前的最佳技术高出 9.0 个点,且与基于 LiDAR 的基线性能相当。我们进一步展示了 BEVFormer 在低能见度条件下显著提高了速度估计的准确性和对象的召回率。代码可在 https://github.com/zhiqi-li/BEVFormer 获取。


1. 引言

3D 空间中的感知对于自动驾驶、机器人等各种应用至关重要。尽管基于 LiDAR 的方法 [43, 20, 54, 50, 8] 取得了显著进展,但基于摄像头的方法 [45, 32, 47, 30] 近年来引起了广泛关注。除了部署成本低之外,与基于 LiDAR 的同类产品相比,摄像头还具有检测远距离物体和识别基于视觉的道路元素(例如交通信号灯、停车线)的理想优势。

自动驾驶中对周围场景的视觉感知期望从多个摄像头给出的 2D 线索中预测 3D 边界框或语义地图。最直接的解决方案是基于单目框架 [45, 44, 31, 35, 3] 和跨摄像头后处理。这种框架的缺点是它分别处理不同的视图,无法捕获跨摄像头的信息,导致性能和效率低下 [32, 47]。

作为单目框架的替代方案,一种更统一的框架是从多摄像头图像中提取整体表示。鸟瞰图(BEV)是周围场景的常用表示,因为它清晰地呈现了物体的位置和比例,适用于各种自动驾驶任务,如感知和规划 [29]。尽管之前的地图分割方法证明了 BEV 的有效性 [32, 18, 29],但基于 BEV 的方法在 3D 物体检测中并未显示出优于其他范式的显著优势 [47, 31, 34]。根本原因是 3D 物体检测任务需要强大的 BEV 特征来支持准确的 3D 边界框预测,但从 2D平面生成 BEV 是不适定的(ill-posed)。一种流行的生成 BEV 特征的 BEV 框架是基于深度信息的 [46, 32, 34],但这种范式对深度值或深度分布的准确性很敏感。基于 BEV 的方法的检测性能因此受到复合误差的影响 [47],不准确的 BEV 特征会严重损害最终性能。因此,我们有动力设计一种不依赖于深度信息并且可以自适应地学习 BEV 特征而不是严格依赖 3D 先验的 BEV 生成方法。Transformer 使用注意力机制动态聚合有价值的特征,在概念上满足了我们的需求。

使用 BEV 特征执行感知任务的另一个动机是,BEV 是连接时间和空间的理想桥梁。对于人类视觉感知系统,时间信息在推断物体的运动状态和识别被遮挡物体方面起着至关重要的作用,视觉领域的许多工作已经证明了使用视频数据的有效性 [2, 27, 26, 33, 19]。然而,现有的最先进的多摄像头 3D 检测方法很少利用时间信息。重大挑战在于自动驾驶是时间关键的,场景中的物体变化迅速,因此简单地堆叠跨时间戳的 BEV 特征会带来额外的计算成本和干扰信息,这可能并不理想。受循环神经网络(RNN)[17, 10] 的启发,我们利用 BEV 特征将时间信息从过去循环地传递到现在,这与 RNN 模型的隐藏状态具有相同的精神。

为此,我们提出了一种基于 Transformer 的鸟瞰图(BEV)编码器,称为 BEVFormer,它可以有效地聚合来自多视角摄像头和历史 BEV 特征的时空特征。从 BEVFormer 生成的 BEV 特征可以同时支持多种 3D 感知任务,例如 3D 物体检测和地图分割,这对于自动驾驶系统非常有价值。如图 1 所示,我们的 BEVFormer 包含三个关键设计,即(1)网格状 BEV 查询,通过注意力机制灵活融合空间和时间特征,(2)空间交叉注意力模块,从多摄像头图像聚合空间特征,以及(3)时序自注意力模块,从历史 BEV 特征中提取时间信息,这有利于移动物体的速度估计和严重遮挡物体的检测,同时带来可忽略的计算开销。利用 BEVFormer 生成的统一特征,该模型可以与不同的特定任务头(如 Deformable DETR [56] 和掩码解码器 [22])协作,实现端到端的 3D 物体检测和地图分割。

我们的主要贡献如下:

  • 我们提出了 BEVFormer,一种时空 Transformer 编码器,将多摄像头和/或时间戳输入投影到 BEV 表示。利用统一的 BEV 特征,我们的模型可以同时支持多种自动驾驶感知任务,包括 3D 检测和地图分割。
  • 我们设计了可学习的 BEV 查询,以及空间交叉注意力层和时序自注意力层,分别从跨摄像头查找空间特征和从历史 BEV 查找时间信息,然后将它们聚合为统一的 BEV 特征。
  • 我们在多个具有挑战性的基准测试中评估了提出的 BEVFormer,包括 nuScenes [4] 和 Waymo [40]。与现有技术相比,我们的 BEVFormer 始终能够实现性能提升。例如,在相当的参数和计算开销下,BEVFormer 在 nuScenes 测试集上实现了 56.9% 的 NDS,比之前的最佳检测方法 DETR3D [47] 高出 9.0 个点(56.9% vs. 47.9%)。对于地图分割任务,我们也达到了最先进的性能,在最具挑战性的车道分割上比 Lift-Splat [32] 高出 5.0 多个点。我们希望这个简单而强大的框架可以作为后续 3D 感知任务的新基线。

2. 相关工作

2.1 基于 Transformer 的 2D 感知

最近,一种新趋势是使用 Transformer 重新表述检测和分割任务 [7, 56, 22]。DETR [7] 使用一组对象查询通过交叉注意力解码器直接生成检测结果。然而,DETR 的主要缺点是训练时间长。Deformable DETR [56] 通过提出可变形注意力(deformable attention)解决了这个问题。与 DETR 中的普通全局注意力不同,可变形注意力与感兴趣的局部区域交互,仅在每个参考点附近采样 KKK 个点并计算注意力结果,从而实现高效率并显著缩短训练时间。可变形注意力机制计算如下:
DeformAttn(q,p,x)=∑i=1NheadWi∑j=1NkeyAij⋅Wi′x(p+Δpij),(1) \text{DeformAttn}(q, p, x) = \sum_{i=1}^{N_{\text{head}}} \mathcal{W}_i \sum_{j=1}^{N_{\text{key}}} \mathcal{A}_{ij} \cdot \mathcal{W}'_i x(p + \Delta p_{ij}), \quad (1) DeformAttn(q,p,x)=i=1NheadWij=1NkeyAijWix(p+Δpij),(1)
其中 q,p,xq, p, xq,p,x 分别表示查询、参考点和输入特征。iii 索引注意力头,NheadN_{\text{head}}Nhead 表示注意力头的总数。jjj 索引采样的键,NkeyN_{\text{key}}Nkey 是每个头的总采样键数。Wi∈RC×(C/Hhead)\mathcal{W}_i \in \mathbb{R}^{C \times (C/H_{\text{head}})}WiRC×(C/Hhead)Wi′∈R(C/Hhead)×C\mathcal{W}'_i \in \mathbb{R}^{(C/H_{\text{head}}) \times C}WiR(C/Hhead)×C 是可学习的权重,其中 CCC 是特征维度。Aij∈[0,1]\mathcal{A}_{ij} \in [0, 1]Aij[0,1] 是预测的注意力权重,并通过 ∑j=1NkeyAij=1\sum_{j=1}^{N_{\text{key}}} \mathcal{A}_{ij} = 1j=1NkeyAij=1 进行归一化。Δpij∈R2\Delta p_{ij} \in \mathbb{R}^2ΔpijR2 是相对于参考点 ppp 的预测偏移量。x(p+Δpij)x(p + \Delta p_{ij})x(p+Δpij) 表示位置 p+Δpijp + \Delta p_{ij}p+Δpij 处的特征,它是如 Dai 等人 [12] 中那样通过双线性插值提取的。在这项工作中,我们将可变形注意力扩展到 3D 感知任务,以有效地聚合空间和时间信息。

注解


这个公式描述的是 “可变形注意力(Deformable Attention)” 机制。

如果用最通俗的大白话来解释,可以把它想象成 人的眼睛看东西的方式

1. 核心逻辑:不要“全看”,只看“重点”
传统的 Transformer(全局注意力)就像扫描仪,处理图片时会把每一个像素都看一遍,计算量巨大,速度慢。

可变形注意力(这个公式) 就像人的眼睛:当你盯着一个物体看时,你不会扫描整个世界,而是盯着一个中心点,然后眼睛会快速扫视周围几个关键的、有意义的位置

2. 公式的分步“翻译”

公式长这样:
DeformAttn(q,p,x)=∑i=1NheadWi∑j=1NkeyAij⋅Wi′x(p+Δpij) \text{DeformAttn}(q, p, x) = \sum_{i=1}^{N_{\text{head}}} \mathcal{W}_i \sum_{j=1}^{N_{\text{key}}} \mathcal{A}_{ij} \cdot \mathcal{W}'_i x(p + \Delta p_{ij}) DeformAttn(q,p,x)=i=1NheadWij=1NkeyAijWix(p+Δpij)

我们可以把它拆解成三个步骤来理解:
第一步:去哪里找信息?(最关键的一步)
对应部分: p+Δpijp + \Delta p_{ij}p+Δpij

  • ppp (参考点): 这是你的目光当前盯着的中心位置。
  • Δpij\Delta p_{ij}Δpij (偏移量): 这是AI学出来的“聪明的一招”。它告诉AI:“不要死盯着中心,往左偏一点、往上偏一点,那边有更重要的信息。”
  • 合起来: AI 不再受限于固定的网格,而是可以自由地“变形”它的关注点,去捕捉物体形状的变化(比如一只跑动的猫,形状是不规则的)。

第二步:看到的信息重要吗?
对应部分: Aij⋅x(… )\mathcal{A}_{ij} \cdot x(\dots)Aijx()

  • x(… )x(\dots)x() 在刚才找到的那个偏移位置,提取出来的图像特征(看到的东西)。
  • Aij\mathcal{A}_{ij}Aij (注意力权重): 这是一个打分机制。AI 会判断:“刚才看到的这个点,对识别物体有多重要?”如果很重要,分数就高;如果是背景杂草,分数就低。

第三步:把所有线索凑起来
对应部分: ∑i⋯∑j…\sum_{i} \dots \sum_{j} \dotsij

  • 内层求和 (∑j\sum_{j}j): 针对一个中心点,AI 看了周围 KKK 个关键点,把它们看到的信息加权融合起来。
  • 外层求和 (∑i\sum_{i}i): “多头注意力(Multi-head)”。好比俗话说的“三个臭皮匠顶个诸葛亮”。这代表用了好几组不同的“眼睛”同时在看,有的关注颜色,有的关注轮廓,最后把大家看到的结果全部拼在一起(用 Wi\mathcal{W}_iWi 整合)。

3. 一句话总结
这个公式就是让 AI 学会像人眼一样“偷懒”且“精准”
它不再傻乎乎地看全图,而是基于一个参考点,自动学会向哪里偏移目光,抓取周围最有用的几个特征点,然后拼凑出最终的感知结果。

好处: 计算速度快了(不用看全图),而且对不规则形状的物体识别更准了(因为目光可以“变形”)。


2.2 基于摄像头的 3D 感知

以前的 3D 感知方法通常独立执行 3D 物体检测或地图分割任务。对于 3D 物体检测任务,早期的方法类似于 2D 检测方法 [1, 28, 49, 39, 53],通常基于 2D 边界框预测 3D 边界框。Wang 等人 [45] 遵循先进的 2D 检测器 FCOS [41],直接为每个对象预测 3D 边界框。DETR3D [47] 在 2D 图像中投影可学习的 3D 查询,然后采样相应的特征用于端到端 3D 边界框预测,无需 NMS 后处理。另一种解决方案是将图像特征转换为 BEV 特征,并从俯视图预测 3D 边界框。方法通过深度估计 [46] 或分类深度分布 [34] 的深度信息将图像特征转换为 BEV 特征。OFT [36] 和 ImVoxelNet [37] 将预定义的体素投影到图像特征上以生成场景的体素表示。最近,M2^22BEV [48] 进一步探索了基于 BEV 特征同时执行多个感知任务的可行性。

实际上,从多摄像头特征生成 BEV 特征在地图分割任务中得到了更广泛的研究 [32, 30]。一种直接的方法是通过逆透视映射(IPM)[35, 5] 将透视图转换为 BEV。此外,Lift-Splat [32] 基于深度分布生成 BEV 特征。方法 [30, 16, 9] 利用多层感知器来学习从透视图到 BEV 的转换。PYVA [51] 提出了一种交叉视图 Transformer,将前视单目图像转换为 BEV,但由于计算全局注意力机制 [42] 的成本,这种范式不适合融合多摄像头特征。除了空间信息外,以前的工作 [18, 38, 6] 还通过堆叠来自多个时间戳的 BEV 特征来考虑时间信息。堆叠 BEV 特征限制了固定持续时间内的可用时间信息,并带来额外的计算成本。在这项工作中,提出的时空 Transformer 通过考虑空间和时间线索生成当前时间的 BEV 特征,时间信息是通过 RNN 方式从先前的 BEV 特征中获得的,这仅带来很少的计算成本。


3. BEVFormer

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

3.1 整体架构

如图 2 所示,BEVFormer 有 6 个编码器层,每个层都遵循 Transformer 的传统结构 [42],除了三个定制设计,即 BEV 查询、空间交叉注意力和时序自注意力。具体来说,BEV 查询是网格状的可学习参数,旨在通过注意力机制从多摄像头视图查询 BEV 空间中的特征。空间交叉注意力和时序自注意力是与 BEV 查询一起工作的注意力层,用于根据 BEV 查询查找和聚合来自多摄像头图像的空间特征以及来自历史 BEV 的时间特征。

在这里插入图片描述

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

在推理过程中,在时间戳 ttt,我们将多摄像头图像输入主干网络(例如 ResNet-101 [15]),并获得不同摄像头视图的特征 Ft={Fti}i=1NviewF_t = \{F^i_t\}_{i=1}^{N_{\text{view}}}Ft={Fti}i=1Nview,其中 FtiF^i_tFti 是第 iii 个视图的特征,NviewN_{\text{view}}Nview 是摄像头视图的总数。同时,我们保留了前一时间戳 t−1t-1t1 的 BEV 特征 Bt−1B_{t-1}Bt1。在每个编码器层中,我们首先使用 BEV 查询 QQQ 通过时序自注意力从先前的 BEV 特征 Bt−1B_{t-1}Bt1 查询时间信息。然后我们使用 BEV 查询 QQQ 通过空间交叉注意力从多摄像头特征 FtF_tFt 查询空间信息。在前馈网络 [42] 之后,编码器层输出细化的 BEV 特征,这是下一个编码器层的输入。经过 6 个堆叠的编码器层后,生成当前时间戳 ttt 的统一 BEV 特征 BtB_tBt。以 BEV 特征 BtB_tBt 为输入,3D 检测头和地图分割头预测感知结果,如 3D 边界框和语义地图。

3.2 BEV 查询

我们预定义一组网格状的可学习参数 Q∈RH×W×CQ \in \mathbb{R}^{H \times W \times C}QRH×W×C 作为 BEVFormer 的查询,其中 H,WH, WH,W 是 BEV 平面的空间形状。具体来说,位于 QQQp=(x,y)p=(x, y)p=(x,y) 处的查询 Qp∈R1×CQ_p \in \mathbb{R}^{1 \times C}QpR1×C 负责 BEV 平面中的相应网格单元区域。BEV 平面中的每个网格单元对应于 sss 米的现实世界尺寸。BEV 特征的中心默认对应于自车的位置。遵循惯例 [14],我们在将 BEV 查询 QQQ 输入 BEVFormer 之前向其添加可学习的位置嵌入。

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

由于多摄像头 3D 感知(包含 NviewN_{\text{view}}Nview 个摄像头视图)的大输入规模,普通多头注意力 [42] 的计算成本极高。因此,我们基于可变形注意力 [56] 开发了空间交叉注意力,这是一种资源高效的注意力层,其中每个 BEV 查询 QpQ_pQp 仅与其跨摄像头视图的感兴趣区域交互。然而,可变形注意力最初是为 2D 感知设计的,因此 3D 场景需要进行一些调整。

如图 2 (b) 所示,我们首先将 BEV 平面上的每个查询提升为柱状查询 [20],从柱体中采样 NrefN_{\text{ref}}Nref 个 3D 参考点,然后将这些点投影到 2D 视图。对于一个 BEV 查询,投影的 2D 点只能落在某些视图上,而其他视图未被命中。这里,我们将命中的视图称为 Vhit\mathcal{V}_{\text{hit}}Vhit。之后,我们将这些 2D 点视为查询 QpQ_pQp 的参考点,并在这些参考点周围从命中视图 Vhit\mathcal{V}_{\text{hit}}Vhit 中采样特征。最后,我们对采样特征进行加权求和作为空间交叉注意力的输出。空间交叉注意力 (SCA) 的过程可以公式化为:
SCA(Qp,Ft)=1∣Vhit∣∑i∈Vhit∑j=1NrefDeformAttn(Qp,P(p,i,j),Fti),(2) \text{SCA}(Q_p, F_t) = \frac{1}{|\mathcal{V}_{\text{hit}}|} \sum_{i \in \mathcal{V}_{\text{hit}}} \sum_{j=1}^{N_{\text{ref}}} \text{DeformAttn}(Q_p, \mathcal{P}(p, i, j), F^i_t), \quad (2) SCA(Qp,Ft)=Vhit1iVhitj=1NrefDeformAttn(Qp,P(p,i,j),Fti),(2)
其中 iii 索引摄像头视图,jjj 索引参考点,NrefN_{\text{ref}}Nref 是每个 BEV 查询的总参考点数。FtiF^i_tFti 是第 iii 个摄像头视图的特征。对于每个 BEV 查询 QpQ_pQp,我们使用投影函数 P(p,i,j)\mathcal{P}(p, i, j)P(p,i,j) 获取第 iii 个视图图像上的第 jjj 个参考点。

接下来,我们介绍如何从投影函数 P\mathcal{P}P 获取视图图像上的参考点。我们首先计算对应于位于 QQQp=(x,y)p=(x, y)p=(x,y) 处的查询 QpQ_pQp 的真实世界位置 (x′,y′)(x', y')(x,y),如公式 3 所示。
x′=(x−W2)×s;y′=(y−H2)×s,(3) x' = (x - \frac{W}{2}) \times s; \quad y' = (y - \frac{H}{2}) \times s, \quad (3) x=(x2W)×s;y=(y2H)×s,(3)
其中 H,WH, WH,W 是 BEV 查询的空间形状,sss 是 BEV 网格的分辨率大小,(x′,y′)(x', y')(x,y) 是以自车位置为原点的坐标。在 3D 空间中,位于 (x′,y′)(x', y')(x,y) 的物体将出现在 z 轴的高度 z′z'z 处。因此我们预定义一组锚点高度 {zj′}j=1Nref\{z'_j\}_{j=1}^{N_{\text{ref}}}{zj}j=1Nref 以确保我们能够捕获出现在不同高度的线索。这样,对于每个查询 QpQ_pQp,我们获得一柱 3D 参考点 (x′,y′,zj′)j=1Nref(x', y', z'_j)_{j=1}^{N_{\text{ref}}}(x,y,zj)j=1Nref。最后,我们通过摄像头的投影矩阵将 3D 参考点投影到不同的图像视图,这可以写成:
P(p,i,j)=(xij,yij) \mathcal{P}(p, i, j) = (x_{ij}, y_{ij}) P(p,i,j)=(xij,yij)
where zij⋅[xijyij1]T=Ti⋅[x′y′zj′1]T.(4) \text{where } z_{ij} \cdot \begin{bmatrix} x_{ij} & y_{ij} & 1 \end{bmatrix}^T = T_i \cdot \begin{bmatrix} x' & y' & z'_j & 1 \end{bmatrix}^T. \quad (4) where zij[xijyij1]T=Ti[xyzj1]T.(4)
这里,P(p,i,j)\mathcal{P}(p, i, j)P(p,i,j) 是从第 jjj 个 3D 点 (x′,y′,zj′)(x', y', z'_j)(x,y,zj) 投影到第 iii 个视图上的 2D 点,Ti∈R3×4T_i \in \mathbb{R}^{3 \times 4}TiR3×4 是已知的第 iii 个摄像头的投影矩阵。

3.4 时序自注意力 (Temporal Self-Attention)

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

给定当前时间戳 ttt 的 BEV 查询 QQQ 和保存在时间戳 t−1t-1t1 的历史 BEV 特征 Bt−1B_{t-1}Bt1,我们首先根据自车运动将 Bt−1B_{t-1}Bt1 对齐到 QQQ,使得同一网格处的特征对应于相同的真实世界位置。这里,我们将对齐的历史 BEV 特征 Bt−1B_{t-1}Bt1 记为 Bt−1′B'_{t-1}Bt1。然而,从时间 t−1t-1t1ttt,可移动物体在现实世界中以各种偏移量移动。在不同时间的 BEV 特征之间构建相同对象的精确关联具有挑战性。因此,我们通过时序自注意力 (TSA) 层对特征之间的这种时间连接进行建模,该层可以写成如下:
TSA(Qp,{Q,Bt−1′})=∑V∈{Q,Bt−1′}DeformAttn(Qp,p,V),(5) \text{TSA}(Q_p, \{Q, B'_{t-1}\}) = \sum_{V \in \{Q, B'_{t-1}\}} \text{DeformAttn}(Q_p, p, V), \quad (5) TSA(Qp,{Q,Bt1})=V{Q,Bt1}DeformAttn(Qp,p,V),(5)
其中 QpQ_pQp 表示位于 p=(x,y)p=(x, y)p=(x,y) 的 BEV 查询。此外,与普通的可变形注意力不同,时序自注意力中的偏移量 Δp\Delta pΔp 是由 QQQBt−1′B'_{t-1}Bt1 的串联预测的。特别是,对于每个序列的第一个样本,时序自注意力将退化为没有时间信息的自注意力,我们将 BEV 特征 {Q,Bt−1′}\{Q, B'_{t-1}\}{Q,Bt1} 替换为重复的 BEV 查询 {Q,Q}\{Q, Q\}{Q,Q}

与 [18, 38, 6] 中简单堆叠 BEV 相比,我们的时序自注意力可以更有效地模拟长时序依赖性。BEVFormer 从先前的 BEV 特征中提取时间信息,而不是多次堆叠 BEV 特征,因此需要较少的计算成本并受到较少的干扰信息影响。

3.5 BEV 特征的应用

由于 BEV 特征 Bt∈RH×W×CB_t \in \mathbb{R}^{H \times W \times C}BtRH×W×C 是通用的 2D 特征图,可用于各种自动驾驶感知任务,因此可以基于 2D 感知方法 [56, 22] 并稍作修改来开发 3D 物体检测和地图分割任务头。

对于 3D 物体检测,我们基于 2D 检测器 Deformable DETR [56] 设计了一个端到端的 3D 检测头。修改包括使用单尺度 BEV 特征 BtB_tBt 作为解码器的输入,预测 3D 边界框和速度而不是 2D 边界框,并且仅使用 L1L_1L1 损失来监督 3D 边界框回归。利用检测头,我们的模型可以端到端地预测 3D 边界框和速度,无需 NMS 后处理。

对于地图分割,我们基于 2D 分割方法 Panoptic SegFormer [22] 设计了一个地图分割头。由于基于 BEV 的地图分割基本上与普通语义分割相同,我们利用 [22] 的掩码解码器和类别固定查询来针对每个语义类别,包括汽车、车辆、道路(可驾驶区域)和车道。

3.6 实施细节

训练阶段。 对于时间戳 ttt 的每个样本,我们从过去 2 秒的连续序列中随机采样另外 3 个样本,这种随机采样策略可以增强自车运动的多样性 [57]。我们将这四个样本的时间戳记为 t−3,t−2,t−1t-3, t-2, t-1t3,t2,t1ttt。对于前三个时间戳的样本,它们负责循环生成 BEV 特征 {Bt−3,Bt−2,Bt−1}\{B_{t-3}, B_{t-2}, B_{t-1}\}{Bt3,Bt2,Bt1},此阶段不需要梯度。对于时间戳 t−3t-3t3 的第一个样本,没有先前的 BEV 特征,时序自注意力退化为自注意力。在时间 ttt,模型基于多摄像头输入和先前的 BEV 特征 Bt−1B_{t-1}Bt1 生成 BEV 特征 BtB_tBt,使得 BtB_tBt 包含跨越这四个样本的时间和空间线索。最后,我们将 BEV 特征 BtB_tBt 输入检测和分割头并计算相应的损失函数。

推理阶段。 在推理阶段,我们按时间顺序评估视频序列的每一帧。前一时间戳的 BEV 特征被保存并用于下一帧,这种在线推理策略具有时间效率且符合实际应用。虽然我们利用了时间信息,但我们的推理速度仍与其他方法 [45, 47] 相当。


4. 实验

4.1 数据集

我们在两个具有挑战性的公共自动驾驶数据集上进行了实验,即 nuScenes 数据集 [4] 和 Waymo 开放数据集 [40]。

nuScenes 数据集 [4] 包含 1000 个场景,每个场景时长约 20 秒,关键样本以 2Hz 的频率进行注释。每个样本由来自 6 个摄像头的 RGB 图像组成,具有 360° 水平视场。对于检测任务,有来自 10 个类别的 140 万个带注释的 3D 边界框。我们遵循 [32] 中的设置执行 BEV 分割任务。该数据集还提供了检测任务的官方评估指标。nuScenes 的平均精度 (mAP) 是使用地平面上的中心距离而不是 3D 交并比 (IoU) 计算的,以匹配预测结果和真值。nuScenes 指标还包含 5 种类型的真阳性指标 (TP metrics),包括 ATE、ASE、AOE、AVE 和 AAE,分别用于测量平移、比例、方向、速度和属性误差。nuScenes 还定义了 nuScenes 检测分数 (NDS) 为 NDS=110[5mAP+∑mTP∈TP(1−min⁡(1,mTP))]\text{NDS} = \frac{1}{10} [5\text{mAP} + \sum_{\text{mTP} \in \mathbb{TP}} (1 - \min(1, \text{mTP}))]NDS=101[5mAP+mTPTP(1min(1,mTP))] 以捕获 nuScenes 检测任务的所有方面。

Waymo 开放数据集 [40] 是一个大规模自动驾驶数据集,包含 798 个训练序列和 202 个验证序列。请注意,Waymo 提供的每帧五张图像仅具有约 252° 的水平视场,但提供的注释标签围绕自车 360°。我们删除了在训练和验证集中任何图像上均不可见的这些边界框。由于 Waymo 开放数据集规模大且频率高 [34],我们使用训练分割的子集,通过每 5 帧从训练序列中采样一次,并且仅检测车辆类别。我们使用 0.5 和 0.7 的阈值进行 3D IoU 计算 Waymo 数据集上的 mAP。

4.2 实验设置

遵循以前的方法 [45, 47, 31],我们采用两种类型的主干:从 FCOS3D [45] 检查点初始化的 ResNet101-DCN [15, 12],以及从 DD3D [31] 检查点初始化的 VoVnet-99 [21]。默认情况下,我们利用 FPN [23] 输出的多尺度特征,大小为 1/16, 1/32, 1/64,维度为 C=256C=256C=256。对于 nuScenes 上的实验,BEV 查询的默认大小为 200×200200 \times 200200×200,感知范围在 X 和 Y 轴上为 [−51.2m,51.2m][-51.2m, 51.2m][51.2m,51.2m],BEV 网格的分辨率大小 sss 为 0.512m。我们对 BEV 查询采用可学习的位置嵌入。BEV 编码器包含 6 个编码器层,并在每层中不断细化 BEV 查询。每个编码器层的输入 BEV 特征 Bt−1B_{t-1}Bt1 是相同的,不需要梯度。对于每个局部查询,在由可变形注意力机制实现的空间交叉注意力模块期间,它对应于 3D 空间中 Nref=4N_{\text{ref}}=4Nref=4 个目标点,预定义的高度锚点从 -5 米到 3 米均匀采样。对于 2D 视图特征上的每个参考点,我们围绕该参考点为每个头使用四个采样点。默认情况下,我们训练模型 24 个 epoch,学习率为 2×10−42 \times 10^{-4}2×104

对于 Waymo 上的实验,我们更改了一些设置。由于 Waymo 的摄像头系统无法捕捉自车周围的整个场景 [40],BEV 查询的默认空间形状为 300×220300 \times 220300×220,感知范围在 X 轴上为 [−35.0m,75.0m][-35.0m, 75.0m][35.0m,75.0m],在 Y 轴上为 [−75.0m,75.0m][-75.0m, 75.0m][75.0m,75.0m]。每个网格的分辨率大小 sss 为 0.5m。自车位于 BEV 的 (70, 150) 处。

基线。 为了公平地消除任务头的影响并比较其他 BEV 生成方法,我们使用 VPN [30] 和 Lift-Splat [32] 替换我们的 BEVFormer,并保持任务头和其他设置相同。我们还将 BEVFormer 改编为一个静态模型,称为 BEVFormer-S,通过将时序自注意力调整为不使用历史 BEV 特征的普通自注意力。

4.3 3D 物体检测结果

我们在检测任务上训练我们的模型,仅使用检测头,以便与以前的最先进的 3D 对象检测方法进行公平比较。在表 1 和表 2 中,我们报告了我们在 nuScenes 测试和验证集上的主要结果。我们的方法在 val 集上以超过 9.2 个点的优势优于之前的最佳方法 DETR3D [47](51.7% NDS vs. 42.5% NDS),在公平的训练策略和相当的模型规模下。在 test 集上,我们的模型在没有任何花哨技巧的情况下实现了 56.9% 的 NDS,比 DETR3D(47.9% NDS)高出 9.0 个点。我们的方法甚至可以实现与一些基于 LiDAR 的基线相当的性能,如 SSN (56.9% NDS) [55] 和 PointPainting (58.1% NDS) [43]。

以前的基于摄像头的方法 [47, 31, 45] 几乎无法估计速度,我们的方法证明了时间信息在多摄像头检测的速度估计中起着至关重要的作用。BEVFormer 在 test 集上的平均速度误差 (mAVE) 为 0.378 m/s,以巨大的优势优于其他基于摄像头的方法,并接近基于 LiDAR 的方法 [43] 的性能。

我们还在 Waymo 上进行了实验,如表 3 所示。遵循 [34],我们使用 0.7 和 0.5 的 IoU 标准评估车辆类别。此外,我们还采用 nuScenes 指标来评估结果,因为基于 IoU 的指标对于基于摄像头的方法来说太具有挑战性了。由于很少有基于摄像头的工作在 Waymo 上报告结果,我们也使用 DETR3D 的官方代码在 Waymo 上进行实验以进行比较。我们可以观察到,BEVFormer 在 LEVEL_1 和 LEVEL_2 难度下(IoU 标准为 0.5),其航向信息平均精度 (APH) [40] 分别优于 DETR3D 6.0% 和 2.5%。在 nuScenes 指标上,BEVFormer 以 3.2% NDS 和 5.2% AP 的优势优于 DETR3D。我们还在前置摄像头上进行了实验,将 BEVFormer 与 CaDNN [34] 进行比较,CaDNN 是一种报告了 Waymo 数据集结果的单目 3D 检测方法。BEVFormer 在 LEVEL_1 和 LEVEL_2 难度下(IoU 标准为 0.5),APH 分别优于 CaDNN 13.3% 和 11.2%。


在这里插入图片描述
表 1:nuScenes test 集上的 3D 检测结果。

在这里插入图片描述
表 2:nuScenes val 集上的 3D 检测结果。

4.4 多任务感知结果

我们在检测和分割头上训练我们的模型,以验证我们模型的多任务学习能力,结果如表 4 所示。在相同设置下比较不同的 BEV 编码器时,BEVFormer 在所有任务上的表现都更高,除了道路分割结果与 BEVFormer-S 相当。例如,在联合训练下,BEVFormer 在检测任务上比 Lift-Splat* [32] 高出 11.0 个点(52.0% NDS vs. 41.0% NDS),在车道分割上 IoU 高出 5.6 个点(23.9% vs. 18.3%)。与单独训练任务相比,多任务学习通过共享更多模块节省了计算成本并减少了推理时间,包括主干和 BEV 编码器。在本文中,我们表明由我们的 BEV 编码器生成的 BEV 特征可以很好地适应不同的任务,并且具有多任务头的模型训练在检测任务和车辆分割上表现得更好。然而,联合训练的模型在道路和车道分割上的表现不如单独训练的模型,这是多任务学习中称为负迁移(negative transfer)[11, 13] 的常见现象。

在这里插入图片描述
表 3:Waymo val 集上的 3D 检测结果(Waymo 评估指标和 nuScenes 评估指标)。

在这里插入图片描述
表 4:nuScenes val 集上的 3D 检测和地图分割结果。

4.5 消融研究

为了深入研究不同模块的影响,我们在 nuScenes val 集上使用检测头进行了消融实验。更多消融研究见附录。

空间交叉注意力的有效性。 为了验证空间交叉注意力的效果,我们使用 BEVFormer-S 进行消融实验,以排除时间信息的干扰,结果如表 5 所示。默认的空间交叉注意力基于可变形注意力。为了比较,我们还构建了另外两个具有不同注意力机制的基线:(1)使用全局注意力替换可变形注意力;(2)使每个查询仅与其参考点交互而不是周围的局部区域,这类似于以前的方法 [36, 37]。为了更广泛的比较,我们还将 BEVFormer 替换为 VPN [30] 和 Lift-Splat [32] 提出的 BEV 生成方法。我们可以观察到,可变形注意力在相当的模型规模下显著优于其他注意力机制。全局注意力消耗太多的 GPU 内存,点交互的感受野有限。稀疏注意力实现了更好的性能,因为它与先验确定的感兴趣区域交互,平衡了感受野和 GPU 消耗。

时序自注意力的有效性。 从表 1 和表 4 中,我们可以观察到 BEVFormer 在相同设置下以显著的改进优于 BEVFormer-S,特别是在具有挑战性的检测任务上。时间信息的效果主要体现在以下方面:(1)时间信息的引入极大地有利于速度估计的准确性;(2)对象的预测位置和方向利用时间信息更加准确;(3)我们在严重遮挡的物体上获得了更高的召回率,因为时间信息包含过去对象的线索,如图 3 所示。为了评估 BEVFormer 在具有不同遮挡水平的物体上的性能,我们将 nuScenes 的验证集根据 nuScenes 提供的官方可见性标签分为四个子集。在每个子集中,我们还计算了所有类别在匹配过程中中心距离阈值为 2 米的平均召回率。

在这里插入图片描述
表 5:nuScenes val 集上不同 BEV 编码器方法的检测结果。

在这里插入图片描述
图 3:不同可见性子集的检测结果。 (a): 增强了时间信息,BEVFormer 在所有子集上都有更高的召回率,尤其是在可见度最低 (0-40%) 的子集上。(b), (d) 和 (e): 时间信息有利于平移、方向和速度的准确性。© 和 (f): 不同方法之间的比例和属性误差差距很小。时间信息对物体比例预测没有帮助。

最大召回率对于所有比较方法都是 300,以公平比较召回率。在只有 0-40% 的物体可见的子集上,BEVFormer 的平均召回率优于 BEVFormer-S 和 DETR3D 超过 6.0% 的幅度。

模型规模和延迟。 我们在表 6 中比较了不同配置的性能和延迟。我们在三个方面对 BEVFormer 的规模进行了消融,包括是否使用多尺度视图特征、BEV 查询的形状以及层数,以验证性能和推理延迟之间的权衡。我们可以观察到,使用一个编码器层的配置 C 在 BEVFormer 中实现了 50.1% 的 NDS,并将 BEVFormer 的延迟从原来的 130ms 降低到 25ms。配置 D 具有单尺度视图特征、更小的 BEV 尺寸和仅 1 个编码器层,在推理过程中仅消耗 7ms,尽管与默认配置相比损失了 3.9 个点。然而,由于多视图图像输入,限制效率的瓶颈在于主干,高效的自动驾驶主干值得深入研究。总的来说,我们的架构可以适应各种模型规模,并且可以灵活地权衡性能和效率。
在这里插入图片描述
表 6:nuScenes val 集上不同模型配置的延迟和性能。

4.6 可视化结果
我们在图 4 中展示了一个复杂场景的检测结果。除了在小物体和远距离物体上的一些错误外,BEVFormer 产生了令人印象深刻的结果。更多定性结果在附录中提供。
在这里插入图片描述
图 4:BEVFormer 在 nuScenes val 集上的可视化结果。


5. 讨论与结论

在这项工作中,我们提出了 BEVFormer 从多摄像头输入生成鸟瞰图特征。BEVFormer 可以有效地聚合空间和时间信息,并生成强大的 BEV 特征,同时支持 3D 检测和地图分割任务。

局限性。 目前,基于摄像头的方法在效果和效率上与基于 LiDAR 的方法仍有一定差距。从 2D 信息准确推断 3D 位置仍然是基于摄像头的方法面临的长期挑战。

广泛影响。 BEVFormer 证明了使用来自多摄像头输入的时空信息可以显著提高视觉感知模型的性能。BEVFormer 展示的优势,如更准确的速度估计和低可见度物体的更高召回率,对于构建更好、更安全的自动驾驶系统及其他领域至关重要。我们相信 BEVFormer 只是后续更强大的视觉感知方法的基线,基于视觉的感知系统仍有巨大的潜力有待探索。


Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐