3. Hard Case概念与分类

在自动驾驶研发中,Hard Case(困难案例)并不是简单的“表现不好的场景”,而是指在当前系统能力、数据分布或评价体系下,导致感知、预测、规划或控制出现显著偏差、失效或高风险行为的特定场景片段。它通常具备三个特征:可复现的触发条件、明确的失效表现、以及可归因的系统环节。理解Hard Case的关键,在于把它从“感觉很难”转化为“可定义、可分类、可度量、可闭环”的工程对象。

核心定义:Hard Case = 触发条件(Trigger) + 系统行为(Behavior) + 失效模式(Failure Mode) + 风险等级(Risk)。缺少任一维度,都难以进入闭环挖掘流程。

一、Hard Case的核心原理:从“难”到“可工程化”

Hard Case之所以“难”,往往不是单一原因,而是场景复杂度、传感器退化、模型泛化不足、规则冲突、标注歧义等因素叠加。工程上需要把它拆解为可观测的信号链:

  • 输入层:光照、天气、道路结构、交通参与者行为、遮挡关系。
  • 感知层:漏检、误检、分类错误、跟踪丢失、深度估计偏差。
  • 预测层:意图误判、轨迹多模态覆盖不足、交互博弈失败。
  • 规划控制层:急刹、犹豫、压线、避让不足、舒适性下降。
  • 评价层:接管、碰撞、TTC低于阈值、加速度超限、路径偏离。

因此,Hard Case分类不能只看“场景名字”,而要同时看功能链路和失效模式。同一场景可能触发不同失效,同一失效也可能由不同场景引起。

二、按场景分类:从道路结构到交通行为

场景分类是最直观的维度,常用于数据检索和测试用例组织。典型类别包括:

  • 道路结构类:无保护左转、环岛、匝道汇入、施工改道、车道线缺失。
  • 交通参与者类:行人鬼探头、非机动车逆行、大车遮挡、加塞、cut-in。
  • 环境条件类:逆光、夜间低照度、雨雾、雪地反光、隧道出入口。
  • 动态交互类:多车博弈、让行冲突、紧急车辆避让、拥堵跟车。

场景分类的价值在于可检索、可复现,但它的局限是:同一个“无保护左转”在不同路口、不同交通流下难度差异巨大,必须结合边界定义。

三、按功能分类:定位到系统模块

功能分类直接对应研发责任归属,便于分派修复任务:

功能模块典型Hard Case表现常用指标
感知远距离小目标漏检、遮挡后重现、雨雾误检Recall、mAP、ID Switch
预测行人意图误判、车辆变道预测延迟MinADE、意图准确率
规划无保护左转犹豫、避让轨迹不合理接管率、舒适度、通行效率
控制急刹、横向抖动、跟踪超调加速度、 jerk、横向误差
定位与地图隧道内漂移、匝道匹配错误横向/纵向定位误差

四、按失效模式分类:从“现象”到“根因”

失效模式是Hard Case闭环的核心。常见分类包括:

  1. 漏检/误检型:应识别未识别,或把背景识别为目标。
  2. 误判型:分类、意图或行为预测错误。
  3. 决策冲突型:规则之间矛盾,导致犹豫或急动。
  4. 规划不可行型:生成轨迹违反动力学或碰撞约束。
  5. 控制跟踪型:执行偏差导致舒适性或安全性下降。
  6. 数据/标注型:真值错误、标注歧义、场景标签缺失。

提示:失效模式必须可观测、可量化。例如“左转犹豫”应细化为“在无保护左转中,自车在可通行间隙出现超过1.5秒的纵向加速度低于0.2m/s²且未完成转向”的可检测条件。

五、典型示例与边界定义

下面给出一个典型Hard Case的结构化描述,便于进入挖掘与闭环流程:

case_id: HC-URBAN-UL-001
scene: 城市无保护左转
trigger:
  - 对向直行车流连续
  - 存在遮挡视线的停止车辆
  - 光照:逆光
behavior:
  - 自车在路口内停滞超过2.0s
  - 随后急加速通过,横向加速度峰值>2.5m/s²
failure_mode: 决策冲突 + 规划不可行
risk: 高(TTC_min < 1.8s,存在碰撞风险)
boundary:
  - 可通行间隙阈值:4.5s
  - 最大等待时间:3.0s
  - 舒适性上限:jerk < 2.0m/s³

边界定义是Hard Case从“主观难”走向“客观可判定”的关键。它通常包括:触发边界(什么条件下算进入该场景)、通过边界(什么表现算通过)、失败边界(什么表现算失败)、以及风险边界(TTC、加速度、jerk等阈值)。没有边界,Hard Case就无法自动挖掘和回归验证。

六、误区与复盘

常见误区:把Hard Case等同于“罕见场景”。实际上,很多Hard Case是高频场景中的长尾组合,例如“雨天+夜间+无保护左转+外卖骑手逆行”。罕见不等于困难,高频也不等于简单。

  • 误区一:只按场景分类,忽略功能与失效模式,导致修复责任不清。
  • 误区二:边界定义过宽,导致大量正常案例被误判为Hard Case。
  • 误区三:只记录现象,不记录触发条件和真值,导致无法复现。
  • 复盘要点:每个Hard Case应至少回答“在哪一层失效、由什么触发、边界是什么、如何验证修复”。
Hard Case 三维分类与闭环关系 按场景分类 无保护左转 / 环岛 / 匝道 鬼探头 / 加塞 / 逆光 施工改道 / 隧道出入口 按功能分类 感知 / 预测 / 规划 控制 / 定位与地图 对应责任模块与指标 按失效模式分类 漏检 / 误检 / 误判 决策冲突 / 规划不可行 控制跟踪 / 数据标注 边界定义 触发边界 · 通过边界 · 失败边界 · 风险边界 挖掘 规则 + 模型 + 接管 标注与归因 场景标签 + 失效标签 修复与回归 模型 / 规则 / 数据 验证与入库 通过边界 + 风险边界 闭环反馈:新Hard Case持续入库,驱动数据与模型迭代

综上,Hard Case的工程化定义必须同时覆盖场景、功能、失效模式三个维度,并用边界定义将其转化为可挖掘、可标注、可回归的对象。只有如此,Hard Case才能从“个案讨论”升级为“闭环资产”,持续驱动自动驾驶系统迭代。