车是怎么“看见“世界的?BEV+Transformer 感知算法入门

车是怎么“看见“世界的?BEV+Transformer 感知算法入门

想象一个场景:你坐在一辆智能驾驶汽车的驾驶座上,眼前是一块高清中控大屏,上面实时渲染着车身周围的三维环境——行人、自行车、卡车、路沿,所有东西都精准地浮在俯视图画面里。屏幕角落有一个小窗口在播放前视摄像头的原始画面,你瞄一眼就能发现:那个画面里的世界是扁平的,一条条车道线向远方延伸、越来越窄直到消失。而屏幕中央的三维重建画面却告诉你,前方二十米有一辆摩托车正在从右侧并线。

这两个画面之间的gap,就是这篇文章要聊的核心:车是怎么把摄像头拍到的那些二维碎片,拼成一张它能理解的空间地图的?


一、摄像头看到的,和车需要的,不是一回事

人类驾驶员看世界没什么障碍。眼睛往前一望,前方有没有车、有没有人,这些信息几乎是本能地流入大脑。大脑在几毫秒内就完成了"这是什么、离我多远、朝哪个方向走"的判断。

但摄像头不是这样工作的。一颗前视摄像头拍到的画面,就是一张密密麻麻的像素网格。每个像素记录的是颜色和亮度,它根本不知道"这个东西是车"还是"这个东西是墙"。要让车理解这张图里有什么,传统方案靠的是2D目标检测:把图片喂给CNN(卷积神经网络),CNN会在图上画出一堆矩形框,告诉你"这里有辆车,这里有个人"。

这套方案在高速公路上挺管用——车少、车道线清晰、场景规范。但问题在于,2D检测输出的结果是一个二维平面上的信息,而车真正需要的是一个三维空间里的决策依据。你知道前方五十米有一辆车,但它在哪个车道上?相对你的速度是多少?这些问题从一张二维图里很难准确回答。

于是工程师们开始做一件事:给2D检测结果加上深度估计。把"我在图上看到了什么"翻译成"我在空间里处于什么位置"。这个翻译流程有一个根本性的问题:每一步都有误差,误差会累积。检测框画歪了一点,深度估计偏了一点,坐标转换再偏一点,最后输出的3D信息可能已经面目全非。

而且每个步骤由不同的模型负责,彼此之间的信息没有真正流通,就像流水线上的工人各干各的,交接的时候难免出错。这种分模块、层层翻译的架构,学术界叫它Pipeline架构,容易实现,但天花板很明显——在繁忙的十字路口、鬼探头、逆光隧道出口,它的脆弱性就暴露出来了。


二、BEV:把碎片视角拼成一张鸟瞰地图

那么,有没有一种方式,让车直接从多路摄像头的原始数据出发,一次性输出一个完整的三维理解?

有。这就是BEV,鸟瞰图(Bird’s Eye View)

BEV的核心思想非常直观:把车身周围所有摄像头画面,统一投影到一个俯视角度的三维坐标系里。就像你站在正上方看一座城市,所有的建筑、车辆、行人都在一张平面图上,彼此之间的相对位置一目了然。

你可以这样理解:你面前有好几扇窗户,每个窗户只能看到一小块区域,角度还各不相同——前视窗看前方,侧视窗看侧面,倒车影像看后方。以前的做法是让司机分别从每扇窗户看出去,靠人脑把信息拼起来。BEV相当于直接给你一张航拍图,你往下一看,全局尽收眼底,不需要再做拼接这个动作了。

但问题来了:怎么把不同摄像头捕捉到的二维像素,准确地"贴"到三维俯视图的正确位置上?

这里介绍BEV的第一代方案——IPM(逆透视映射)。原理不复杂:利用相机内外参,把二维图像上的每个像素通过几何变换投影到地平面上。简单说,就是我知道每个摄像头在哪里、朝哪个方向看,利用几何关系做一次"倒推",把图像还原成俯视视角。

IPM在简单场景下效果不错,但有一个致命假设:地面是平的。一旦遇到坡道、颠簸、弯道,这个假设就不成立了,投影开始变形。而且IPM只利用了几何信息,图像里丰富的语义信息完全没用上。所以IPM是起点,不是终点。


三、Transformer登场:从"看图"到"看懂关系"

真正让BEV方案发生质变的,是Transformer架构的引入。

在BEV视角下,每个像素点需要被分配一个在三维空间中的位置。传统方法靠人工设计特征、用几何约束去猜。Transformer的思路完全不同——它让模型自己学习像素之间的关联,从而推断空间关系。

具体来说,BEVFormer这个方案的做法很精妙。它引入了可学习的Query(查询向量),这个Query就像一群"好奇的小探测器",悬浮在BEV空间的每一个位置,向多摄像头输入的图像特征发起"提问":这里有没有物体?是什么?离我多远?

这些Query利用了Deformable Attention(可变形注意力机制)——每个Query只去关注图像中跟它最相关的区域,而不是把整张图的所有像素都扫一遍。就像在人群中找人,你不会逐个扫描所有人的脸,而是先看体型、看衣服颜色,集中注意力看那些特征最匹配的人。可变形注意力做的就是这个筛选工作,大幅降低了计算量,同时让匹配更精准。

Query和图像特征之间经过多轮交互后,每个Query输出一个对应的BEV特征,知道这个位置有什么物体、是什么类别、空间位置在哪里。多路Query汇总起来,形成一张完整的BEV特征图。

这张图妙在哪里?它统一了时序和空间。当前的BEV特征不是凭空产生的,而是基于当前帧和历史帧的Query交互结果叠加出来的。车在t时刻的BEV感知结果,已经包含了t-1、t-2时刻的信息。所以它知道一辆车上一秒在左边两条车道,下一秒可能正在并入你的车道——运动轨迹的预测,是靠时序信息撑起来的。

至此,BEV+Transformer真正实现了一件Pipeline架构做不到的事:多摄像头信息在特征层面的深度融合。不是先检测再投影,而是所有摄像头的原始特征在同一套Query机制下被统筹处理,输出的BEV地图天然就是多摄像头协作的结果。


四、Occupancy:从"识别物体"到"识别空间占用"

BEV+Transformer已经很强大了,但它仍然有一个软肋:它只能识别训练时见过的物体类别。

举个例子。你在高速上见过无数辆轿车、货车,BEV+Transformer的模型能准确检测出来。但有一天路上出现了一辆拉着超长钢筋的货车,钢筋从车身侧面伸了出来,角度刁钻,只占了你车道宽度的一小块——这类东西在训练集里可能完全没有。传统目标检测这时候就傻眼了:它不认识这个东西,没有这个类别标签,于是选择了漏检。漏检的结果,就是那根钢管直接撞上了你的车。

Occupancy Network(占用网络),就是为了解决这个问题而诞生的。

Occupancy的核心思路非常优雅:不再问"这个像素是什么物体",而是问"这个格子空间有没有被占用"。它的做法是把三维空间划分成一个个体素(Voxel,可以理解成三维的像素格子)。每个体素格子有一个状态:被占用,或者空闲。模型输出的不再是一个个矩形框,而是一整张空间占用图——世界不是由"一辆车"“一个人"组成的,而是由"这里有东西”"那里是空的"组成的。

你发现这个思路的妙处了吗?它不需要知道这个东西是什么,只要知道这里有东西就行了。一根异形的钢管、一个大石头、一只突然冲出来的动物——只要它们占用了空间,系统就会标记"这里非空",障碍物规避立即触发,不需要先去识别物体类别。

Occupancy是感知层面的一次认知升级:从"识别已知物"到"理解自由空间"。就像盲人走路不需要知道障碍物是什么材质,用手杖感知到"这里被挡住了"就够了。


五、传感器路线之争:纯视觉还是加激光雷达?

说到这,必须聊一个在自动驾驶圈争论了七八年都没停过的话题:感知系统到底要不要用激光雷达?

马斯克的立场地球人都知道:纯视觉。特斯拉的FSD一路从2D视觉走到Occupancy,始终没有引入激光雷达。他的论点是:人类开车只用眼睛,摄像头加上好的算法,理论上可以接近人类的感知能力。而且激光雷达贵、容易受恶劣天气影响。

支持融合方案的工程师会反驳:摄像头在黑夜、强光、暴雨、雾霾下的表现远不如人类,激光雷达恰好能补上这些短板。直接输出精确距离信息,在异形障碍物检测上天然就更鲁棒。

这里面的技术路线之争,本质上是安全冗余和成本之间的权衡。一个值得关注的趋势是,随着BEV+Transformer+Occupancy这套方案越来越成熟,纯视觉的上限正在被不断抬高。有没有激光雷达的差距,在算法足够好的情况下,正在慢慢缩小。但融合方案的上限同样在进步。这个争论短期内不会有结论。


六、端到端的曙光:感知和规划,正在融为一体

感知不是终点,感知最终要服务于决策和规划。车看到前方有障碍物,下一步是要绕过去还是停下来,这属于规划模块的职责。

传统架构里,感知和规划是两个独立的模块,它们之间通过精心设计的接口传递信息。感知输出"前方有车",规划接收"前方有车"然后决定减速。问题在于,信息在传递过程中必然会有损耗。更深层的问题是,规划真正需要知道的信息,和感知天然输出的信息之间,存在认知层面的gap。

端到端方案(End-to-End)试图从根本上解决这个gap:让模型直接从传感器原始数据出发,端到端地输出驾驶决策。你不需要显式定义"感知告诉规划什么",模型自己学会了从像素到方向盘转角之间的映射。特斯拉宣称FSD已经实现了"光子到扭矩"的端到端链路。当然,端到端也带来了新的挑战:模型成了一个"黑箱",出了事故之后很难追溯到底是感知出了问题还是决策出了问题。安全验证和可解释性,是这条路上最大的两座大山。


七、范式收敛了,但"全国都能开"还很远

过去五年,自动驾驶感知领域的范式经历了三次大的跃迁:2020年之前是2D直视图+CNN的天下,2021到2023年是BEV+Transformer全面接管,2023年之后Occupancy开始普及,端到端的探索也在加速。范式在收敛,大方向越来越清晰。

多摄像头统一到BEV空间、用Transformer处理跨摄像头关系、Occupancy补充语义感知、端到端打通感知和规划——这几条路线在头部玩家之间基本形成了共识。特斯拉、华为、小鹏、Waymo的技术栈,在底层架构上的差异越来越小,分歧主要在实现细节和工程优化上。

但"全国都能开"仍然是句口号,不是现实。

原因不在感知算法本身,而在于长尾问题。中国道路场景的复杂程度在地球上几乎无出其右——村道上的晾晒谷物、逆向行驶的电动车、横穿马路的行人、临时施工改道没有任何高精地图更新。这些场景的数据样本在训练集中极其稀少,但恰恰是导致接管和事故的主要原因。

感知模型的泛化能力再强,也很难覆盖一个不断变化的世界中所有可能出现的异常。解决它们需要的不仅是更好的算法,还需要在数据闭环、场景库建设、仿真验证、众包地图等多个维度协同推进。

所以我的判断是:感知范式的收敛是一个里程碑,但它只是万里长征的一个节点。从"在大部分路段表现良好"到"在全国所有场景都可以放心脱手",这个差距需要用年来计算,而不是用算法版本的迭代来衡量。

不过好消息是,整条技术栈的效率正在快速提升。曾经需要几十个工程师精心调配的Pipeline,现在可以被一套统一的Transformer架构替代;曾经需要专业标注员手动标注的3D框,现在可以通过自监督和Occupancy自动生成训练信号。技术进步的速度,从来都比悲观预测要快。

你坐在车里,看着屏幕上那个俯视视角的小车图标平稳地穿过一个繁忙的十字路口——那背后,是一整套快速演进的感知系统在默默运转。而这个系统的下一版,可能就会比今天再聪明一点点。

一点点就够了。我们离终点,还剩最后一段路。


本文写于2026年8月。技术路线截至公开资料,观点代表作者个人判断,供讨论参考。