1. BEV感知概述

1.1 什么是BEV感知?

BEV感知,全称是Bird‘s Eye View Perception。说白了,就是把摄像头、激光雷达这些传感器看到的东西,统一投影到一张“鸟瞰图”上。

你想想看,我们开车时看的是前方视角。但自动驾驶系统需要知道:我周围360度都有什么? 车在哪?行人往哪走?路沿在哪?

BEV感知就是解决这个问题的。它把所有传感器数据,都转换到同一个坐标系——自车为中心的俯视坐标系。这样,系统就能像看地图一样,理解周围环境。

核心要点: BEV感知的本质是“视角转换” + “多模态融合”。它把不同传感器、不同视角的信息,统一到同一个空间表达中。

我个人习惯把BEV感知比作“拼图游戏”。每个传感器看到的是局部碎片,BEV感知就是把这些碎片拼成一张完整的地图。嗯,这里要注意:拼图的关键不是拼得好看,而是拼得准、拼得快。

1.2 BEV在自动驾驶中的角色

BEV感知在自动驾驶系统里,到底扮演什么角色?我直接说结论:它是感知模块的“中央处理器”。

传统方案里,每个传感器各自为政——摄像头检测车道线,激光雷达检测障碍物,然后靠后融合把结果凑一起。这种做法有个大问题:信息割裂。摄像头看到的前方车辆,和激光雷达看到的前方车辆,到底是不是同一个?

BEV感知解决了这个痛点。它把多传感器数据在特征层面就融合到一起,输出统一的BEV特征图。下游任务(检测、跟踪、预测、规划)都基于这个BEV特征图来做。

我在项目中遇到过这样一个场景:一辆白色货车停在路边,摄像头因为逆光几乎看不到它,但激光雷达点云很清楚。传统后融合方案里,摄像头没检测到,激光雷达检测到了,但两个结果对不上,最终系统犹豫不决。换成BEV感知后,摄像头和激光雷达的特征在BEV空间里互补,货车被稳稳地检测出来。

BEV感知在自动驾驶中的角色,可以总结为三点:

  • 统一空间表达:所有传感器数据映射到同一坐标系
  • 多模态融合:在特征层面融合Camera、Lidar、Radar
  • 端到端学习:从传感器输入到BEV特征图,整个流程可微分

避坑指南: 我曾经以为BEV感知就是“把图像投影到地面”,结果发现远没这么简单。相机投影到BEV时,远处的像素会被严重拉伸,信息损失很大。所以,BEV感知的核心难点在于“如何从透视图中恢复深度信息”。

1.3 主流方案对比:LSS vs Transformer

目前BEV感知的主流方案,主要有两派:LSS 和 Transformer。我分别说说它们的思路和特点。

1.3.1 LSS方案

LSS,全称Lift-Splat-Shoot。这个名字很形象:

  • Lift:把2D图像特征“提升”到3D空间。怎么做?为每个像素预测一个深度分布,然后沿着相机射线把特征“撒”到3D空间。
  • Splat:把3D空间中的特征“拍”到BEV网格上。其实就是把3D点投影到BEV平面,然后做池化操作。
  • Shoot:在BEV特征图上做下游任务,比如检测、分割。

LSS的核心思想是:先估计深度,再投影到BEV。它的优点是结构清晰、计算效率高。缺点是深度估计不准时,整个BEV特征图都会受影响。

我记得第一次跑LSS代码时,看到它用了一个“深度分布”而不是“单点深度”,当时觉得挺巧妙。每个像素预测一个概率分布,而不是硬选一个深度值,这样容错性更好。

1.3.2 Transformer方案

Transformer方案,以BEVFormer为代表。它的思路完全不同:不显式估计深度,而是用注意力机制直接学习从2D到BEV的映射。

具体来说,BEVFormer在BEV空间上定义了一组可学习的查询(Query),每个查询对应BEV网格上的一个位置。然后通过交叉注意力(Cross-Attention),让每个BEV查询去“关注”图像上的相关区域,从而聚合特征。

这样做的好处是:不需要深度估计,避免了深度误差的累积。而且Transformer的全局注意力机制,能更好地处理远距离物体和遮挡情况。

但Transformer方案也有代价:计算量大、训练收敛慢。我刚开始调BEVFormer时,一个batch就要吃满32G显存,训练一个epoch要跑大半天。

1.3.3 方案对比表

对比维度 LSS方案 Transformer方案
核心思路 显式深度估计 + 投影 注意力机制 + 隐式映射
深度依赖 强依赖深度估计 不依赖显式深度
计算效率 较高,适合部署 较低,需要大算力
远距离性能 深度估计不准时退化严重 注意力机制能覆盖更远
训练难度 相对容易收敛 需要更多tricks
代表工作 LSS, BEVDet, BEVDepth BEVFormer, PETR, DETR3D

注意: 选择方案时不要盲目跟风。我在实际项目中踩过坑:团队选了Transformer方案,结果车端算力不够,推理帧率只有5FPS。后来换成LSS方案,优化后跑到了20FPS。所以,方案选择一定要结合你的硬件平台和场景需求。

1.4 BEV感知知识体系总览

下面这张图,是我梳理的BEV感知知识体系。它涵盖了从传感器输入到最终输出的完整链路,以及本章涉及的核心概念。

BEV感知知识体系总览 传感器输入层 多视角摄像头 | 激光雷达 | 毫米波雷达 | 超声波雷达 特征提取层 Backbone网络(ResNet、Swin-T) | 多尺度特征 | FPN BEV转换层(核心) LSS方案:深度估计 + 投影 + 池化 Transformer方案:BEV Query + 交叉注意力 下游任务层 3D目标检测 | 车道线检测 | 可行驶区域分割 | 运动预测 输出:BEV特征图 → 感知结果(障碍物、车道、路沿等) 数据流方向

这张图展示了BEV感知的完整数据流。从传感器输入开始,经过特征提取,到BEV转换层(这是核心),再到下游任务,最后输出感知结果。我个人建议你把这个流程记在脑子里,后面所有章节都会围绕这个框架展开。

我的经验: 刚开始学BEV感知时,不要一上来就扎进LSS或Transformer的细节里。先理解这个整体流程,搞清楚每个模块的输入输出是什么。等你有了全局视角,再深入细节会事半功倍。

好了,这一章就到这里。BEV感知的核心概念、它在自动驾驶中的角色,以及LSS和Transformer两大方案的对比,我都讲清楚了。下一章我们会深入LSS方案的实现细节,包括深度估计网络的设计和Splat操作的优化技巧。

可可精品资料库