📄 论文信息

  • 标题BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers(基于时空 Transformer 从多摄像头图像学习鸟瞰图表示)
  • 团队:香港大学 + 商汤科技 + 南京大学(Zhiqi Li, Wenhai Wang, Hongyang Li, Enze Xie, Chonghao Sima, Tong Lu, Jifeng Dai 等)
  • arXiv:2203.17270(ECCV 2022)
  • 一句话总结:用一组可学习的 BEV queries,通过空间交叉注意力从多摄像头"掏"特征、再用时间自注意力融合历史帧,纯视觉达到 56.9% NDS,把纯摄像头感知拉到了接近 LiDAR 的水平。

🤔 要解决什么问题?为什么是 BEV?

自动驾驶的下游模块(预测、规划、控制)几乎都默认在一个统一的俯视图(Bird’s-Eye-View, BEV) 空间里工作——障碍物是 BEV 框、地图是 BEV 矢量、轨迹是 BEV 坐标。但传感器原始输入是多个透视相机的 2D 图像,如何把它们"搬"到一个统一的 BEV 空间,是纯视觉感知的核心难题。

BEVFormer 之前,主流方案有两条,但都不够好:

方案做法问题
LSS(Lift-Splat-Shoot)类预测每像素深度再"拍"到 BEV显式深度预测难、信息损失大
2D 检测后投影各相机做 2D 检测再投到 BEV丢失几何关系、多相机难融合

BEVFormer 的判断:与其显式预测深度,不如用 Transformer 的注意力机制,让 BEV query 主动去多摄像头里"查询"自己需要的特征——这把"图像转 BEV"变成一个可端到端学习的纯数据驱动过程。

BEVFormer 整体架构:BEV queries 通过空间交叉注意力从多摄像头提取特征,再通过时间自注意力融合历史 BEV(来源:arXiv:2203.17270)


💡 核心思想:BEV queries + 时空注意力

BEVFormer 的整体框架可以用一句话概括:一组网格状的 BEV queries,既"横跨空间"去各摄像头取特征,又"纵跨时间"去历史帧取信息,最终汇聚成一个丰富的 BEV 表示。

BEV queries:可学习的俯视"网格"

把自车周围的一块 BEV 区域离散成一个 $H_B \times W_B$ 的网格,每个网格点对应一个可学习的 query $Q_p$。每个 query 在几何上对应 BEV 平面上的一个参考点,代表"我要查询这个位置有没有东西"。

关键设计:BEV query 背后是柱状(pillar)参考点——不是 BEV 平面上的一个点,而是一根立柱(沿高度方向采样多个 3D 点)。这是因为同一个 BEV 位置在不同高度可能是不同物体(如头顶标牌 vs 地面锥桶),用 pillar 才能捕捉高度信息。

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

每个 BEV query 把自己的 pillar 参考点投影到各摄像头图像,只在投影点附近的小邻域做 deformable attention 取特征:

$$\text{SCA}(Q_p) = \frac{1}{|\mathcal{V}_p|}\sum_{i \in \mathcal{V}_p}\sum_{j=1}^{N_{\text{ref}}} \text{DeformAttn}(Q_p,\ \mathbf{P}_{ij},\ F_i)$$

其中 $\mathcal{V}p$ 是能"看到"该 pillar 的相机集合,$\mathbf{P}{ij}$ 是参考点在第 $i$ 个相机上的 2D 投影,$F_i$ 是该相机的特征图。用 deformable attention(可变形注意力)是为了避免全局注意力的平方开销,只在参考点附近采样,又快又准。

直觉:每个 BEV query 像一个"侦察兵",拿着自己的 3D 坐标去问各个相机"你那边在我这个位置看到啥了",相机只回报相关区域的特征,高效又精准。

参考点与可学习偏移:deformable 的精髓

deformable attention 并非在参考点处硬采样一个像素,而是采样参考点周围 4 个可学习偏移点的加权特征,权重也由网络预测。这让每个 BEV 位置的感受野自适应——远处稀疏处可以"够"得更远,近处密集处可以聚焦更精细。再加上多尺度图像特征(FPN 的 C3/C4/C5 层),近处细节与远处语义都能兼顾。

更关键的是,整套 3D→2D 投影完全可微:参考点经相机内外参投影到像素坐标,梯度能一路回传到图像 backbone,让视觉特征学习"主动对齐"几何约束。这正是 BEVFormer 比 LSS 显式深度预测更优雅的地方——它不预测深度,而是让网络自己学出"该往哪看"

时间自注意力(Temporal Self-Attention, TSA)

这是 BEVFormer 区别于一般 BEV 方法的杀手锏。历史帧的 BEV 特征蕴含了运动线索(他车位移、自车补偿后的对齐信息),对速度估计和遮挡恢复至关重要。

TSA 把上一帧的 BEV 特征 $B_{t-1}$ 按自车运动做对齐(ego-motion compensation) 后,作为当前 query 的注意力 key/value:

$$\text{TSA}(Q_p) = \text{MultiheadAttn}(Q_p,\ \text{Align}(B_{t-1}))$$

这一步让模型不用显式光流就能感知运动——速度信息隐式地从"前后帧差异"里学出来。

自车运动对齐:TSA 生效的前提

TSA 里有一个容易被忽略却至关重要的细节:融合历史 BEV 前,必须先做自车运动补偿(ego-motion compensation)。因为自车在不断移动,上一帧的 BEV 坐标系和当前帧并不重合——如果不把历史 BEV 按位姿变换对齐到当前坐标系,时间注意力就是在"错位对照",反而引入噪声。

具体做法是用相邻帧间的自车位姿变换,把 $B_{t-1}$ 的每个网格平移旋转到当前时刻的坐标原点下,再送入 TSA。这一步把"几何一致性"显式注入了时序融合,也是 BEVFormer 速度估计能大幅提升的底层原因——对齐后的前后帧差异,恰好编码了他车的真实运动

模块作用类比
BEV queries网格化俯视表示“棋盘格”
SCA跨空间取多摄像头特征“侦察兵去各相机采集”
TSA跨时间融合历史 BEV“回看上一帧对照”

🏗️ 与 DETR3D / LSS 的关键区别

维度DETR3DLSSBEVFormer
query 来源3D 目标 queryBEV 网格 query
深度建模隐式显式预测隐式(注意力学习)
时序融合✅ TSA
任务支持3D 检测多任务3D 检测 + 地图分割
注意力类型deformabledeformable SCA + TSA

BEVFormer 的独特性在于:它把 BEV 当成一个统一的"中间表示"来学,而非检测的副产品——这种"先建 BEV,再接各种任务头"的设计,让一个 backbone 能同时服务于 3D 检测、地图分割、甚至后续的规划,极大增强了通用性。


🧪 任务与输出

BEVFormer 学到的 BEV 表示 $B_t$ 可以直接接各种下游头:

  • 3D 目标检测:用 Deformable DETR 风格的检测头,在 BEV 上预测 3D 框(位置、尺寸、朝向、速度、类别)
  • 地图分割:在 BEV 上分割可行驶区域、车道线、人行横道等语义要素

这种一图多用的设计,是后续 UniAD、VAD 等端到端框架把感知和规划打通的基石——BEV 成了感知与下游之间的"通用语"

检测头与地图头:统一表示上的多任务

具体到任务实现,BEVFormer 在共享的 BEV 特征 $B_t$ 上接了两个并行头:

  • 3D 检测头:采用 Deformable DETR 风格的迭代式框精修,一组目标 query 从 BEV 特征里采样、不断调整 3D 框的中心、尺寸、朝向,并额外回归速度——速度信息正来自 TSA 融合的历史帧运动线索
  • 地图分割头:在 BEV 网格上做逐像素的语义分割,输出可行驶区域、车道线、人行横道等掩码

这种共享主干 + 多任务头的设计,让一次前向就能同时产出"有谁、在哪、路咋走"的全部信息。更重要的是,多任务监督互相增益:检测任务强迫 BEV 关注动态目标,分割任务强迫 BEV 理解静态路网,两者协同让 BEV 表示比单任务训练时更丰富、更结构化。这一思想后来被 UniAD 发扬光大,把轨迹预测、占用预测、规划统统挂在同一个表示上,形成了完整的端到端闭环。


📊 实验结果:纯视觉逼近 LiDAR

BEVFormer 在 nuScenes 上交出了惊艳答卷:

BEVFormer 在 nuScenes 上的性能对比,纯视觉方法达到接近 LiDAR 基线的水平(来源:arXiv:2203.17270)

指标关键数字
NDS(test)56.9%,比当时 SOTA 高 9.0 个点
与 LiDAR 对比on par(持平)——纯视觉首次逼近激光雷达
速度估计显著改善(得益于 TSA 的时序线索)
低能见度召回明显提升(历史帧弥补当前帧遮挡)

几个关键消融结论:

  • 去掉 TSA:速度估计大幅退化——证明时间注意力是速度感知的关键来源
  • 去掉 pillar(只用单点):高度信息丢失,检测掉点
  • BEV 分辨率:越高越准,但算力越大,需权衡

⚙️ 工程要点与细节

要点说明
deformable attention避免 $O(N^2)$ 全局注意力,支撑高分辨率 BEV
ego-motion 对齐TSA 前必须按自车位姿变换历史 BEV,否则时空错位
多尺度图像特征用 FPN/ResNet 多层特征,兼顾近处细节与远处语义
可微投影3D→2D 投影要可微,梯度才能回传到图像 backbone

⚠️ 局限性与后续演进

BEVFormer 并非终点,它也开启了 BEV 感知的全面繁荣:

  • 小目标 / 远距离:纯视觉在远距离小目标上仍弱于 LiDAR,这是传感器物理特性的固有限制
  • 计算开销:时空注意力算力不低,车端实时部署需量化/蒸馏/剪枝等加速手段
  • 无显式深度:遇到罕见几何配置可能误判(后续 BEVDepth 等工作补强了深度监督,通过显式的深度监督信号让 BEV 特征的高度估计更准,弥补了 BEVFormer 纯隐式学习的不足)

后续工作沿着 BEVFormer 开创的方向持续推进:

方向代表工作
加强深度BEVDepth、SOLOFusion
多模态融合BEVFusion(摄像头 + LiDAR)
长期时序VideoBEV、Sparse4D-v3
稀疏 querySparse4D、StreamPETR(告别密集 BEV 网格)

即便后来稀疏 query 路线(Sparse4D、StreamPETR)兴起,BEVFormer 的密集 BEV 中间表示思想依然是理解所有时序多摄像头感知的基石,也是 UniAD 等端到端框架直接采用的感知骨干。可以说,没有 BEVFormer 把"多摄像头统一到 BEV"这件事做扎实,后来端到端框架里"感知-预测-规划一体化"的宏大叙事就失去了立身之本。


📝 个人思考

读 BEVFormer,最让我印象深刻的是它对 “用什么中间表示” 这个问题的回答。感知领域长期在"2D 检测后投影"和"显式深度估计"两条路上打转,BEVFormer 跳出来给了第三种答案:用一个可学习的 BEV 网格当 query,让注意力自己去图像里"捞"特征。这个设计漂亮在两处——一是把"图像转 BEV"这个几何问题彻底数据驱动化,不再依赖脆弱的显式深度预测;二是它把 BEV 当成统一的中间表示而非检测的副产品,于是一套感知结果能同时喂给检测、分割、规划,这种"通用语“思维直接奠定了后续端到端框架的架构基础。

第二点启发在 时序的价值被重新发现。TSA 这个看似简单的模块,其实是 BEVFormer 能逼近 LiDAR 的关键功臣——速度估计、低能见度召回的大幅提升都源于它。这提醒我们:自动驾驶是时序问题,单帧感知的天花板很低。从 BEVFormer 的 TSA,到后来的长期时序融合、世界模型对未来的推演,“时间"始终是感知与预测最强却最容易被忽视的维度。我倾向于认为,真正鲁棒的感知一定是时空联合的,BEVFormer 早在 2022 年就用一个 temporal self-attention 把这个判断写进了代码。

最后,BEVFormer 对整个端到端社区的辐射价值。UniAD、VAD、SparseDrive 这些后来的端到端框架,几乎都站在 BEVFormer 的肩膀上——因为 BEV 是感知到规划的天然桥梁。当我们今天讨论 VLA、世界模型这些更宏大的叙事时,不要忘了:底层那个把多摄像头图像干净地搬进俯视空间的机制,依然是这套大厦的地基。BEVFormer 之于自动驾驶感知,正如 ResNet 之于图像识别——它定义了一个时代的默认架构,而后来者只是在它的版图上不断精修与扩展。


📖 这是论文精读系列的第 22 篇。BEV 感知是端到端驾驶的地基,你认为稀疏 query 会彻底取代密集 BEV 吗?欢迎留言讨论。