这大概是每个自动驾驶工程师都会问自己的灵魂三连。
我花了几个月预研的BEV算法,到底能不能落地?
看过的几十篇论文,有没有哪怕一篇能转化成产出?
如果产出换不来收益,我还要不要继续死磕?
很多事情都是环环相扣的。比如:分割大模型对小模型到底有没有性能提升?提升带来的投入产出比,划算吗?如果提升不大,是换方向还是继续死磕?那些熬夜啃的论文,有没有机会变成代码、变成模型、变成收益?
这些问题看着复杂,其实不过就是一个隐马尔可夫模型——状态在变,转移概率在变,观测值是你每次实验的mAP。你看不清全局,但你可以迭代。

一、为什么是BEV?从“近视眼”到“上帝视角”
自动驾驶感知算法这几年最大的范式转移,非BEV莫属。
BEV——Bird‘s-Eye-View,鸟瞰视角。说白了,就是把原本车载摄像头看到的“近大远小”的透视图像,通过算法转化成一个从天空往下看的俯视图。在这个视图里,车辆、行人、车道线都保持着真实世界的比例和相对位置,就像你玩《极品飞车》时的小地图一样。
为什么要费这个劲?因为传统的透视视角存在一个根本性问题:遮挡和尺度变化。离得近的物体占满画面,离得远的物体只有几个像素;前车挡住了后面的车,你就不知道后面到底还藏着什么。
而BEV空间天然是正交的、尺度统一的。在这个空间里,感知、预测、规划可以无缝衔接——感知输出的是鸟瞰图上的检测框,预测直接在这个图上做轨迹预测,规划也在这个图上找路径。整个pipeline从“各说各话”变成了“同一种语言”。
所以,BEV不是一种具体的算法,而是一种范式。它可以是纯视觉的BEV,纯激光雷达的BEV,也可以是视觉+雷达融合的BEV。具体走哪条路,取决于你的传感器配置、算力平台、成本约束。
现实世界就是这样:最SOTA的算法不一定是最好的,指标最高的也不一定是最能用的。
二、开山之作:Lift-Splat-Shoot,一个优雅的“视锥拍扁术”
要说纯视觉BEV感知,绕不开NVIDIA在2020年提出的 Lift-Splat-Shoot(LSS) 。这可以说是纯视觉BEV的鼻祖,后面但凡有用到“把2D图像特征提升到3D再拍扁到BEV空间”这种操作的,或多或少都受到了LSS的启发。
LSS的核心思想非常巧妙:对于每个图像像素,它不预测一个确定的深度,而是预测一条射线上一系列离散深度点的概率分布。这样每个像素就“lift”成了一个视锥——一个从相机光心向外发散、带有特征值的三维点云。然后把所有相机的视锥“splat”到一个栅格化的BEV平面上,每个BEV网格汇聚落在其中的特征点,再通过卷积做后续检测或分割。
这个思路优雅,但也存在两个硬伤:
计算耗时:splat过程中需要处理大量三维点,速度慢;
深度估计不准:深度分布没有真值监督,越远的地方效果越差。
我自己曾尝试过优化LSS。当时想法很简单:LSS是一个“即插即用”的模块,如果能在这个基础算法上做出改进,那所有基于LSS的BEV算法都能受益。这是一件有意义的事情。
至于后面发生了什么……就不说了,都是汗与泪啊。
后来我写过几篇相关的博客,感兴趣的可以看看:
三、后来者们:BEVDet系列与鉴智机器人的“清华速度”
LSS之后,BEVDet可以说是直接继承者——或者说“套了一层皮”也不过分。BEVDet核心没变,但改进了前处理和后处理,把LSS原本做分割的任务拿来做了3D检测。
这里要提一下BEVDet背后的团队——鉴智机器人。创始人都是清华背景,2021年下半年的时候我面过这家公司。当时他们刚创业,也就几十号人,招做感知后处理的。那时我还年轻,互相也都没看上。现在回头看,他们确实做了不少有意义的工作,点赞!
不过现在自动驾驶环境也一般,大家都不容易。
BEVDet系列的发展脉络很有意思:
BEVDet:基础版本,把LSS拿来做3D检测
BEVDet4D:加入时序信息,将过去帧与当前帧的BEV特征对齐后融合,大幅提升速度预测的准确率。有意思的是,加入历史帧后,小模型上mAP有明显增长——因为小分辨率本来覆盖不到50米的范围,历史帧提供了一些线索。
BEVPoolV2:对Lift-Splat过程做极致优化,用预处理优化计算流程,实现了4.6到15.1倍的速度提升,内存占用也降下来了。这个优化对工程落地太重要了。
DAL(Detecting As Labeling):最新的发展,做视觉+Lidar融合。核心思想很直接——在融合时更相信雷达分支,然后包装了一个“模仿数据标注过程”的故事。虽然听起来有点取巧,但效果确实好。
四、Transformer时代:BEVFormer与它的“注意力游戏”
如果说LSS代表的是“几何驱动”的BEV生成路线,那BEVFormer就是“注意力驱动”的另一条路。
BEVFormer用Transformer的注意力机制来做BEV感知。核心设计有三个:
BEV Queries:在BEV空间初始化一组可学习的网格点
Spatial Cross-Attention:每个BEV Query去图像特征上“看”相关的区域
Temporal Self-Attention:把当前帧和历史帧的BEV特征做时序融合
注意,这里用的不是经典Transformer的Attention,而是Deformable Attention——只在关键位置做采样,而不是全局计算,否则计算量爆炸。
我当时看BEVFormer的代码时,确实费了一番功夫。建议大家顺便看一下DETR的发展脉络,能帮你更好地理解这些设计。
另外提一嘴,BEVFormer的BEV Queries是随机初始化然后训练学习的。后来NVIDIA打榜CVPR 2023挑战赛时,有个FB-OCC工作对Query初始化做了改进,能学得更快。不过打榜的工作通常不是为了产品化设计的——前向投影查一遍,反向投影再查一遍,速度自然就慢了。
后续还有BEVFormer++和BEVFormerV2。V2那篇没开源,只停留在论文idea阶段。
五、深度估计的救赎:BEVDepth,把雷达当“老师”
在所有LSS系列的改进工作中,BEVDepth是我非常欣赏的一篇。
它的思路干净利落:既然LSS深度估计不准,那我就用激光雷达来提供深度真值,让深度估计网络“有老师教”。同时考虑到相机内参,设计了深度细化模块专门优化深度估计部分。
更重要的是,BEVDepth用GPU并行优化了LSS中的“cumsum trick”,相比原版LSS在GPU上快了80倍。
这其实就是我当初想在LSS深度上做文章的灵感来源——可惜被别人先做出来了。
六、融合的极致:BEVFusion
讲完纯视觉,再说融合。
BEVFusion来自MIT Han Lab,是一篇图像+激光雷达融合的BEV算法。它的框架极其清晰:Camera分支和Lidar分支分别提取特征,然后各自转换到共享的BEV空间,再拼接起来做多任务检测和分割。
真可谓大道至简。
但我最佩服的不是它的精度,而是它的优化深度。BEVFusion团队对Camera-to-BEV部分做了大量优化:预计算减少了13ms,GPU计算间隔优化减少了498ms。很多公司都做不到这个程度。
不过遗憾的是,尽管做了这么多优化,BEVFusion仍然达不到实时(8.4 FPS)。而且这些优化都是基于CUDA做的,一旦离开NVIDIA的平台,就需要针对不同芯片重写定制化算子——这在工程落地中是最大的坑。
七、新王登基?CMT与位置编码的魔法
算法永远在更新迭代。CMT(Cross Modal Transformer) 在nuScenes榜单上表现亮眼,它的精髓是把“位置编码”这件事玩明白了。
大致思路:
对于图像:像素点左乘内参逆矩阵、再乘外参,转到雷达坐标系下,然后用MLP输出位置编码
对于雷达:用VoxelNet或PointPillars编码成点云token,在BEV特征网格上沿高度采样,也用MLP输出位置编码
Position-guided Query:在3D空间感兴趣区域随机采样点,投影到图像和雷达模态获取位置编码,相加得到最终的Q
这个思路巧妙之处在于,它用统一的编码方式把不同模态的位置信息对齐到了同一个语义空间。
八、一些题外话:技术之外的抉择
写到这里,想多说几句与技术无关、但和技术人息息相关的话。
做技术预研的时候,你永远在回答这些问题:
这个方向值不值得投入?
投入产出比是否合理?
如果提升不大,是换方向还是继续?
继续探索还有多少资源支撑?
看过的论文有没有转化为产出的机会?
产出能不能给自己带来收益?
这些问题没有标准答案。很多时候你只能做一个决策,然后等待结果验证。
这也是为什么我会把技术学习和职业发展放在一起看。单纯追求技术SOTA不一定能带来实际收益,但完全不跟前沿又会掉队。中间的平衡点,每个人都要自己找。
九、BEV的下一站在哪里?
从2020年LSS提出到现在,BEV感知已经从一个“实验室玩具”变成了自动驾驶量产车的标配技术。蔚来、小鹏、理想、华为……几乎所有主流玩家都在用BEV方案。
但问题也远没有解决:
BEV会不会被Occupancy Network取代?两者是互补还是替代?端到端是否意味着BEV这个中间表示会消失?
这些问题,可能要再过两年才有答案。
技术路线的选择,从来不只是技术的较量,更是现实与理想的反复拉扯。但我们能做的,就是在这个充满不确定性的领域里,保持学习,保持判断力,然后——静待靴子落地。