4. 数据清洗概述

在自动驾驶数据闭环中,原始数据往往来自多传感器、多车型、多采集批次,天然带有缺失、噪声、重复、时间错位、标注冲突等问题。数据清洗不是“把数据变干净”这么简单,而是围绕模型训练与安全验证目标,对数据做可追溯、可量化、可复现的治理过程。它的核心目标是:让进入训练与评测环节的数据在完整性、一致性、准确性、时效性和合规性上达到可接受标准,同时保留对长尾场景和边缘案例的覆盖能力。

清洗的四个目标维度:
1. 完整性:关键字段(时间戳、传感器标定、标注框、跟踪ID)不缺失;
2. 一致性:多传感器时间对齐、坐标系统一、标注规范一致;
3. 准确性:去除噪声点、错误标注、异常轨迹与误检漏检;
4. 合规性:脱敏人脸/车牌、满足数据授权与地域法规要求。

4.1 清洗原则:先定义质量,再动手处理

很多团队一上来就写过滤脚本,结果把稀有场景也一并删掉。正确的原则是“先度量、后处理、再验证”。具体包括:

  • 目标对齐原则:清洗规则必须服务于下游任务。感知模型关注标注框质量,预测模型关注轨迹连续性,规控关注场景交互合理性,不能用同一套阈值一刀切。
  • 最小干预原则:能修复的不删除,能标记的不覆盖。对缺失值优先插值或回填,对可疑样本打质量标签而非直接丢弃。
  • 可追溯原则:每条清洗规则要有版本号、生效时间、影响范围与统计报告,保证数据血缘可回溯。
  • 分层治理原则:按“原始层→清洗层→特征层→训练层”分层存储,原始数据不可变,清洗结果可重放。
  • 长尾保护原则:对稀有场景、极端天气、罕见障碍物设置白名单或降低过滤强度,避免清洗导致分布偏移。

4.2 通用流程:Profiling → 清洗 → 验证 → 监控

数据清洗的通用流程可以抽象为四个阶段,形成闭环而非一次性任务。下图展示了从原始数据到可信数据集的信号与处理链路:

数据清洗四阶段闭环流程 ① Profiling 缺失率 / 分布 / 重复率 时间戳偏移 / 标注统计 异常值检测 ② 清洗 去重 / 补缺 / 平滑 时间对齐 / 坐标统一 脱敏 / 格式规范化 ③ 验证 规则断言 / 分布对比 抽样人工复核 下游指标回归 ④ 监控 质量指标看板 漂移告警 规则版本追踪 监控发现异常 → 回补规则 / 重新清洗 数据分层: 原始层(不可变) 清洗层(可重放) 特征层 训练层 质量标签库

Profiling 阶段用统计手段回答“数据长什么样”:字段缺失率、数值分布、重复率、时间戳跳变、标注框尺寸分布等。清洗阶段执行具体规则:去重、插值、平滑、对齐、脱敏、格式转换。验证阶段通过断言、抽样和下游回归确认清洗没有引入新偏差。监控阶段把质量指标持续可视化,一旦漂移就触发回补规则。

4.3 常用工具与框架选型

不同工具适合不同数据规模与实时性要求。Pandas 适合单机小批量探索与规则原型;Spark 适合 TB 级离线批处理;Flink 适合实时流式清洗与在线特征管道;Great Expectations 则专注于数据质量断言与验证报告。实际工程中常组合使用:Pandas 做规则开发,Spark 做全量执行,Great Expectations 做质量门禁,Flink 做在线兜底。

工具/框架适用场景核心能力典型用法
Pandas单机、小批量、规则探索DataFrame 操作、缺失值处理、去重清洗规则原型验证
SparkTB 级离线批处理分布式 SQL、UDF、分区裁剪全量数据清洗作业
Flink实时流、在线管道事件时间、窗口、状态管理实时去重与异常过滤
Great Expectations质量断言与验证Expectation Suite、数据文档清洗前后质量门禁

4.4 案例:多传感器时间戳清洗

某采集车同时记录激光雷达、摄像头与组合导航。原始数据中激光雷达时间戳存在 20~80ms 随机抖动,摄像头帧率不稳定,导致融合标注时目标框错位。清洗流程如下:

# 1. Profiling:统计时间戳间隔分布
df.groupby('sensor')['timestamp'].diff().describe()

# 2. 清洗:以组合导航为基准,线性插值对齐
lidar_aligned = interpolate_to_base(lidar, base=gnss, method='linear')

# 3. 验证:检查对齐后残差是否小于阈值
assert (lidar_aligned.residual < 0.02).mean() > 0.99

# 4. 监控:每日统计对齐残差 P99,超阈值告警
清洗规则建议以配置文件或代码化断言管理,例如用 Great Expectations 定义 expect_column_values_to_be_between,把“时间戳残差小于 20ms”变成可执行、可版本化的质量契约。

4.5 常见误区与复盘

  • 误区一:清洗越狠越好。过度过滤会删除长尾场景,导致模型在罕见障碍物上失效。应对稀有样本设置保护策略。
  • 误区二:只做一次清洗。数据分布随采集季节、城市、车型变化而漂移,清洗规则需要持续监控和迭代。
  • 误区三:没有验证就上线。清洗后的数据必须经过分布对比和下游指标回归,否则可能引入隐性偏差。
  • 误区四:忽略数据血缘。无法追溯“这条数据被哪条规则改过”,排障和合规审计都会非常困难。
清洗不是删除异常,而是让异常可解释、可追踪、可决策。对每条被过滤或修改的数据,都应记录原因码、规则版本与操作时间,形成质量标签库。

总结来看,数据清洗是自动驾驶数据治理的第一道质量闸门。它以 Profiling 为眼睛、以清洗规则为双手、以验证为标尺、以监控为哨兵,配合 Pandas、Spark、Flink、Great Expectations 等工具,把原始数据转化为可信、可追溯、可复现的训练资产。只有把清洗做成持续闭环,才能支撑后续的去重、标注质量治理与模型迭代。