1. 课程导入

自动驾驶模仿学习(Imitation Learning, IL)试图让车辆通过观察人类驾驶行为来学习驾驶策略,而不是依赖人工设计规则或在线试错。它的核心思想是:把“专家轨迹”当作监督信号,训练一个从感知输入到控制输出的映射函数。然而,真正决定模仿学习系统上限的,往往不是网络结构,而是数据工程——数据从哪里来、如何筛选、如何标注、如何组织、如何评估、如何闭环迭代。本课程将围绕这条主线,建立一套可落地的自动驾驶模仿学习数据工程方法论。

一、学习目标:从“会训模型”到“会造数据闭环”

完成本课程后,学习者应达到以下四个层次的目标:

  • 概念层:理解模仿学习、行为克隆、逆强化学习、DAgger、协变量偏移等核心概念及其在自动驾驶中的适用边界。
  • 数据层:掌握多源数据采集、场景挖掘、自动标注、数据清洗、难例挖掘与数据配比的方法。
  • 工程层:能够设计数据管道(Data Pipeline),包括采集、存储、检索、版本管理、训练集构建与回放验证。
  • 闭环层:建立“数据—训练—评估—回灌”的迭代闭环,理解如何用仿真与实车反馈持续提升策略鲁棒性。

一句话概括:模仿学习数据工程的目标,是让“专家怎么开”变成“模型怎么学”,并让“模型哪里不会”变成“下一轮采什么数据”。

二、核心概念:模仿学习的数据视角

从数据工程角度看,模仿学习系统可以抽象为四个关键对象:专家策略 π*、学习者策略 πθ、状态分布 dπ、轨迹数据集 D。行为克隆(Behavior Cloning, BC)直接最小化专家动作与模型动作的差异:

L_BC(θ) = E_(s,a)~D [ || πθ(s) - a ||² ]

其中:
  s:感知输入(图像、点云、历史状态)
  a:专家控制量(转向、油门、刹车)
  D:专家轨迹数据集

但 BC 存在协变量偏移问题:训练时模型只见过专家状态分布,推理时一旦偏离,误差会累积放大。DAgger 通过让专家对学习者访问到的状态进行标注来缓解这一问题,而数据工程的任务,就是为这些算法提供高质量、高覆盖、高一致性的数据支撑。

在自动驾驶中,数据通常分为以下几类:

数据类型 典型来源 在模仿学习中的作用
实车路测数据 测试车、量产车影子模式 提供真实专家轨迹与长尾场景
仿真数据 CARLA、LGSVL、自研仿真 低成本覆盖危险与稀有场景
人类驾驶日志 网约车、物流车队 补充自然驾驶行为分布
回灌与干预数据 安全员接管、远程干预 修正模型错误,形成难例集

三、整体框架:数据工程在模仿学习中的位置

下图展示了自动驾驶模仿学习数据工程的总体框架。它从多源采集出发,经过场景挖掘、标注、清洗与配比,进入训练与评估,再通过回灌和难例挖掘回到数据池,形成闭环。

自动驾驶模仿学习数据工程闭环框架 多源数据采集 实车 / 仿真 / 日志 传感器同步与时间戳 场景挖掘与切片 触发式 / 语义式 / 聚类 长尾与危险场景优先 标注与清洗 自动标注 + 人工抽检 去重 / 去噪 / 一致性校验 数据配比与版本 场景权重 / 难度分层 数据集版本管理 模仿学习训练与评估 行为克隆 / DAgger / 逆强化学习 · 开环指标 + 闭环仿真 + 实车回放 评估维度:安全性、舒适性、拟人性、泛化性 回灌与难例挖掘 安全员接管 / 模型失败片段 自动打标 + 优先级排序 数据回灌 闭环迭代关键问题 数据覆盖是否足够?标注是否一致?评估是否可信?回灌是否及时? 每一轮迭代都应回答:模型错在哪、缺什么数据、下一轮采什么。

四、方法流程:一条数据从采集到训练的旅程

为了让抽象框架可操作,下面给出一条典型的数据处理流程。它适用于实车数据与仿真数据的混合场景:

  1. 采集与同步:摄像头、激光雷达、毫米波雷达、IMU、GNSS 与底盘信号按统一时间基准对齐,生成原始 rosbag 或自定义格式记录。
  2. 场景切片:按事件触发(急刹、接管、近距离切入)或语义标签(路口、匝道、施工区)切分为短片段,便于检索与配比。
  3. 自动标注:利用已有感知模型生成障碍物、车道线、可行驶区域伪标签,再对关键帧进行人工修正。
  4. 质量清洗:剔除传感器失效、时间戳跳变、标注冲突、轨迹抖动过大的片段。
  5. 数据配比:按场景类别、难度等级、天气光照、地域分布设定采样权重,避免模型偏向常见场景。
  6. 训练与评估:在开环动作误差、闭环仿真通过率、实车回放接管率等指标上综合评估。
  7. 回灌迭代:将模型失败片段、安全员接管片段重新进入数据池,形成下一轮训练集。

实践提示:数据工程中最容易被低估的是“检索能力”。当模型在某个场景失败时,如果无法在数小时内从海量数据中找回相似片段,闭环迭代就无从谈起。因此,场景标签体系与向量检索索引应与采集管道同步建设。

五、案例场景:一个“无保护左转”的数据闭环

假设模型在城市无保护左转场景中频繁出现“犹豫不决”或“抢行”问题。数据工程团队可以这样处理:

  • 从实车日志中检索所有无保护左转片段,按对向车流密度、行人干扰、视野遮挡程度分层。
  • 在仿真中批量生成极端场景:对向车高速接近、行人突然横穿、视线被大车遮挡。
  • 对安全员接管片段进行重点标注,标记“应该等待”与“应该通过”的决策边界。
  • 调整训练集中该场景权重,并加入“决策犹豫”对应的时序特征。
  • 训练后先在仿真中评估通过率与碰撞率,再选择高风险片段进行实车回放验证。

这个案例说明:数据工程不是一次性清洗,而是围绕模型弱点持续构造“针对性数据”的过程。

六、常见误区与复盘

误区一:数据越多越好。无差别堆数据会稀释关键场景权重,导致模型在长尾场景上表现下降。应优先保证覆盖度与难度分布,而非单纯追求总量。

误区二:标注一次就够。标注规范会随模型迭代和场景理解变化,需要版本化管理与一致性抽检。

误区三:只看开环误差。开环动作误差低不代表闭环安全,必须结合仿真与实车回放评估。

误区四:忽略数据版本与可复现性。没有版本管理的数据集无法支撑可靠对比实验,也无法定位性能回退原因。

复盘时建议回答三个问题:本轮迭代模型在哪些场景失败?这些场景在数据集中占比多少?下一轮采集与标注应如何调整?只有把这三个问题固化到流程中,模仿学习数据工程才能真正形成闭环。

七、学习路径建议

本课程后续将按“概念—采集—挖掘—标注—配比—训练—评估—闭环”的顺序展开。建议学习者按以下路径推进:

  • 第一遍:建立整体框架认知,理解数据工程在模仿学习中的位置。
  • 第二遍:动手实现一个小型数据管道,从 rosbag 解析到场景切片。
  • 第三遍:结合仿真环境,完成一次“失败片段回灌—重训练—再评估”的完整闭环。

当你能把“模型哪里不会”翻译成“下一轮采什么数据、标什么标签、配什么权重”时,就已经掌握了自动驾驶模仿学习数据工程的核心能力。