算法评估与验证指标
本页用于把算法"能跑"升级为"可量化、可对比、可回归",建立从模块级到系统级的完整指标体系。
1. 为什么需要统一指标体系
自动驾驶算法跨模块耦合强,缺乏统一指标体系会导致:
- 局部优化,系统退化:感知指标提升但规划输入质量下降
- 问题难以发现:没有基准,修改后的退化无法被检测
- 团队沟通成本高:各模块用不同指标,无法横向对比
指标体系的价值
指标体系不是"考核工具",而是"工程健康度仪表盘"。好的指标能让团队在问题发生之前就发现趋势。
2. 感知层指标
2.1 目标检测指标
IoU(交并比):
\[\text{IoU} = \frac{|A \cap B|}{|A \cup B|}\]
Precision 与 Recall:
\[\text{Precision} = \frac{TP}{TP + FP}, \quad \text{Recall} = \frac{TP}{TP + FN}\]
mAP(mean Average Precision):
- 对每个类别计算 Precision-Recall 曲线
- 计算曲线下面积(AP)
- 对所有类别取均值(mAP)
常用评测标准:
| 标准 | IoU 阈值 | 说明 |
|---|---|---|
| KITTI | 0.7(车),0.5(行人/自行车) | 2D/3D 框评测 |
| nuScenes | 2D 中心距离阈值(0.5/1/2/4 m) | 多类别、多距离 |
| Waymo OD | 3D IoU 0.7 | 开放数据集基准 |
2.2 TIDE 误差分析
TIDE(A General Toolbox for Identifying Object Detection Errors)将误差分解为六类:
| 误差类型 | 说明 |
|---|---|
| Cls(分类错误) | 位置正确但类别错 |
| Loc(定位错误) | 类别正确但位置偏差大 |
| Both(双重错误) | 位置和类别都不对但有重叠 |
| Dupe(重复检测) | 对同一目标重复预测 |
| BG(背景误检) | 将背景误检为目标 |
| Miss(漏检) | 未检测到任何真值目标 |
2.3 3D 目标检测特有指标
| 指标 | 说明 |
|---|---|
| 中心距离误差 | 预测框中心与真值中心的 3D 距离 |
| 朝向误差 | 预测朝向与真值朝向之差(弧度) |
| 速度误差 | 预测速度与真值速度之差 |
| NDS(nuScenes) | 综合得分,含检测率+位置+朝向+速度+属性 |
3. 预测层指标
3.1 基础轨迹误差
ADE(Average Displacement Error):
\[\text{ADE} = \frac{1}{N} \sum_{t=1}^{N} \| \hat{p}_t - p_t \|_2\]
FDE(Final Displacement Error):
\[\text{FDE} = \| \hat{p}_T - p_T \|_2\]
其中 \(\hat{p}_t\) 为预测轨迹点,\(p_t\) 为真值轨迹点,\(T\) 为预测时域末端。
3.2 多模态预测指标
预测模型通常输出多条候选轨迹(多模态),使用最优轨迹评估:
\[\text{minADE}_k = \min_{j \in [1,k]} \text{ADE}(\hat{\tau}_j, \tau_{\text{gt}})\]
\[\text{minFDE}_k = \min_{j \in [1,k]} \text{FDE}(\hat{\tau}_j, \tau_{\text{gt}})\]
MR(Miss Rate): FDE 超过阈值(如 2 m)的比例。
NLL(负对数似然): 用于评估概率分布质量,值越小越好。
| 指标 | 说明 | 建议监控 |
|---|---|---|
| minADE₆ | 6 条候选中最佳的平均误差 | 是 |
| minFDE₆ | 6 条候选中最佳的终点误差 | 是 |
| MR(2m) | 最终误差 > 2m 的比例 | 是 |
| 多模态覆盖率 | 候选轨迹覆盖真实分布的比例 | 可选 |
4. 规划层指标
4.1 开环 vs 闭环评估
| 评估方式 | 说明 | 局限 |
|---|---|---|
| 开环(Replay) | 将规划输出与真实驾驶轨迹对比 | 无交互,不能评估因果 |
| 闭环(Closed-loop) | 在仿真中执行规划结果,观察后续状态 | 依赖仿真保真度 |
开环指标的陷阱
开环 L2 误差低不等于闭环安全。车辆跟踪规划轨迹后,交通参与者的反应会改变,开环中"好"的决策可能在闭环中导致碰撞。
4.2 规划评估指标
| 指标 | 说明 | 计算方式 |
|---|---|---|
| 碰撞率 | 与障碍物发生碰撞的场景比例 | 碰撞场景数 / 总场景数 |
| 最小 TTC | 规划轨迹上的最小碰撞时间 | \(\min_t TTC(t)\) |
| 最小 THW | 跟车场景最小时间间距 | \(\min_t \frac{d(t)}{v(t)}\) |
| 轨迹平顺性 | jerk 均方根 | \(\sqrt{\frac{1}{N}\sum \dddot{s}^2}\) |
| 任务效率 | 完成规划目标的速度与路径质量 | 平均速度、额外路径长度 |
4.3 nuPlan 基准
nuPlan 是 Motional 开放的闭环规划基准:
- Reactive Simulation:其他交通参与者对自车行为做出响应
- 评分维度:驾驶舒适度、碰撞率、完成率、进度效率
- 挑战场景:无保护左转、密集城区、紧急变道
5. 控制层指标
| 指标 | 说明 | 参考目标 |
|---|---|---|
| 横向误差 RMSE | 跟踪参考轨迹的横向精度 | < 10 cm(城区) |
| 航向误差 P95 | 95分位航向偏差 | < 2°(城区) |
| 速度误差 RMSE | 纵向速度跟踪精度 | < 1 km/h |
| 峰值横向加速度 | 舒适性 | < 3 m/s² |
| 峰值纵向 jerk | 舒适性(乘坐体验) | < 5 m/s³(非紧急) |
| 急刹频次 | 每百公里 jerk > 4 m/s³ 的次数 | < 2 次/百公里 |
6. 系统级指标
6.1 接管率(Disengagement Rate)
接管率是衡量系统整体能力的最直接指标:
\[\text{接管率} = \frac{\text{人工干预次数}}{\text{自动驾驶里程(千公里)}}\]
DMV(加州 DMV)每年公开各企业的接管率数据,是行业公认对标指标。
接管类型分类:
| 类型 | 说明 |
|---|---|
| 技术接管(TOR) | 系统主动请求人工接管 |
| 主动接管 | 安全员主动干预 |
| 计划内接管 | 进入测试区域前的预设接管 |
只有"计划外技术/主动接管"才计入接管率统计。
6.2 任务完成率
\[\text{任务完成率} = \frac{\text{全程无人工干预完成的次数}}{\text{总测试次数}}\]
6.3 MRC 触发率
每次触发最小风险条件(MRC)都需要记录和分析:
\[\text{MRC率} = \frac{\text{MRC触发次数}}{\text{自动驾驶里程(万公里)}}\]
7. 仿真评估体系
7.1 主流仿真平台
| 平台 | 特点 | 适用 |
|---|---|---|
| CARLA | 开源,Unreal Engine,丰富场景 | 感知/规划研究 |
| SUMO | 交通流仿真,微观交通 | 规划/V2X仿真 |
| lgsvl | 商用级,ROS 2 原生支持 | 系统集成测试 |
| NVIDIA Drive Sim | 传感器级物理仿真 | 感知数据生成 |
| nuPlan | 真实轨迹 + 反应式仿真 | 规划基准评测 |
7.2 场景分类
按难度和出现频率分层管理场景:
Level 1(日常工况,高频):直道跟车、简单变道、有灯路口
Level 2(较难工况,中频):无保护左转、匝道汇入、施工绕行
Level 3(长尾工况,低频):鬼探头、急 cut-in、极端天气
Level 4(事故边界):从真实事故案例重建的场景
8. 回归测试框架
8.1 回归策略
触发回归的时机:
├─ 模型版本更新
├─ 算法参数变更
├─ 依赖模块接口变更
└─ 定期(每周)全量回归
回归通过标准:
├─ 感知:mAP ≥ 基线 × 99%
├─ 预测:minFDE₆ ≤ 基线 × 101%
├─ 规划:碰撞率 = 0,任务完成率 ≥ 基线
└─ 控制:横向误差 RMSE ≤ 基线 × 105%
8.2 门禁设计
| 门禁级别 | 触发条件 | 处置方式 |
|---|---|---|
| 红线(阻塞发布) | 碰撞率上升、接管率倒退 > 10% | 自动拒绝合并 |
| 黄线(人工评审) | 性能指标下降 1–10% | 需要 TL 审批 |
| 绿线(自动通过) | 所有指标持平或提升 | 自动合并 |
9. 数据闭环工程实践
9.1 场景挖掘流程
路测数据
│
├─ 规则挖掘:基于告警、接管、传感器异常触发
├─ 模型挖掘:用困难样本检测模型找感知难例
└─ 聚类分析:对 embedding 做聚类,发现未覆盖场景
│
↓
场景库(标注+分级)
│
↓
训练集更新 → 模型迭代 → 回归验证 → 发布
9.2 最小可执行评估清单
- [ ] 是否为每个模块定义了模块级指标?
- [ ] 是否有与系统级指标的映射关系?
- [ ] 是否有稳定可复现的回放基准集?
- [ ] 是否定义了发布前必须通过的门禁项?
- [ ] 是否建立了"问题→根因→修复→验证"的可追踪链路?
- [ ] 是否有自动化回归流水线(CI/CD 集成)?