一句话理解 BEV
BEV = 把多个摄像头的画面,统一"摊平"成一张俯视的鸟瞰图,让车在上帝视角下感知世界。
BEV(Bird’s Eye View,鸟瞰图)感知是过去几年自动驾驶视觉感知最重要的一次范式跃迁。它不再让每个摄像头各自为政地在 2D 图像上画框,而是把所有视角的图像特征"重投影"到一个统一的、以自车为中心的 3D/俯视空间里,在那里做检测、分割、预测。
理解 BEV 的关键在于它解决了一个根本矛盾:图像是透视的(近大远小、有遮挡),而驾驶决策需要的是度量空间(哪里有车、多远、多宽)。BEV 就是连接这两者的那座桥。
🚗 什么是 BEV,为什么自动驾驶需要它
什么是鸟瞰图
鸟瞰图就是从正上方往下看得到的俯视投影,类似于你在实时地图 App 里看到的"车辆位置示意图"。在自动驾驶里,BEV 通常是一个以自车为中心、覆盖周边几十米范围的栅格化网格(比如 200×200 个格子,每格 0.5 米),每个格子上挂一个特征向量。
为什么必须切换到 BEV 视角
早期的多摄像头感知是**“各自检测、后融合”**:每个相机独立跑一个 2D 检测器,再用后处理把跨相机的框拼起来。这种做法有一堆硬伤:
| 痛点 | 后融合 2D 检测的问题 | BEV 的解决方式 |
|---|---|---|
| 跨相机拼接难 | 同一辆车被前后两个相机看到,难以判断"是同一辆"还是"两辆" | 在统一 BEV 空间里自然重叠、天然去重 |
| 缺乏深度/距离 | 2D 框没有真实距离,需要额外估计深度 | BEV 网格本身就是度量空间,自带坐标 |
| 无法表达 3D | 框只有 (x,y,w,h),没有朝向、高度 | BEV 上可直接输出 3D 框(位置+朝向+尺寸) |
| 时序融合困难 | 在图像空间对齐多帧几乎不可能 | BEV 空间下多帧只需做平移/旋转对齐 |
| 下游不好用 | 规划、地图模块要自己再做一遍坐标变换 | BEV 特征可直接喂给下游所有任务 |
一句话总结:BEV 把感知从"看图说话"升级成"看地图办事",所有下游任务(检测、跟踪、建图、预测、规划)都能在同一个统一的度量空间里协同工作。这也是 UniAD、VAD 等端到端框架都把 BEV 特征作为统一中间表示的根本原因。
🔄 从 2D 图像到 3D BEV:两条主流路线
核心难题是:图像是 2D 的、透视的,怎么把它"变"成 3D 的 BEV? 这一步通常被称为 View Transformation(视角变换)。目前有两大流派。
路线一:LSS(Lift-Splat-Shoot)—— 显式几何投影
LSS(Philion & Fidler, ECCV 2020)是 BEV 感知的开山之作,思路非常直观,分三步:
- Lift(提升):对每个像素,预测一个深度分布(这个像素的物体可能在哪些深度上),把 2D 像素特征"拉升"成带深度的 3D 特征(实际是沿着相机射线的一组特征点)。
- Splat(洒落):用已知的相机内外参,把这些 3D 特征点投影(点云化)到 BEV 网格上做累积(类似 PointPillars 的池化),得到 BEV 特征图。
- Shoot(发射):在 BEV 特征图上跑常规的 2D 检测头(如 CenterPoint),输出 3D 检测框。
关键点:LSS 的"魔法"在于第一步——深度是隐式预测的。网络不用显式监督深度,但为了下游检测效果好,它自己学会了把每个像素放到正确的深度。后来 BEVDepth 发现,显式加一个深度监督(用 LiDAR 点云当深度 GT)能让效果大幅提升,这就是 BEVDepth 的核心贡献。
优点:几何关系清晰,可解释性强,容易扩展到多任务;缺点:深度预测不准会拖累整体,BEV 网格大时显存占用高。
路线二:BEVFormer —— Transformer 注意力采样
BEVFormer(Li et al., ECCV 2022)走了完全不同的路:不显式建栅格,而是用可学习的注意力去"查询"图像特征。
核心机制:
- BEV Queries:在 BEV 平面上初始化一组可学习的网格 query(比如 H×W 个),每个 query 代表 BEV 空间的一个位置。
- 空间交叉注意力(Spatial Cross-Attention, SCA):每个 BEV query 把自己(通过参考点)投影回各个相机图像上,去采样对应位置的特征。这相当于"逆向查询"——BEV 上的点主动去图像里找答案。
- 时间自注意力(Temporal Self-Attention, TSA):BEV query 还和历史帧的 BEV 特征做注意力,实现时序融合(这是 BEVFormer 的一个亮点)。
关键点:BEVFormer 不需要显式预测深度,而是用注意力机制让网络自己学会"从哪个像素、哪个深度采样"。它借助 Deformable Attention 把计算量压下来,做到可训练。
优点:精度高,时序融合自然,扩展性强;缺点:训练更难、更慢,对参数敏感,工程上不如 LSS 系直观。
⚔️ 多摄像头 BEV 融合:三大技术路线对比
随着 LSS 和 BEVFormer 奠定基础,后续工作迅速分化成三大阵营。理解它们的差异,是看懂 BEV 感知论文的关键。
| 维度 | LSS 派(显式几何) | Transformer 派(注意力查询) | 稀疏 Query 派(DETR3D 系) |
|---|---|---|---|
| 代表工作 | LSS, BEVDet, BEVDepth, BEVStitched | BEVFormer, PolarDETR, PETR/BEVFormer v2 | DETR3D, Sparse4D, Far3D |
| 视角变换核心 | 预测深度 → 投影洒落到密集 BEV 网格 | BEV query 反向采样图像特征 | 一组稀疏 3D object query 直接采样图像 |
| 是否建密集 BEV | 是(稠密网格) | 是(稠密 BEV query) | 否(只在目标位置算) |
| 深度建模 | 显式(可监督) | 隐式(注意力自学) | 隐式(位置编码 PE) |
| 时序融合 | 后加(BEVDet4D 拼接历史 BEV) | 原生支持(TSA) | 原生支持(query 携带历史) |
| 精度 | 中高(加深度监督后高) | 高 | 高(尤其长距离) |
| 速度/显存 | 显存吃紧(网格大) | 中等 | 最省(稀疏,可扩远距离) |
| 可解释性 | 强(几何清晰) | 中 | 中 |
| 适合任务 | 检测、占用、分割皆可 | 多任务统一 | 检测为主,规划友好 |
三大派系要点解读
LSS 派的精髓是"几何 + 深度"。BEVDet 第一个把 LSS 工程化跑通完整检测 pipeline;BEVDepth 加上显式深度监督,把 nuScenes 上的精度刷上一个台阶,成为工业界最爱用的基线之一。它们的劣势是密集 BEV 网格在远距离或大范围时显存爆炸。
Transformer 派的精髓是"端到端学习 + 时序"。BEVFormer 用注意力摆脱了对显式深度的依赖,且时序融合优雅,是研究界和部分车企(如 Tesla FSD 的早期方案思想接近)的选择。代价是训练慢、调参难。
稀疏 Query 派的精髓是"只算有用的地方"。DETR3D 开创性地用一组 3D object query 直接采样图像特征,不建密集 BEV,省算力、好扩远距离。Sparse4D(v1/v2/v3)进一步把稀疏做到极致,加入多层特征、时序、多任务,成为端到端框架(如 Sparse4D 配合规划)的宠儿。
💡 趋势判断:随着端到端和远距离感知的需求上升,稀疏 Query 派正在崛起——它和下游规划任务的 query 接口天然契合,显存友好,是当前最被看好的方向之一。
⏳ 时序融合:让 BEV 感知更稳定
单帧 BEV 有个老问题:速度估计难、遮挡物体"突然出现"、小目标抖动。解决方案是时序融合——把多帧 BEV 信息对齐后聚合。
为什么要时序融合
- 估速度:单帧只能看到"车在哪",多帧才能算出"车往哪开、多快"。
- 补遮挡:上一帧能看到的车,这一帧被别的车挡住了,时序能让它"不丢"。
- 稳输出:多帧平均能让检测框不抖,提升下游规划稳定性。
主流时序融合方法
| 方法 | 代表工作 | 思路 | 特点 |
|---|---|---|---|
| BEV 特征拼接 | BEVDet4D | 把历史帧 BEV 按自车运动平移旋转对齐到当前帧,拼接后送检测头 | 简单直接,LSS 系常用 |
| 时间自注意力 | BEVFormer | 当前 BEV query 与对齐后的历史 BEV 做 Deformable Attention | 学习能力强,效果好 |
| Query 时序传播 | Sparse4D, StreamPETR | object query 跨帧传播,携带目标的"身份与历史" | 稀疏高效,天然做跟踪 |
| 递归/记忆机制 | BEVFormer+memory | 维护一个 BEV 记忆库,每帧更新 | 长时序,但调参复杂 |
关键技巧:无论哪种方法,自车位姿对齐(ego-motion alignment)都是前提——必须把历史帧的 BEV 按自车的平移和旋转"挪"到当前坐标系,否则多帧叠在一起就是一团乱麻。
🔗 BEV 在端到端中的角色
BEV 不只是感知的输出,更是现代端到端自动驾驶的统一中间表示。理解 BEV,才能看懂 UniAD、VAD 这些端到端框架为什么这么设计。
BEV 特征为什么是端到端的"黄金接口"
- 统一空间:感知、预测、规划都在同一个 BEV 度量空间里,无需反复坐标变换。
- 梯度贯通:规划 loss 能一路反传到 BEV 特征乃至图像 backbone,感知被迫为规划服务。
- 多任务共享:一张 BEV 特征图,同时供检测、建图、占用、预测、规划使用,省算力。
VAD / UniAD 如何用 BEV
| 框架 | BEV 的角色 | 关键设计 |
|---|---|---|
| UniAD | 密集 BEV 特征作为所有任务的共享底座 | track query 在 BEV 上做跟踪 → 运动 → 占用 → 规划,任务级串联 |
| VAD | 用向量化 BEV(车道线、agent 用矢量而非栅格)替代密集 BEV | 大幅降算力,2~4 倍加速,更易上车 |
| SparseDrive | 进一步全程稀疏,放弃密集 BEV | 稀疏 query 贯穿检测/预测/规划,效率最高 |
演进脉络:从 密集 BEV(UniAD) → 向量化 BEV(VAD) → 稀疏 Query(SparseDrive),端到端在 BEV 这一层上不断瘦身,本质是在**“空间分辨率"和"计算效率"之间找平衡**。
🏆 代表性工作一览
下面这张表把核心 BEV 感知工作按流派和贡献梳理清楚,方便查阅:
| 工作 | 流派 | 核心贡献 |
|---|---|---|
| LSS(2020) | LSS 派开山 | 提出 Lift-Splat 框架,首次把多相机图像转成 BEV,奠定几何投影路线 |
| BEVDet(2021) | LSS 派工程化 | 第一个把 LSS 跑通为完整 3D 检测 pipeline,验证可行性 |
| BEVDepth(2022) | LSS 派 + 深度监督 | 显式加 LiDAR 深度监督,精度大幅提升,成工业基线 |
| BEVFormer(2022) | Transformer 派 | 用 Spatial/Temporal Attention 做 BEV,原生时序,精度 SOTA |
| DETR3D(2021) | 稀疏 Query 先驱 | 用 3D object query 采样图像,跳过密集 BEV |
| PETR / PETRv2(2022) | Transformer 变体 | 用 3D 位置编码(PE)替代交叉注意力投影,简洁高效 |
| Sparse4D v1/v2/v3(2023-24) | 稀疏 Query 集大成 | 多层特征 + 时序 + 多任务,稀疏高效,端到端友好 |
| BEVStitched / SOLOFusion | LSS 派长时序 | 长时序融合,提升远距离与遮挡场景表现 |
| Far3D(2023) | 稀疏 Query 远距离 | 专门针对远距离检测优化 |
🛠️ 工程挑战:把 BEV 真正搬上车
BEV 在论文里很美,但上车要过几道硬关。
挑战一:内存/显存占用
密集 BEV 网格(比如 200×200×80 通道)加上多相机、多尺度、时序缓存,显存动辄几十 GB,车端芯片(Orin 等)很难承受。
解法:稀疏 Query(Sparse4D)、向量化表示(VAD)、降网格分辨率、混合精度、BEV 特征量化压缩、按需时序缓存(只存少量关键帧)。
挑战二:实时性
BEV 感知要求 10Hz 以上(<100ms),但 Transformer 注意力和多相机特征提取都极其耗算力。
解法:Deformable Attention 把注意力局部化、TensorRT 部署优化、模型蒸馏(大 BEV 老师蒸馏小 BEV 学生)、量化(INT8)、算子融合、削减历史帧数量。
挑战三:多传感器融合
纯视觉 BEV 在恶劣天气、夜间、远距离上不如 LiDAR,如何把 LiDAR/雷达和视觉 BEV 融合是上车刚需。
| 融合层级 | 做法 | 特点 |
|---|---|---|
| 结果级融合 | 各传感器各自出 BEV,再做后处理拼接 | 简单但损失信息 |
| 特征级融合 | 把 LiDAR BEV 特征和视觉 BEV 特征拼接/相加 | 主流,效果好 |
| 早期/点级融合 | 把图像特征贴到 LiDAR 点上再聚合 | 信息最全,计算重 |
代表工作如 BEVFusion(MIT/清华),就是把视觉 BEV 和 LiDAR BEV 在特征层对齐融合,做到"1+1>2”。
挑战四:标注成本
BEV 的 3D 标注(尤其跨相机一致的 3D 框、占用网格)极其昂贵。
解法:用 LiDAR 自动标注再迁移到纯视觉、弱监督/半监督、合成数据(世界模型生成场景并自动出标注)。
✅ 小结
BEV 感知是现代自动驾驶视觉感知的基石,它把"多相机各自为战"变成了"统一俯视视角协同作战"。记住三条主线:
- 视角变换是核心:两大流派——LSS(显式几何 + 深度) 和 BEVFormer(注意力查询),外加崛起的 稀疏 Query(DETR3D/Sparse4D)。
- 时序融合是关键:BEVDet4D 拼接、BEVFormer 时间注意力、Sparse4D 的 query 传播,都是为了让感知更稳、更快、更抗遮挡。
- BEV 是端到端的黄金接口:从 UniAD 的密集 BEV,到 VAD 的向量化,再到 SparseDrive 的全稀疏,BEV 这一层在不断瘦身,推动端到端走向可上车。
一句话点题:BEV 之于自动驾驶,就像"统一坐标系"之于多模块协作——没有它,一切都是散装的。
💡 这是「知识点拆解」系列的一篇。理解了 BEV,再回头看端到端(UniAD/VAD/SparseDrive)和世界模型,你会顺畅很多。下期见。