自动驾驶感知要回答的核心问题只有一个:车周围有什么、在哪、往哪走。难点在于输入是异构的——多个摄像头各看一个方向、激光雷达给出三维点云、毫米波雷达测速测距,它们坐标系不同、采样率不同、噪声特性不同。怎么把这堆东西捏成一张统一、可供规控直接消费的地图,是感知系统的工程主线。这几年的答案逐渐收敛到一个词:BEV(Bird’s Eye View,鸟瞰图)

直觉:为什么是鸟瞰图

规划和控制模块需要的是什么?是俯视视角下"哪里有车、哪里能开"的地图。这正是 BEV:一个以自车为中心、俯视的二维网格,每个格子带有特征。

为什么不直接在摄像头的透视图(perspective view)里做?因为透视图有个致命问题——近大远小、尺度不一致,而且融合多个摄像头时它们的视锥互相重叠又割裂,没有统一坐标系。激光雷达天生在三维空间里,本就接近 BEV;难的是把只有 2D 像素的摄像头也抬到这个统一的 BEV 空间里。一旦所有传感器都投影到同一个 BEV 网格,后续的检测、分割、轨迹预测都在这一个统一空间里做,工程上极其干净。

传感器的互补性

先理解为什么要融合,而不是只用一种传感器:

  • 摄像头:分辨率高、有颜色和纹理(能读交通灯、车道线、路牌),但没有直接的深度,且受光照和天气影响大。
  • 激光雷达(LiDAR):直接给出精确三维点云和深度,几何信息强,但稀疏(远处点很少)、无纹理、贵、雨雪雾衰减。
  • 毫米波雷达(Radar):能直接测径向速度(多普勒),全天候,但角分辨率低、点云极稀疏。

没有任何单一传感器全能。融合的本质是用一种传感器的强项补另一种的弱项——典型如用摄像头的语义补激光雷达的"看不出这是什么",用激光雷达的深度补摄像头的"不知道多远"。

机制:摄像头怎么抬升到 BEV

这是全套技术里最有意思的一步。两条主流路线。

路线一:显式深度,前向投影(Lift-Splat 思路)

思路是给图像每个像素预测一个深度分布,然后把像素特征沿着相机光线"撒"到三维空间,再拍扁到 BEV 网格。

具体地,对像素 (u,v)(u,v),网络不预测一个确定深度,而是预测在一组离散深度候选 {d1,...,dD}\{d_1,...,d_D\} 上的概率分布 αRD\alpha \in \mathbb{R}^D(深度本来就是病态的、不确定的,用分布表达更诚实)。该像素的图像特征 cRCc \in \mathbb{R}^C 被"撒"成一个深度方向的特征柱:

feat(u,v,dk)=αkc\text{feat}(u,v,d_k) = \alpha_k \cdot c

每个 (u,v,dk)(u,v,d_k) 通过相机内外参映射到三维点,再 voxel pooling 到 BEV 网格。这条路线物理意义清晰,但显存敏感——特征体的大小是 H×W×D×CH \times W \times D \times C,深度候选 DD 一多就爆。

路线二:隐式查询,反向采样(BEV Query 思路)

反过来想:不从图像往外撒,而是从 BEV 端发问。预先定义一组 BEV 网格的可学习 query,每个 query 代表 BEV 上一个位置,它去反向投影到各个摄像头图像上采样特征,用注意力机制聚合。

这通常用可变形注意力(deformable attention)实现:每个 BEV query 根据相机参数算出它在各图像上的投影点,只在投影点附近采样少数几个特征点做注意力,避免全图注意力的平方复杂度。再叠加时序——把历史帧的 BEV 特征按自车运动对齐后融合,让模型"记得"上一刻看到的东西,对遮挡和瞬时漏检很有用。

1
2
3
4
5
6
7
for 每个 BEV 网格 query q (位置 p):
for 每个摄像头 cam:
将三维参考点 p 用内外参投影到 cam 图像 -> 像素坐标 (u,v)
若 (u,v) 落在画面内:
在 (u,v) 邻域做 deformable attention 采样图像特征
聚合所有命中摄像头的特征 -> 更新 q
# 可选: 用自车位姿把上一帧 BEV 对齐到当前帧, 时序融合

两条路线各有取舍:前向投影对深度估计质量敏感、显存吃紧;反向查询绕开了显式深度,但依赖准确的标定外参,外参一漂结果就歪。

融合策略:在哪一层融合

LiDAR 和摄像头的融合,按融合发生的层次分三类:

  1. 前融合(数据级):把图像颜色直接贴到点云上。简单但对标定和时间同步极其敏感。
  2. 后融合(结果级):各传感器各自跑检测,最后用卡尔曼滤波等做目标级关联。鲁棒、模块解耦,但早期信息已经丢了,融合上限低。
  3. 中融合(特征级 / BEV 融合):现代主流。把 LiDAR 点云编码成 BEV 特征、把摄像头抬升成 BEV 特征,两者在同一个 BEV 网格上拼接或相加,再过统一的检测头。BEV 之所以成为融合的"公共货币",正是因为它给了异构传感器一个共享坐标系。

工程权衡与边界

  • 标定与时间同步是地基。多传感器外参标定误差几厘米、时间戳错几十毫秒,融合就会产生鬼影或目标错位。很多"模型问题"其实是标定问题。
  • 实时性硬约束。整条感知管线要在几十毫秒内跑完才能支撑控制频率。BEV 网格分辨率、深度候选数、注意力采样点数都是精度与延迟的直接旋钮。
  • 远处与小目标。BEV 网格分辨率固定,远处目标投影到很少几个格子里,细节丢失,这是纯 BEV 方案的固有短板。
  • 长尾与分布外。施工路障、异形车辆、罕见姿态行人,训练数据里少,恰恰是安全最关键处。这也是为什么自动驾驶感知不能只看平均指标。

小结

自动驾驶感知的演进可以一句话概括:从各传感器在各自坐标系里单打独斗,收敛到所有信息抬升进统一的 BEV 空间再融合。摄像头的 2D-到-BEV 抬升(显式深度前投 vs. 隐式 query 反采)是技术核心,而 BEV 之所以重要,是因为它同时解决了多相机拼接、多模态融合和给规控提供干净接口这三件事。理解了"统一空间"这个动机,再看具体网络就有了主线。