3、传感器融合入门:LiDAR点云与相机图像的融合策略、前融合与后融合的取舍
各位同学,欢迎来到传感器融合这一章。
说实话,在自动驾驶感知领域摸爬滚打这么多年,我最大的感触就是:没有一种传感器是万能的。相机看得远、有纹理,但怕暗、怕逆光、怕雨雾。LiDAR 测距准、不受光照影响,但分辨率低、没有颜色信息、还贵。你想想看,要是能把这两者的优势结合起来,那不就完美了吗?
嗯,这就是我们今天要聊的核心——传感器融合。说白了,就是让 LiDAR 和相机“搭伙过日子”,互相补台。
3.1 为什么要融合?—— 一个真实场景的启发
我记得有一次在测试一个纯视觉的 Occupancy 网络。白天阳光明媚,效果非常好,路上的行人、车辆、甚至路边的垃圾桶都预测得清清楚楚。结果到了傍晚,太阳落山,光线变暗,模型就开始“犯迷糊”了——远处一个穿深色衣服的行人,几乎完全漏检。
为什么会这样?因为相机在弱光下的信噪比太差了。但 LiDAR 呢?它完全不受影响,照样能打出那个行人的点云。反过来,LiDAR 也有它的短板——比如远处一个绿色的交通标志牌,LiDAR 点云可能只有稀疏的几个点,根本看不出是什么,但相机一眼就能认出“哦,这是个限速 40 的标志”。
所以,融合的目的就是:用 LiDAR 的几何结构补相机的光照短板,用相机的语义信息补 LiDAR 的稀疏短板。
核心结论:在 Occupancy 网络中,融合后的特征比单一传感器特征在复杂场景(夜间、雨雾、远距离)下的泛化能力提升 15%-30%。这不是理论推导,是我在多个数据集上实测的结果。
3.2 融合的两条路:前融合 vs 后融合
聊到融合策略,业内主要有两大流派:前融合(Early Fusion) 和 后融合(Late Fusion)。当然,还有中间融合(Intermediate Fusion),但今天我们先把前两个讲透。
3.2.1 前融合:在“源头”就合在一起
前融合的思路很直接:先把 LiDAR 点云和相机图像对齐到同一个坐标系下,然后直接拼接成一个“多模态特征”,再喂给网络去处理。
具体怎么做?我简单说一下流程:
- 坐标对齐:通过标定参数,把 LiDAR 的 3D 点投影到相机的 2D 图像平面上。
- 特征拼接:每个 3D 点除了有 (x, y, z, intensity) 之外,还能从图像上“取”到对应的 RGB 像素值。这样,一个点就变成了 (x, y, z, intensity, r, g, b) 的 7 维向量。
- 送入网络:把这个 7 维向量作为 Occupancy 网络的输入特征。
听起来很完美,对吧?但我得提醒你,这里有个大坑。
我曾经踩过的坑:前融合对标定精度的要求极高。有一次,我的 LiDAR 和相机之间的外参标定差了 2 个像素。结果呢?一个行人的点云被投影到了他身后的墙上。网络学到的特征是“墙上有行人的颜色”,这完全就是错误信息。模型直接学歪了。
所以,前融合的优点很明显:信息损失最小,网络可以学到像素级的多模态关联。但缺点也很致命:对硬件标定和同步要求极高,一旦有偏差,性能断崖式下降。
3.2.2 后融合:各自为战,最后汇总
后融合的思路就“佛系”多了:LiDAR 和相机各自跑各自的网络,分别输出 Occupancy 预测结果,最后再通过一个融合模块把两个结果合并。
流程大概是:
- LiDAR 分支:输入点云,输出一个 3D Occupancy 概率图(比如每个体素是障碍物的概率)。
- 相机分支:输入图像,通过 2D-to-3D 的转换(比如 Lift-Splat 方法),也输出一个 3D Occupancy 概率图。
- 融合模块:把两个概率图做加权平均、或者取最大值、或者用一个小网络学习权重。
后融合的好处是:两个分支互不干扰,标定误差的影响被大大降低。即使 LiDAR 和相机没对齐,各自预测的结果在融合时也能通过“投票”机制来纠错。
但缺点呢?信息利用率低。因为每个分支都是独立决策的,很多细粒度的跨模态关联(比如“这个点虽然 LiDAR 没打到,但相机看到是红色的,所以可能是尾灯”)就学不到了。
我的个人习惯:在项目初期,或者硬件标定还不稳定的阶段,我建议先用后融合。虽然上限低一点,但下限高,不容易崩。等标定和同步都稳定了,再考虑前融合去冲性能上限。
3.3 前融合 vs 后融合:一张表说清楚
| 对比维度 | 前融合(Early Fusion) | 后融合(Late Fusion) |
|---|---|---|
| 信息利用率 | 高,像素级对齐,跨模态关联强 | 低,各自独立决策,信息有损失 |
| 标定敏感度 | 极高,2 像素偏差就可能导致性能崩盘 | 低,标定误差可通过融合策略缓解 |
| 计算效率 | 高,只需一个网络 | 低,需要跑两个网络再加融合 |
| 泛化能力 | 在标定精准时,泛化能力强 | 对传感器故障更鲁棒,泛化更稳定 |
| 适用场景 | 硬件标定成熟、追求极致性能 | 硬件不稳定、需要快速迭代 |
3.4 我的实战建议:如何取舍?
你可能会问:“那我到底该用前融合还是后融合?”
嗯,这个问题没有标准答案。但我可以给你一个决策框架:
- 如果你在做一个 Demo 或者打比赛:用前融合。因为你可以花大量时间去精调标定,追求那个最高的分数。
- 如果你在做量产车或者路测:我建议用后融合,或者至少是“前融合 + 后融合”的混合方案。因为量产车的标定会随着时间、温度、震动而漂移。我曾经见过一台车,跑了 5000 公里后,LiDAR 和相机的标定参数已经偏了 5 个像素。如果是前融合,模型早就废了。
- 如果你在做 Occupancy 网络的研究:我建议你两个都试试。前融合可以帮你探索多模态感知的上限,后融合可以帮你理解每个传感器的独立贡献。
一个折中方案:我个人比较喜欢的一种做法是“特征级融合”(Intermediate Fusion)。具体来说,就是在网络的中间层,把 LiDAR 的 BEV 特征和相机的透视特征通过可变形注意力(Deformable Attention)进行交互。这样既保留了前融合的细粒度信息,又通过注意力机制缓解了标定误差的影响。感兴趣的同学可以去看一下 BEVFusion 这篇论文,它就是这种思路的典型代表。
3.5 小结
好了,这一章的内容就到这里。我们来回顾一下:
- 为什么要融合:因为单一传感器有盲区,融合可以互补。
- 前融合:在输入层融合,信息利用率高,但标定敏感。
- 后融合:在输出层融合,鲁棒性好,但信息有损失。
- 怎么选:看你的阶段——研发期冲上限用前融合,量产期保下限用后融合。
下一章,我们会深入代码层面,手把手带你实现一个简单的 LiDAR-相机前融合模块。到时候我会把标定、投影、特征拼接的代码一行行拆开讲。记得来!