1. 从“背着地图跑”到“睁眼看世界”:自动驾驶感知路线的底层逻辑切换
早几年入行做自动驾驶的朋友,应该都经历过那个“高精度地图崇拜”的阶段。当时大家默认一个前提:车要自己开,必须先有一张厘米级的“底图”,把车道线、路沿、交通标志、甚至红绿灯杆的位置都提前画好,车再靠定位匹配去跑。这套逻辑在高速和城市快速路上确实跑得通,因为路的结构相对稳定,地图更新频率也扛得住。
但真正把车丢进城市开放道路,尤其是那种今天修路、明天改道、后天临时摆个锥桶的路口,高精度地图的短板就暴露得非常彻底。地图的“鲜度”永远追不上现实的变化,而自动驾驶对错误的容忍度又极低。于是行业里慢慢形成了一条新的技术主线:从“提前知道”转向“实时感知”,也就是大家常说的“轻地图”甚至“无图”方案。
这个转变不是拍脑袋决定的,它背后是感知硬件、算法架构和数据闭环三件事同时成熟的结果。标题里提到的“实时感知”“BEV”“无图”,其实指向的是同一件事:让车像人一样,靠当下的眼睛和大脑去理解路,而不是靠一张可能过期的记忆。
这篇文章我想从一线工程落地的角度,把这条路线切换的来龙去脉拆开讲清楚。不管你是刚接触自动驾驶感知的新人,还是正在做BEV模型部署的工程师,或者只是对“无图”这个词好奇的技术爱好者,都能从下面这些内容里拿到能直接用的判断依据和实操参考。
2. 高精度地图曾经为什么是“拐杖”,又为什么必须被放下
2.1 高精度地图在早期方案里到底承担了什么角色
要理解“去地图化”的价值,得先承认高精度地图在早期确实解决了大问题。在感知能力还不够强的阶段,地图承担了三类核心任务:
- 定位锚点:通过将实时感知到的车道线、路牌与地图做匹配,把车辆位置从GPS的米级误差压到厘米级。
- 先验结构:告诉车前方三百米有一个曲率很大的弯,或者下一个路口是五岔口,让规划模块提前减速和选道。
- 冗余校验:当摄像头被强光晃到、激光雷达被雨雾衰减时,地图可以作为“记忆备份”兜底。
这三件事在高速场景下非常有效,因为高速道路结构标准化程度高,地图采集一次能管很久。很多早期的高速领航辅助功能,本质上就是“高精度地图+简单感知”的组合。
2.2 地图鲜度、覆盖成本和政策约束的三重压力
问题出在城市场景。城市道路的变化频率远超高速,今天封路施工,明天新增潮汐车道,后天某个路口重新画了导流线。高精度地图的采集和更新需要专门的采集车、专业标注、严格审核,成本极高,周期动辄数周甚至数月。这就导致一个尴尬局面:地图越精细,过期后带来的风险反而越大,因为系统会“自信地”按照错误先验去行驶。
另外,高精度地图的采集和分发涉及测绘资质和地理信息合规,能做的玩家有限,这也在客观上限制了方案的普适性。当行业想把自动驾驶从几十个城市扩展到全国几百个城市时,靠地图铺路的模式在成本和节奏上都很难持续。
2.3 “无图”不是不要地图,而是把地图降级为轻量参考
这里必须澄清一个常见误解:所谓“无图”并不是车里完全不装任何地图数据。更准确的说法是,把高精度地图从“必须依赖的核心输入”降级为“可选的轻量先验”。导航地图仍然会提供大致路径和路口拓扑,但车道级的精细结构、交通元素的精确位置,全部交给实时感知去现场判断。
这个降级带来的直接好处是:系统不再被地图的过期信息绑架,面对施工、改道、临时管制时,能像人一样根据眼前看到的实际情况做决策。代价是感知模块的压力陡增,它必须足够准、足够快、足够稳。这就引出了下一部分的核心:BEV和实时感知到底是怎么把这件事撑起来的。
3. BEV视角如何把“碎片画面”拼成一张上帝视角的实时地图
3.1 从单相机到多相机融合:BEV要解决的根本问题
传统感知方案是每个相机各自检测,前视相机看前方,侧视相机看侧面,然后靠后处理把结果拼起来。这种做法在简单场景下能用,但一旦遇到跨相机的目标(比如一辆车同时出现在前视和侧视画面边缘),拼接就会出错,距离和朝向也容易对不齐。
BEV(Bird‘s Eye View,鸟瞰视角)的思路是:先把所有相机图像统一投影到一个俯视的平面坐标系里,再在这个统一空间里做检测和分割。这样一来,不管目标出现在哪个相机,最终都落在同一张“上帝视角”的网格上,跨相机的一致性问题从根上被消解了。
你可以把它理解成:以前是几个人各自画自己看到的那一块,再硬拼;现在是所有人先把看到的内容投到同一张桌子上,再一起画。桌子就是BEV空间,画出来的就是一张实时更新的局部语义地图。
3.2 BEV特征生成的两种主流路径:LSS与Transformer
目前工程上落地的BEV特征生成,主要有两条技术路线,我在实际项目里都跑过,各有取舍。
第一条是基于LSS(Lift-Splat-Shoot)的显式深度估计路线。它的逻辑是:对每个相机的每个像素,预测一个深度分布,然后根据相机内外参把像素“抬”到三维空间,再“拍”到BEV平面上。优点是几何关系清晰,可解释性强,部署相对成熟。缺点是对深度估计的精度敏感,远处像素的深度误差会被放大。
第二条是基于Transformer的查询式路线,比如BEVFormer这类方案。它预先在BEV平面上定义一组网格查询,通过注意力机制去多个相机特征里“取”信息。优点是能更好地处理遮挡和远距离,特征融合更灵活。缺点是算力开销大,训练和部署的工程复杂度更高。
下面这张表是我在实际选型时常用的对比维度,供你参考:
| 对比维度 | LSS显式深度路线 | Transformer查询路线 |
|---|---|---|
| 几何可解释性 | 强,深度分布可视化直观 | 较弱,注意力权重较难解释 |
| 远距离精度 | 受深度估计误差影响明显 | 相对更好,但依赖训练数据 |
| 算力开销 | 中等,适合中端芯片 | 较高,需要较强算力平台 |
| 部署成熟度 | 高,社区实现多 | 中,工程调优门槛高 |
| 适合场景 | 中低速城市、泊车 | 高速、复杂城市路口 |
3.3 BEV之上再叠时序:让感知“记得住”而不是“每帧重来”
单帧BEV已经能给出不错的空间结构,但真实驾驶里很多信息是靠时间累积出来的。比如被大车挡住的行人,单帧看不到,但前几帧出现过;比如路口的车道线被前车压住,靠历史帧能补全。
所以现在主流的实时感知方案都会在BEV特征上叠加时序融合,把过去若干帧的BEV特征对齐后融合进来。这里的关键是自车运动补偿:车在动,上一帧的BEV网格和这一帧不在同一个位置,必须用IMU和轮速信息做对齐,否则融合出来的东西是糊的。
我在调时序融合时踩过的一个坑是:运动补偿的延迟没对齐,导致融合后的目标出现“拖影”,检测框在纵向上一抖一抖。后来把IMU时间戳和图像曝光时间严格对齐,拖影才消失。这个细节在论文里很少提,但实际部署时非常关键。
4. 实时感知要替代地图,必须跨过哪几道工程门槛
4.1 车道线与道路拓扑的在线生成
高精度地图最核心的贡献之一,是告诉车“车道线在哪、怎么分叉、怎么合并”。实时感知要替代它,就必须在线生成车道线和道路拓扑。这件事的难点不在单帧检测,而在于拓扑关系的推理:两条车道线在前方合并成一条,或者一个路口分出三个方向,这些关系需要模型在BEV空间里做结构化输出。
目前常见的做法是在BEV特征上接一个车道线分割头,再加一个拓扑推理头,输出车道线的实例和它们之间的连接关系。实测下来,直道和缓弯的精度已经能打,但复杂五岔口和施工改道区域仍然是难点,需要靠时序和语义推理去补。
4.2 交通元素与临时目标的识别稳定性
交通标志、红绿灯、锥桶、施工围栏这些元素,地图里原本是提前标好的,现在全靠实时看。红绿灯的难点是状态识别和绑定:一个路口有多个灯,哪个灯管哪条车道,必须绑定正确,否则会出现“看错灯”的严重问题。
锥桶和临时围栏的难点是泛化:训练集里没见过的形状和颜色,模型容易漏检。我在实际项目里的经验是,这类临时目标不能只靠单帧检测,要结合时序做“持续存在性”判断,连续几帧都出现才确认为有效目标,这样能显著降低误检和漏检的抖动。
4.3 定位降级后如何保持横向控制精度
去地图之后,定位从“地图匹配厘米级”降级为“感知相对定位”。横向控制不能再依赖绝对位置,而要依赖相对于车道线和路沿的局部关系。这对控制模块提出了新要求:它必须能接受“相对坐标”作为输入,并且在感知短暂丢失时保持稳定。
一个实用的工程技巧是:在感知输出上做一层平滑滤波和置信度加权,低置信度的车道线不要直接丢给控制,而是用历史估计做外推,等感知恢复后再切回来。这样能避免方向盘在感知抖动时来回抽动。
5. 数据闭环:无图方案真正的护城河在哪里
5.1 为什么无图方案对数据的要求反而更高
表面上看,去掉高精度地图是“减负”,但实际上它把压力全部转移到了数据上。地图是先验知识,是人工标注好的;实时感知要靠模型现场判断,而模型的泛化能力完全取决于训练数据的覆盖度。
这就意味着,无图方案的数据闭环必须比有图方案更高效。你需要在全国各种城市、各种天气、各种奇怪路口上持续采集数据,快速挖掘出模型表现差的场景,标注后回流训练,再推送到车端。这个循环的速度,直接决定了方案能覆盖多少城市。
5.2 影子模式与自动挖掘:把“长尾场景”捞出来
影子模式是我认为无图方案里最值得投入的工程手段。它的逻辑是:在人工驾驶或低级别辅助驾驶时,让感知模型在后台“默默跑”,把它的输出和真实驾驶行为做对比。当模型判断和人类操作出现明显分歧时,这段数据就被标记为“可疑场景”,自动上传。
这样做的好处是,你不需要靠人海战术去随机找corner case,而是让系统自己告诉你哪里不行。我在项目里用这套机制,把施工区域和异形路口的挖掘效率提升了好几倍。
5.3 标注、训练、部署的迭代节奏怎么压到周级
数据闭环的最后一环是迭代速度。传统流程里,标注、训练、测试、部署是串行的,一轮下来动辄一两个月。无图方案要快速铺城市,必须把节奏压到周级。
实操上可以这样做:把标注任务拆成“预标注+人工修正”,用上一版模型先跑一遍预标注,人工只做修正,效率能提升一半以上;训练侧用增量训练而不是全量重训,只针对新挖掘的场景做微调;部署侧建立自动化回归测试,每次模型更新自动跑一遍核心场景集,通过了才允许上车。
6. 无图方案当前的真实边界与我的实操建议
6.1 哪些场景仍然建议保留轻量地图先验
虽然趋势是去地图,但我必须说句实话:现阶段完全无图并不是所有场景的最优解。在高速和城市快速路上,道路结构稳定,保留一份轻量的导航级先验(比如路口拓扑和大致曲率),能显著降低感知的负担和风险。真正需要“无图”能力的是城市开放道路和施工频繁区域。
我的建议是采用分层策略:高速用轻地图+强感知,城市用无图+BEV实时感知,泊车用记忆泊车+局部建图。不要为了“无图”这个标签,把所有场景都一刀切。
6.2 感知冗余和失效降级必须提前设计
实时感知再强,也有失效的时候。强逆光、暴雨、镜头污损,都可能让感知输出质量骤降。无图方案没有地图兜底,就必须在系统层面设计好降级策略。
具体来说,要有多源冗余:摄像头失效时,毫米波雷达和激光雷达要能顶上;要有置信度监控:感知输出的置信度低于阈值时,主动降低车速并提示接管;要有最小风险策略:在感知完全不可用时,能安全靠边停车,而不是硬撑。
6.3 给正在做BEV部署的工程师几条实在建议
最后分享几条我在BEV模型部署上踩过坑之后总结的建议,都是能直接用的:
- 输入分辨率不要盲目追高:BEV对分辨率敏感,但算力有限时,优先保证BEV网格的纵向覆盖距离,横向分辨率可以适当降。
- 时序融合的帧数不是越多越好:帧数多了算力涨、延迟高,实测3到5帧是比较平衡的选择。
- 量化时重点保护深度估计头:BEV的深度估计对量化误差很敏感,这一部分建议用混合精度,不要一刀切INT8。
- 车端部署一定要做温度测试:BEV模型算力吃满时芯片发热明显,高温降频会导致帧率抖动,影响时序融合的稳定性。
这套从地图依赖到实时感知的切换,本质上不是某一个模型的胜利,而是感知、数据、工程三件事一起成熟的结果。我在实际项目里最大的体会是:无图不是目的,让车在任何路上都能安全地看懂当下,才是目的。地图会继续存在,但它的角色会越来越像一个经验丰富的副驾,而不是那个必须被死死抓住的拐杖。