4. 驾驶数据工程
模仿学习驾驶策略的上限,很大程度上由数据决定。模型看到的场景越丰富、标注越准确、清洗越彻底,策略在闭环测试中的泛化能力就越强。驾驶数据工程不是简单的“录数据”,而是一条从传感器配置、采集触发、标注质检、清洗筛选到增强与数据集版本化的工程流水线。本节将这条链路拆开,说明每个环节的关键决策与常见陷阱。
一、核心原理:数据决定策略的分布边界
模仿学习本质上是拟合专家驾驶行为在状态空间上的条件分布。若训练数据只覆盖晴天直行,模型就无法学会雨天避让;若标注把刹车点标晚 0.3 秒,策略就会表现出“犹豫”甚至追尾倾向。因此数据工程的核心目标是:让数据分布尽可能贴近目标运行域(ODD),同时保证标签与真实驾驶意图一致。
这要求我们在采集阶段就明确 ODD:城市道路还是高速?是否包含夜间、雨雾、施工区、无保护左转?传感器配置决定了能感知什么,标注规范决定了能监督什么,清洗与增强则决定了最终进入训练集的数据质量与多样性。
二、方法流程:六个环节的关键动作
1. 数据采集。采集车通常配备前视相机、环视相机、激光雷达、毫米波雷达、GNSS/IMU 与 CAN 总线记录仪。采集触发策略很关键:可以按时间连续录制,也可以由事件触发(急刹、近距离切入、人工接管)。事件触发能显著提升高价值片段比例,但需要设计好触发阈值与前后缓冲窗口。
2. 传感器配置。多传感器融合的前提是标定与时间同步。相机内参、相机-激光雷达外参、雷达安装角都需要定期复标。时间同步误差超过 20ms 就可能导致 3D 框与图像错位,进而污染轨迹标签。
3. 数据标注。标注对象包括 3D 检测框、车道线、可行驶区域、自车轨迹与行为标签(跟车、变道、让行、停车)。标注规范必须明确边界情况:被遮挡车辆是否标、远处小目标是否标、车道线断裂如何补。
4. 数据清洗。清洗包括去重(相似帧剔除)、去抖(轨迹平滑)、剔除异常(速度突变、定位跳变)、时间对齐与插值。清洗规则应以可配置脚本形式固化,避免人工随意删改。
5. 数据增强。增强分为图像域与轨迹域。图像域可做光照、天气、模糊、遮挡仿真;轨迹域可做横向偏移、速度缩放、噪声注入。增强必须保持物理一致性,例如不能把左转轨迹镜像成右转却不改变车道线。
6. 数据集构建。最终按场景标签划分训练/验证/测试集,并生成元数据清单:采集日期、车辆、传感器版本、标注版本、清洗规则版本。数据集版本号与模型实验一一绑定,保证可复现。
三、案例场景:城市无保护左转的数据闭环
假设闭环评测发现策略在无保护左转时过于保守,经常错过可通行间隙。复盘发现训练集中此类场景仅占 1.2%,且多为静止等待样本。于是启动定向补采:在三个路口采集 200 段真实左转与让行交互片段,标注对向直行车辆的距离与速度,并做轨迹增强生成不同间隙大小的合成样本。重新训练后,左转通过率提升,同时碰撞风险未上升。
四、常见误区与复盘清单
| 误区 | 后果 | 改进动作 |
|---|---|---|
| 只按时间连续采集,不做事件触发 | 高价值片段占比低,训练效率差 | 设置急刹、接管、近距切入触发条件 |
| 标定过期未复标 | 3D 框与图像错位,轨迹标签失真 | 每周复标,记录标定版本 |
| 清洗规则写在个人脚本里 | 无法复现,数据版本混乱 | 清洗规则配置化、版本化 |
| 增强不考虑物理一致性 | 模型学到错误因果关系 | 增强后做几何与动力学校验 |
| 数据集无元数据清单 | 实验无法追溯,评测结果不可信 | 每版数据集生成 manifest 文件 |
# 数据集 manifest 示例(YAML)
dataset_version: drive-v2.3
created_at: 2025-03-18
odd: urban_day_rain
sensors:
camera_front: {calib: calib-2025-03-10, fps: 30}
lidar_top: {calib: calib-2025-03-10, fps: 10}
can: {fps: 100}
label_version: label-v1.7
clean_rules: clean-v0.9
split:
train: 0.70
val: 0.15
test: 0.15
scene_tags: [unprotected_left, cut_in, pedestrian, construction]
总结来看,驾驶数据工程是一条需要持续迭代的流水线:ODD 定义决定采集方向,传感器配置决定数据质量上限,标注与清洗决定标签可信度,增强与数据集构建决定训练分布。只有把每个环节版本化、可追溯,模仿学习策略的评测与泛化才有可靠的数据基础。