1. 从“提前知道”到“实时感知”:自动驾驶地图依赖的底层逻辑正在被重写
如果你这两年一直在关注自动驾驶的技术演进,应该能明显感觉到一个风向变化:前几年大家开发布会,必提“高精度地图覆盖了多少城市、多少公里”,而最近一两年,越来越多的团队开始把“无图”“轻图”“实时感知”挂在嘴边。这个转变不是营销话术的迭代,而是整个技术栈底层逻辑的一次重构。
我最早接触自动驾驶相关项目的时候,高精度地图几乎是不可动摇的基础设施。那时候的思路很直接:车要自己开,首先得“认识路”。高精度地图就是把路面上的车道线、路沿、交通标志、信号灯位置、甚至路面的坡度曲率,全部提前测绘成厘米级精度的数字档案,存到车里。车开在路上,用激光雷达和摄像头感知周围环境,再和地图里“提前知道”的信息做匹配,定位自己的位置,然后规划行驶轨迹。这套逻辑在高速和城市快速路上跑得挺稳,因为道路结构相对固定,地图更新频率也不用太高。
但问题很快就暴露出来了。中国有超过500万公里的道路里程,其中大量是城市支路、乡镇道路、施工频繁的路段。高精度地图的采集成本极高,一辆测绘车加上专业设备,每天能采集的有效里程可能只有几十公里,而且采集完之后还要经过大量人工标注和后处理。更麻烦的是,道路每天都在变——今天这里封路施工,明天那里改了车道线,地图更新根本追不上变化。我见过一个项目,某城市一条主干道因为地铁施工改道了三个月,但地图数据还是旧的,导致测试车在那条路上反复出现规划异常。
所以,当BEV(Bird‘s Eye View,鸟瞰视角)感知和Transformer架构在自动驾驶领域成熟之后,“无图化”或者说“轻图化”就成了一个必然的技术选择。它的核心思路是:与其提前把路“背”下来,不如让车自己“看”清楚。车通过多摄像头、激光雷达、毫米波雷达等传感器,实时构建周围环境的三维表征,直接在BEV空间里做检测、分割、预测和规划。地图从“必须依赖的基础设施”降级为“可选的先验信息”,甚至完全不用。
这个转变带来的影响是全方位的。对于做算法的人来说,感知和规控的耦合变得更紧密;对于做工程落地的人来说,不再需要等待地图覆盖就能开城;对于做数据闭环的人来说,数据采集和标注的重点从“地图要素”转向了“动态场景”。我个人的判断是,未来两到三年,无图方案会成为城市NOA(领航辅助驾驶)的主流技术路线,高精度地图会退居到“安全冗余”和“离线校验”的角色。
这篇文章,我想从技术演进的逻辑、核心感知架构、实操中的关键细节、以及常见问题排查几个角度,把“自动驾驶为什么越来越不依赖地图”这件事讲透。无论你是刚入行的算法工程师,还是对自动驾驶技术感兴趣的产品或测试人员,应该都能从中找到可以直接参考的经验和避坑指南。
2. 高精度地图的“黄金时代”与它的三个硬伤
2.1 高精度地图到底解决了什么问题
要理解为什么现在不依赖地图了,得先搞清楚地图曾经解决了什么问题。高精度地图的核心价值,我总结下来主要是三个层面。
第一个层面是定位。在GPS信号受遮挡的城市峡谷、隧道、地下车库等场景,单靠卫星定位误差可能达到几十米,完全没法用。高精度地图配合激光雷达或视觉特征匹配,可以把定位精度拉到厘米级。原理不复杂:车感知到的车道线、路沿、标志牌,和地图里存储的对应要素做配准,通过粒子滤波或优化算法反推出车辆的精确位姿。这个思路在很长一段时间里是定位模块的标准方案。
第二个层面是感知冗余。摄像头和激光雷达有物理极限,比如被大车遮挡、强光炫目、大雨大雾,感知结果会退化。地图作为先验信息,可以告诉车“这个位置应该有一条车道线”“前方50米应该有一个红绿灯”,即使传感器暂时没看到,也能维持一段时间的正确决策。这在功能安全设计里是很重要的冗余手段。
第三个层面是规划先验。有了高精度地图,规控模块可以提前知道前方道路的曲率、坡度、车道数量变化,从而提前调整速度规划和转向策略。比如前方300米有一个急弯,地图数据可以直接告诉规划模块,不用等感知看到弯道再减速,舒适性和安全性都更好。
这三个价值叠加起来,让高精度地图在早期自动驾驶方案里几乎成了“标配”。但问题在于,这三个价值都建立在同一个前提上:地图必须是新的、准的、全覆盖的。而现实往往不是这样。
2.2 成本、覆盖与更新:高精度地图的三座大山
高精度地图的第一个硬伤是采集成本。一套专业的测绘设备,包括高精度激光雷达、组合导航系统、工业相机,成本动辄几十万甚至上百万。采集车在路上跑,每公里的综合成本(设备折旧、人力、后处理)在几百到上千元不等。一个城市要覆盖主要道路,至少需要几千公里的采集里程,算下来就是几百万到上千万的投入。这还只是一个城市,全国那么多城市,成本是指数级增长的。
第二个硬伤是覆盖范围。高精度地图的采集和制作周期很长。从采集到标注、质检、发布,一个城市的核心区域可能需要几个月。而自动驾驶要落地,用户希望的是“我开到哪都能用”,而不是“只有这几十公里能用”。这就导致了一个尴尬的局面:地图覆盖的速度永远追不上用户对可用范围的需求。
第三个硬伤是更新频率。道路变化是常态,施工改道、车道线重绘、新增红绿灯,这些变化可能每天都在发生。高精度地图的更新流程很重,从发现变化到更新发布,周期可能以周甚至月计。我经历过一个案例,某城市为了举办大型活动,临时调整了十几条道路的通行规则,但地图数据没有及时更新,导致测试车辆在相关路段频繁退出。这种问题在依赖地图的方案里几乎无解,因为地图更新永远滞后于现实变化。
注意:高精度地图的“鲜度”比“精度”更难保证。很多团队在评估地图方案时,只关注绝对精度指标,忽略了更新时效性,结果在实际运营中吃大亏。
2.3 从“重地图”到“轻地图”的转折点
转折点出现在两个技术方向成熟之后。一个是BEV感知,另一个是Transformer在自动驾驶中的应用。
BEV感知的核心思想是:把多个摄像头、激光雷达、毫米波雷达的数据,统一投影到一个鸟瞰视角的二维或三维空间里,在这个空间里做目标检测、车道线分割、可行驶区域划分。这样做的好处是,不同传感器的数据在同一个空间里对齐,融合变得自然,而且输出直接就是规控需要的空间表征。
Transformer的引入则解决了时序融合和长距离依赖的问题。通过注意力机制,模型可以有效地利用历史帧信息,对遮挡和短时感知失败做补偿。这意味着,即使某一帧摄像头没看到某个目标,模型可以通过前几帧的信息推断出它的存在和运动状态。
这两个技术成熟之后,大家发现:原来需要地图提供的“先验”,现在感知系统自己就能实时构建出来。车道线可以实时分割,路沿可以实时检测,交通标志可以实时识别,甚至路口的拓扑结构也可以通过BEV特征推断出来。地图从“必须提前知道”变成了“可以实时感知”,技术栈的依赖关系被彻底改写。
3. 无图方案的核心技术拆解:BEV、Transformer与实时建图
3.1 BEV感知到底是怎么工作的
BEV感知听起来很玄,但拆开来看,它的流程其实很清晰。我以纯视觉方案为例,讲一下典型的处理链路。
假设车上有6个摄像头,分别覆盖前视、前侧视、侧视、后视。每个摄像头输出的是一张2D图像。BEV感知的第一步是特征提取,通常用ResNet或EfficientNet之类的骨干网络,把每张图像变成特征图。第二步是视角转换,这是最关键的一步。需要把每个摄像头的2D特征,投影到统一的BEV空间里。投影的方法有好几种,早期用逆透视变换(IPM),假设地面是平的,直接把图像像素映射到地面网格。但IPM对高度敏感,路面有起伏或者有立体目标时就不准了。
现在主流的方法是基于深度估计的投影。模型会预测每个像素的深度分布,然后根据相机内外参,把像素投影到三维空间,再量化到BEV网格。这个过程通常用体素池化或者可变形注意力来实现。第三步是BEV特征融合,把多个摄像头投影过来的特征在BEV空间里拼接或加权融合。第四步是任务头,在融合后的BEV特征上接不同的检测头,分别做目标检测、车道线分割、可行驶区域分割等。
整个链路听起来复杂,但实际工程中,很多团队会用现成的BEV感知框架,比如基于LSS(Lift-Splat-Shoot)或者BEVFormer的思路。LSS的核心是显式地做深度估计和投影,BEVFormer则用Transformer的注意力机制隐式地完成视角转换。两种思路各有优劣,LSS更直观但深度估计误差会影响精度,BEVFormer精度更高但计算量更大。
实操心得:BEV感知的精度对相机标定极其敏感。我见过一个项目,因为前视相机的外参标定偏差了0.5度,导致BEV空间里的车道线整体偏移了十几厘米,规控模块直接画龙。所以标定环节一定要用高精度标定间,并且定期在线校验。
3.2 Transformer如何解决时序融合与遮挡问题
Transformer在自动驾驶里的应用,最早是从轨迹预测开始的,后来逐渐渗透到感知和规控。它的核心优势是注意力机制可以建模任意两个位置之间的依赖关系,不受距离限制。
在BEV感知里,Transformer主要解决两个问题。第一个是时序融合。自动驾驶的感知不能只看单帧,因为单帧信息有限,遮挡、运动模糊、光照变化都会导致漏检。通过把历史帧的BEV特征和当前帧一起送入Transformer,模型可以学习到目标的运动模式,对短时遮挡做补偿。比如前车被大车挡住了一秒钟,模型可以根据前几帧的位置和速度,推断出它现在大概在哪里。
第二个是空间注意力。在BEV空间里,不同区域的重要性是不一样的。远处的小目标、被遮挡的区域、道路边缘的细节,需要更高的注意力权重。Transformer的自注意力机制可以自适应地分配计算资源,把重点放在关键区域。这比传统的卷积网络更灵活,因为卷积的感受野是固定的,而注意力是动态的。
实际部署时,Transformer的计算量是个大问题。BEV空间如果分辨率很高,比如200x200的网格,每个网格都要和其他网格做注意力计算,复杂度是O(N²),N=40000,根本跑不动。所以工程上通常会用稀疏注意力或者窗口注意力来降低复杂度。比如只让每个网格关注周围一定范围内的网格,或者只对检测到的目标做注意力。这些优化手段在论文里可能一笔带过,但在实际落地时是决定能不能实时运行的关键。
3.3 实时建图:没有地图,车怎么知道自己在哪
无图方案并不是完全不要地图,而是把“高精度地图”替换成“实时构建的局部地图”。这个局部地图通常包括几个要素:车道线、路沿、可行驶区域、交通标志和信号灯、路口拓扑。
车道线的实时检测主要靠视觉分割。BEV空间里的车道线分割,输出的是每条车道线的位置、曲率、颜色、线型(实线、虚线、双线等)。这个信息直接给到规控模块,用于横向控制。路沿和可行驶区域的检测类似,也是语义分割任务,输出的是栅格化的可行驶区域。
交通标志和信号灯的检测,除了分类和定位,还需要做时序跟踪。因为信号灯是周期性变化的,单帧检测可能因为遮挡或光照失败,需要结合历史帧判断当前状态。这里Transformer的时序融合就派上用场了。
路口拓扑的构建是最难的部分。在没有高精度地图的情况下,车需要自己理解路口的连接关系:哪条车道对应哪个出口,左转待转区在哪,掉头口在哪。这个任务通常用图神经网络或者注意力机制来做,把BEV空间里的车道线、停止线、人行横道等要素作为节点,推断它们之间的连接关系。
定位方面,无图方案通常依赖视觉里程计+IMU+GNSS的组合。视觉里程计通过跟踪地面特征点或车道线,估计车辆的相对运动。IMU提供高频的角速度和加速度。GNSS提供绝对位置,但在城市峡谷里误差大。三者融合之后,可以在大部分场景下维持分米级的定位精度。虽然没有高精度地图匹配那么准,但对于车道级导航来说已经够用了。
4. 无图方案落地实操:从数据采集到实车验证的完整流程
4.1 数据采集与标注:无图方案的数据闭环怎么建
无图方案对数据的依赖不是降低了,而是转移了。以前数据采集的重点是地图要素,现在重点变成了动态场景和感知困难样本。
我参与过的一个无图项目,数据采集策略是这样的:首先用一批测试车在城市道路、高速、乡镇道路、停车场等不同场景下跑,采集原始传感器数据。采集的时候不挑路,越复杂越好,因为复杂场景才能暴露感知的短板。每辆测试车每天产生几TB的数据,这些数据传回数据中心后,先做自动化的预处理,包括时间同步、标定校验、质量筛选。
标注环节是重中之重。无图方案的标注重点包括:BEV空间里的3D目标框、车道线分割掩码、可行驶区域掩码、交通标志和信号灯的状态。标注的难点在于一致性。同一个目标在不同帧里的标注必须连贯,否则时序融合会学错。我们当时用了一套半自动标注工具,先用模型预标注,人工再修正。预标注模型用的是上一版模型,这样形成迭代闭环,标注效率能提升好几倍。
注意事项:标注规范一定要提前定死,尤其是车道线的分类标准。我见过一个项目,标注团队对“虚实线”的理解不一致,导致模型学出来的车道线类型混乱,规控模块无法判断能不能变道。后来重新统一了标注规范,返工了两个月的数据。
4.2 模型训练与优化:BEV感知的训练技巧
BEV感知模型的训练,有几个关键点需要特别注意。
第一个是数据增强。BEV空间的增强和2D图像不一样,不能随便旋转缩放,因为会破坏几何一致性。常用的增强手段包括:随机遮挡(模拟传感器遮挡)、颜色抖动(模拟光照变化)、帧丢弃(模拟传感器丢帧)、以及BEV空间的目标复制粘贴(把其他场景的目标贴到当前场景,增加密集场景的样本)。
第二个是损失函数设计。BEV感知通常是多任务学习,同时做检测、分割、深度估计。不同任务的损失需要加权平衡。我的经验是,检测损失和分割损失的权重要根据实际场景调整。如果规控更依赖车道线,那分割损失的权重就要调高。另外,深度估计的损失在训练初期要占较大权重,因为深度不准的话,投影到BEV空间的特征就是错的,后面的任务都学不好。
第三个是训练策略。BEV模型通常很大,参数量在几千万到上亿级别。训练的时候要用混合精度和梯度累积,否则显存不够。学习率调度用余弦退火比较稳,warmup阶段要足够长,让模型先学会基本的特征提取,再学复杂的BEV投影。
实际训练中,我们遇到过模型在训练集上收敛很好,但在验证集上车道线分割的IoU只有0.6左右。排查后发现是验证集的场景分布和训练集差异太大,训练集主要是城市道路,验证集里有很多乡村道路。后来在训练集里补充了乡村道路的数据,IoU提升到了0.75以上。这说明数据分布比模型结构更重要。
4.3 实车验证:从仿真到路测的避坑指南
模型训练完之后,不能直接上实车,要先过仿真。仿真环境里可以复现各种极端场景,比如鬼探头、前车急刹、大雨大雾,这些在实车上很难安全地测试。仿真测试主要看几个指标:感知的召回率和误检率、规控的舒适性和安全性、以及系统的实时性。
仿真通过之后,进入实车测试阶段。实车测试要遵循从简到繁的原则。先在封闭场地测试基本功能,比如车道保持、跟车、变道。然后在园区道路测试低速场景。最后才上城市道路和高速。每个阶段都要有明确的安全员接管标准和数据记录要求。
我踩过的一个坑是传感器同步。实车测试时,摄像头、激光雷达、IMU的时间戳必须严格同步,否则BEV空间里的目标位置会漂移。我们当时用的是一个硬件同步方案,但某个摄像头的触发信号有延迟,导致融合后的目标位置在高速行驶时偏差了半米。后来换了PTP(精确时间协议)同步方案,问题才解决。
另一个坑是在线标定漂移。车辆行驶过程中的振动会导致相机外参缓慢变化,如果不做在线校验,BEV感知的精度会逐渐下降。我们的做法是,用车道线检测的结果反向校验相机外参,如果发现车道线在BEV空间里不平行了,就触发重新标定。
5. 常见问题与排查技巧实录
5.1 感知层面的典型问题
问题一:BEV空间里目标位置抖动
现象是检测框在BEV空间里来回跳,规控模块跟着画龙。排查思路:先看时间同步,确认所有传感器的时间戳对齐;再看标定,用静止场景校验外参;最后看模型,可能是时序融合模块没有正确利用历史信息。解决办法:加强时序融合的权重,或者在BEV特征上做时序平滑。
问题二:车道线分割断裂
现象是车道线在BEV空间里时断时续,导致规控无法稳定跟线。排查思路:检查训练数据里是否有足够的遮挡样本;检查模型的感受野是否足够大;检查后处理逻辑,可能是阈值设得太高。解决办法:补充遮挡样本,增大感受野,降低分割阈值,并加入车道线拟合的后处理。
问题三:交通信号灯误检
现象是把路灯、车尾灯误检为信号灯。排查思路:检查训练数据里是否标注了足够的负样本;检查信号灯的检测是否结合了位置先验(信号灯通常在路口上方)。解决办法:增加负样本,加入位置约束,用时序信息过滤闪烁的误检。
5.2 规控层面的典型问题
问题一:无图方案下路口通行犹豫
现象是车到了路口不知道该怎么走,反复试探。排查思路:检查路口拓扑的构建是否准确;检查规控的状态机是否合理。解决办法:加强路口拓扑的实时推断,引入更多先验(比如停止线、人行横道的位置),规控状态机要设计明确的决策逻辑。
问题二:变道决策过于保守或激进
现象是车要么一直不变道,要么突然变道吓到乘客。排查思路:检查车道线检测的稳定性;检查变道决策的阈值。解决办法:对车道线做时序平滑,变道决策加入舒适性约束,用MPC或强化学习优化决策策略。
5.3 系统层面的典型问题
问题一:算力不足导致帧率下降
BEV感知和Transformer都很吃算力。如果帧率掉到10Hz以下,规控的响应就会变慢。排查思路:用性能分析工具看瓶颈在哪,是模型推理还是后处理。解决办法:模型量化(FP16或INT8)、算子融合、剪枝蒸馏,或者换更强的计算平台。
问题二:内存泄漏导致长时间运行崩溃
实车测试跑几个小时之后系统变慢甚至崩溃。排查思路:用内存分析工具监控内存占用,看是否有持续增长。解决办法:检查数据队列是否有积压,检查模型推理是否有缓存未释放,检查日志系统是否写爆了磁盘。
| 问题类型 | 典型现象 | 排查方向 | 解决手段 |
|---|---|---|---|
| 感知抖动 | 检测框跳动 | 时间同步、标定、时序融合 | 加强同步、在线标定、时序平滑 |
| 车道线断裂 | 跟线不稳 | 训练数据、感受野、后处理 | 补充样本、增大感受野、拟合后处理 |
| 信号灯误检 | 误刹或闯灯 | 负样本、位置先验、时序 | 增加负样本、位置约束、时序过滤 |
| 路口犹豫 | 通行效率低 | 拓扑构建、状态机 | 加强拓扑推断、优化决策逻辑 |
| 算力不足 | 帧率下降 | 性能分析 | 量化、融合、剪枝、换平台 |
| 内存泄漏 | 长时间运行崩溃 | 内存监控 | 检查队列、缓存、日志 |
实操心得:无图方案的问题排查,一定要建立数据回放能力。把实车采集的数据在离线环境里回放,可以反复复现问题,比在实车上调试效率高得多。我们当时搭了一套回放系统,支持逐帧查看BEV感知结果、规控轨迹、传感器原始数据,排查问题的速度提升了好几倍。
6. 无图方案的边界与未来演进方向
6.1 无图不是万能药:哪些场景仍然需要地图
虽然无图方案在很多场景下表现不错,但它不是万能的。有几类场景,地图仍然有不可替代的价值。
第一类是极端天气和光照。大雨、大雾、大雪、夜间无路灯,这些场景下摄像头的感知能力大幅下降,激光雷达也会受雨雾影响。这时候如果有一张高精度地图作为先验,至少能知道道路的走向和车道数量,安全性会高很多。
第二类是复杂路口和特殊道路结构。比如五岔路口、异形路口、潮汐车道、可变导向车道,这些场景的拓扑结构很复杂,实时推断容易出错。地图可以提前把这些信息告诉车,减少实时推断的负担。
第三类是功能安全冗余。在L3及以上的自动驾驶方案里,功能安全要求有冗余的定位和感知手段。地图可以作为独立的冗余源,在感知系统失效时提供降级运行的能力。
所以我的判断是,未来不会是“完全无图”,而是“轻图+实时感知”的融合方案。地图提供粗粒度的先验(比如道路级别、路口级别),感知提供细粒度的实时信息(车道线、目标、可行驶区域)。两者互补,既降低了地图的采集和更新成本,又保留了安全冗余。
6.2 数据闭环与影子模式:无图方案如何持续进化
无图方案的性能高度依赖数据。没有地图先验,感知模型必须见过足够多的场景,才能在各种路况下稳定工作。所以数据闭环是无图方案的核心竞争力。
数据闭环的典型流程是:车端采集数据 -> 上传到云端 -> 自动筛选困难样本 -> 人工标注 -> 模型训练 -> 模型下发 -> 车端更新。这个循环越快,模型的迭代速度就越快。
影子模式是数据闭环里的关键机制。车在人工驾驶或者辅助驾驶状态下,感知和规控模型仍然在后台运行,但不控制车辆。系统对比模型输出和人类驾驶行为,如果发现不一致,就把这段数据标记为困难样本上传。这样可以在不增加测试车的情况下,持续收集真实场景的数据。
我们当时用影子模式收集了大量“人类驾驶员会变道但模型没变”的样本,分析后发现主要是模型对后方来车的速度估计不准。补充了相关数据后,变道决策的成功率提升了20%以上。
6.3 从BEV到端到端:下一步的技术演进
BEV感知之后,下一个技术热点是端到端自动驾驶。端到端的思路是,把感知、预测、规划、控制全部整合到一个神经网络里,输入是原始传感器数据,输出是控制指令。这样做的理论优势是,避免了模块之间的信息损失,整个系统可以联合优化。
但端到端目前还面临很多挑战。首先是可解释性差,出了问题很难排查。其次是训练数据要求极高,需要海量的驾驶数据。最后是安全验证困难,很难用传统的功能安全方法去验证一个黑盒模型。
我个人的判断是,端到端会在未来三到五年内逐步落地,但不会完全取代模块化方案。更可能的形态是“端到端+模块化冗余”,端到端负责常规场景,模块化方案负责安全兜底。地图在这个架构里的角色,会进一步弱化,但不会消失。
最后分享一个小技巧:如果你正在做无图方案的开发,建议尽早建立场景库。把各种典型场景(路口、匝道、施工区、隧道、收费站)的数据整理成标准化的测试集,每次模型更新都跑一遍场景库,确保没有退化。这个习惯能帮你避免很多“改了A场景,B场景崩了”的问题。