一、感知系统概述
1.1 什么是感知系统
感知系统,说白了就是自动驾驶汽车的「眼睛」和「耳朵」。
我经常跟团队里的新人说:你想想看,人开车靠什么?靠眼睛看路、看车、看行人,靠耳朵听喇叭、听周围动静。感知系统干的就是同样的事——只不过它用的是摄像头、激光雷达、毫米波雷达这些传感器。
在我参与过的几个量产项目中,感知系统通常包含三个层面:
- 传感器层:采集原始数据,比如图像、点云、雷达回波
- 感知算法层:从数据中提取有意义的信息,比如「前方5米有个行人」
- 感知融合层:把多个传感器的结果综合起来,形成统一的场景理解
嗯,这里要注意:感知系统不是简单的「传感器+算法」堆砌。我见过不少团队,传感器装了一堆,算法也跑得挺快,但实际路测时就是各种漏检、误检。为什么?因为缺乏系统性的精度闭环验证。
核心观点:感知系统的本质,是从物理世界中提取结构化信息,供后续的规划、控制模块使用。它的输出质量,直接决定了整个自动驾驶系统的安全边界。
1.2 感知系统的核心任务
感知系统要干的事,归纳起来就三个:检测、分类、跟踪。我习惯把它们叫做「感知三件套」。
检测(Detection)
检测就是回答「哪里有东西」。
举个例子,摄像头拍到一张图像,检测算法要能框出所有车辆的位置。激光雷达扫到一帧点云,检测算法要能找出所有障碍物的轮廓。
我在项目中遇到过最头疼的问题:检测的召回率和精度怎么平衡?召回率高了,虚警一堆;精度高了,又容易漏检。这个平衡点,说实话没有标准答案,得看具体场景。
避坑指南:我曾经在一个高速NOA项目里,为了追求检测精度,把置信度阈值设得很高。结果呢?高速上有个静止的故障车,系统没检测到——因为点云特征太稀疏,置信度不够。从那以后,我养成了一个习惯:先保证召回率,再用后处理去过滤虚警。
分类(Classification)
分类就是回答「这个东西是什么」。
检测框出来了,你得知道框里的是车、是人、是自行车,还是路边的垃圾桶。分类的粒度可以很粗(车辆 vs 非车辆),也可以很细(轿车 vs SUV vs 卡车)。
我个人习惯把分类问题分成两类:
- 粗分类:区分动静态物体,比如车辆、行人、骑行者、静止障碍物
- 细分类:进一步区分子类,比如救护车、警车、工程车
你想想看,如果分类错了会怎样?把行人分类成自行车,规划模块可能就不会做紧急避让——后果很严重。
跟踪(Tracking)
跟踪就是回答「这个东西接下来会去哪」。
单帧检测只能告诉你「现在」的情况。但自动驾驶需要预测未来。跟踪算法通过多帧关联,估计出每个物体的速度、加速度、运动轨迹。
我记得有一次做城市道路测试,有个行人突然从路边停着的公交车前面窜出来。单帧检测根本来不及反应,但跟踪算法提前几帧就发现了这个行人的运动趋势——因为他的位置在连续几帧里都在向车道方向移动。这就是跟踪的价值。
| 任务 | 输入 | 输出 | 典型指标 |
|---|---|---|---|
| 检测 | 图像/点云/雷达数据 | 目标位置(Bounding Box) | 召回率、精度、mAP |
| 分类 | 检测框内的特征 | 目标类别标签 | 分类准确率、混淆矩阵 |
| 跟踪 | 多帧检测结果 | 目标ID、轨迹、运动状态 | MOTA、ID Switch、MT/ML |
1.3 精度闭环验证的必要性
好,现在聊一个关键问题:为什么要做精度闭环验证?
我直接说结论:因为感知系统不是「开发完就完事」的。
你想想看,一个感知模型在训练集上跑得再好,到了真实道路上,光照变了、天气变了、场景变了,性能一定会掉。我见过最夸张的一次,一个模型在测试集上mAP做到0.85,上了路直接掉到0.3——因为训练数据里全是晴天,而测试那天是雨天。
精度闭环验证,说白了就是:
- 定义精度标准:什么样的感知输出算「合格」?比如检测召回率不低于95%,分类准确率不低于98%
- 持续测量精度:在真实路测、仿真场景中,不断评估感知系统的实际性能
- 发现精度问题:哪些场景下精度下降了?是传感器问题还是算法问题?
- 闭环改进:针对发现的问题,优化算法、补充数据、调整参数,然后重新验证
重要提醒:精度闭环验证不是一次性的工作。我参与过的项目,从开发到量产,精度验证至少要做三轮:
- 第一轮:算法开发阶段,用离线数据集验证
- 第二轮:系统集成阶段,用实车采集数据验证
- 第三轮:量产前,用大规模路测数据做最终验证
每一轮都可能发现新问题,然后回到算法开发去改进。这就是「闭环」的含义。
我个人习惯把精度闭环验证比作「体检」。你不能只在入职时体检一次,然后三年不体检。感知系统也一样,它需要持续监控、持续改进。尤其是在OTA升级后,一定要重新跑一遍精度验证流程——我曾经吃过这个亏,升级了一个模型版本,结果夜间检测性能反而下降了,还好验证流程及时发现了问题。
经验之谈:精度闭环验证最难的不是技术,而是「定义什么是对的」。同一个场景,不同标注员可能给出不同的标注结果。所以,我建议在项目启动时就建立一套完善的标注规范和验收标准,否则后面验证出来的「精度问题」,可能只是标注不一致导致的假象。
这张图展示了我常用的精度闭环验证流程。你看,从传感器数据采集,到算法处理,再到精度评估,如果达标就直接部署;如果不达标,就进入问题分析环节,找到根因后做闭环改进,然后重新验证。这个循环会一直持续,直到精度满足要求为止。
嗯,最后说一句:精度闭环验证不是锦上添花,而是自动驾驶量产落地的必要条件。没有它,你永远不知道你的感知系统在真实世界里到底表现如何。