基于原始实车采集数据的标注有效数据筛选方案
1. 方案目标
本方案面向自动驾驶原始实车采集日志,目标是从连续采集的海量图像、点云、雷达、定位与车辆状态数据中,筛选出适合进入人工标注流程的高价值数据子集。筛选后的数据应同时满足以下要求:
- 传感器质量可靠,可支持稳定标注。
- 场景连续完整,适合检测、跟踪、占用、地图等任务。
- 样本具有较高标注价值,包含足够目标与有效交互。
- 数据分布均衡,覆盖不同地域、天气、光照和道路类型。
- 标注成本可控,优先保留高价值、高可标性样本。
2. 总体流程
建议采用如下六阶段流程:
原始日志 → 质量过滤 → 场景切片 → 场景打分 → 分层抽样 → 人工复核 原始日志 \rightarrow 质量过滤 \rightarrow 场景切片 \rightarrow 场景打分 \rightarrow 分层抽样 \rightarrow 人工复核 原始日志→质量过滤→场景切片→场景打分→分层抽样→人工复核
对应实施步骤如下:
- 原始日志接入
- 硬性质量过滤
- 连续场景切片
- 场景价值打分
- 分层均衡抽样
- 人工质检与标注入库
3. 数据单元定义
为统一筛选粒度,建议定义三级数据单元。
3.1 Log
一次完整实车采集任务,对应一段连续驾驶日志,时长可为数十分钟至数小时。
3.2 Scene
从 log 中切出的连续时间片段,建议配置如下:
- 时长:20 s
- 滑窗步长:10 s 或 20 s
3.3 Keyframe
用于正式标注的关键帧,建议:
- 标注频率:2 Hz
- 即每 0.5 s 选择 1 帧用于人工标注
- 非关键帧保留为时序上下文,不要求全部人工标注
4. 第一阶段:硬性质量过滤
首先剔除根本不适合进入标注流程的数据段。
4.1 传感器完整性检查
每个时间窗口内检查:
- 多路相机是否齐全
- LiDAR 是否正常出点
- Radar 是否存在正常回波
- IMU、GPS、CAN 是否持续可用
- 是否存在显著丢包
建议阈值:
- 相机缺失率 > 5%:剔除
- LiDAR 丢帧率 > 5%:剔除
- Radar 丢帧率 > 10%:降级或剔除
- 定位连续失效 > 2 s:剔除
4.2 时间同步检查
过滤多传感器时间偏移过大的数据段。
建议阈值:
- 相机与 LiDAR 主时间戳偏差 > 50 ms:剔除
- Radar 与主参考时间偏差 > 100 ms:降级
- 连续异常超过 3 次:整段剔除
4.3 标定有效性检查
剔除内参、外参异常或疑似漂移的数据。
建议检查项:
- 相机投影与点云对齐误差
- 地面点拟合稳定性
- 相邻时段标定一致性
- 传感器安装姿态是否异常突变
若满足以下任一情况,则整段不进入标注池:
- 重投影误差均值超阈值
- 地平面估计波动过大
- 某一路相机长期外参失真
4.4 图像质量检查
过滤无法可靠标注的图像数据。
建议检查项:
- 严重模糊
- 过曝或欠曝
- 雨滴、污渍、大面积遮挡
- 强逆光导致目标难以辨识
- 夜间极暗导致可见目标过少
可用指标:
- Laplacian 方差:模糊评分
- 亮度均值与方差
- 饱和像素占比
- 污渍、雨滴检测模型输出分数
4.5 点云质量检查
过滤点云不可用的数据段。
建议检查项:
- 单帧点数过低
- 激光环缺失
- 噪声异常
- 近距离盲区异常增大
- 雨雾环境导致严重回波污染
建议指标:
- 总点数
- 有效距离内点数
- 地面点比例
- 动态点比例
- 噪声点比例
5. 第二阶段:场景切片
对通过质量过滤的 log 进行场景切片。
5.1 固定窗口切片
推荐采用固定长度切片:
- 每段 20 s
- 滑窗步长可设为 10 s 或 20 s
5.2 事件增强切片
可在固定切片之外叠加事件驱动切片,以提升高价值场景密度,例如:
- 路口通过
- 急转弯
- 并线
- 汇入汇出
- 紧急制动
- 行人密集区通行
5.3 切片约束
一个 scene 应满足:
- 时间连续
- 关键传感器完整
- 无明显同步异常
- 场景前后语义连贯
- 不跨越严重故障点
6. 第三阶段:场景价值打分
对每个 scene 计算标注收益分,用于后续排序与抽样。
6.1 可标注性分数 S_quality
反映该场景是否具备稳定标注条件,建议由以下因素组成:
- 图像清晰度
- 点云密度
- 时间同步质量
- 定位稳定性
- 标定可信度
6.2 目标丰富度分数 S_object
反映该场景中目标信息是否充分,建议组成如下:
- 平均每帧目标数
- 动态目标数
- 近距离目标数
- 可见目标持续时长
- 可连续跟踪目标数
6.3 交互复杂度分数 S_interaction
反映场景是否具备较高训练和评测价值,建议包括:
- 路口通行
- 跟车、变道、汇入汇出
- 行人横穿
- 非机动车混行
- 大车、公交、工程车交互
- 遮挡与解遮挡事件
6.4 长尾价值分数 S_rare
用于提升困难样本和稀有样本比例,例如:
- 夜间场景
- 雨天、湿滑路面
- 施工区域
- 特殊车辆
- 异形障碍物
- 稀有交通参与者
6.5 多样性分数 S_diversity
用于避免场景重复,控制冗余数据,例如:
- 同一路段长直行场景
- 同质化车流
- 长时间停车等待
- 低信息量巡航
6.6 综合评分公式
建议采用可解释线性加权模型:
S = w 1 S q u a l i t y + w 2 S o b j e c t + w 3 S i n t e r a c t i o n + w 4 S r a r e + w 5 S d i v e r s i t y S = w_1 S_{quality} + w_2 S_{object} + w_3 S_{interaction} + w_4 S_{rare} + w_5 S_{diversity} S=w1Squality+w2Sobject+w3Sinteraction+w4Srare+w5Sdiversity
可参考初始权重:
- w 1 = 0.30 w_1 = 0.30 w1=0.30
- w 2 = 0.20 w_2 = 0.20 w2=0.20
- w 3 = 0.20 w_3 = 0.20 w3=0.20
- w 4 = 0.15 w_4 = 0.15 w4=0.15
- w 5 = 0.15 w_5 = 0.15 w5=0.15
若标注预算有限,可适当提高 S_rare 和 S_interaction 权重。
7. 第四阶段:规则化筛选条件
在打分前后增加规则门控,提升候选池质量稳定性。
7.1 准入条件
必须同时满足以下条件才允许进入候选池:
- 关键传感器完整
- 同步误差在阈值内
- 标定正常
- 连续时长达到 20 s
- 图像与点云质量合格
- 无大面积隐私遮挡或数据损坏
7.2 一票否决条件
若出现以下情况,直接剔除:
- 相机大面积黑屏
- LiDAR 严重失真或无点
- 多传感器长期不同步
- 定位轨迹明显跳变
- 标定失效
- 关键目标完全不可见
- 雨雪、泥污导致大部分帧不可用
8. 第五阶段:分层均衡抽样
高分场景不能直接全选,否则容易造成分布偏斜。应对候选场景进行分层均衡抽样。
8.1 分层维度
建议按如下维度建立配额:
- 城市或区域
- 道路类型
- 高速
- 城市主干道
- 次干道
- 园区道路
- 停车场
- 光照条件
- 白天
- 黄昏
- 夜间
- 天气条件
- 晴天
- 阴天
- 雨后
- 小雨
- 交通密度
- 稀疏
- 中等
- 拥堵
- 目标类型
- 车辆为主
- 行人为主
- 非机动车混行
- 大车密集
- 特殊事件
- 路口
- 变道
- 横穿
- 施工
8.2 抽样策略
每个分层桶内:
- 先按质量准入过滤
- 再按综合得分排序
- 保留 Top-K
- 对高度相似场景做去重
9. 第六阶段:相似场景去重
为避免“高分但重复”的样本大量进入标注池,需要引入去重模块。
9.1 去重依据
可从以下维度构造场景特征:
- 位置网格
- 车速分布
- 转向模式
- 目标类别直方图
- 目标轨迹统计
- 图像语义特征
- BEV 栅格占用特征
9.2 去重方法
可采用以下方式:
- 余弦相似度筛重
- 聚类后每簇保留代表场景
- 同一路段相邻窗口仅保留得分更高者
建议规则:
- 相似度 > 0.95:只保留 1 个
- 对重叠窗口内容高度相似的场景,仅保留高分窗口
10. 第七阶段:关键帧选取策略
选定 scene 后,不建议逐帧全量人工标注。
10.1 推荐配置
- 场景长度:20 s
- 关键帧频率:2 Hz
- 每个
scene约 40 帧标注
10.2 数据保留策略
- 关键帧:进入正式标注流程
- 非关键帧:保留为
sweeps或时序上下文
该策略有利于:
- 多帧检测
- 跟踪任务
- 时序建模
- 占用预测
- 地图建模
11. 推荐指标表
11.1 质量类指标
- 图像模糊分
- 亮度异常比例
- 点云有效点数
- 同步误差
- 标定对齐误差
- GNSS/IMU 稳定性
11.2 目标类指标
- 平均每帧目标数
- 动态目标数
- 稀有类目标数
- 近距离目标数
- 可连续跟踪目标数
11.3 交互类指标
- 路口通过事件数
- 行人横穿事件数
- 非机动车交汇事件数
- 并线或汇入事件数
- 紧急制动或急转向事件数
11.4 长尾类指标
- 夜间标签
- 雨天标签
- 遮挡程度
- 施工区标签
- 大车比例
- 特殊障碍物标签
12. 标注池分级建议
建议将候选样本分为三级。
12.1 A级:优先标注
满足以下特征:
- 数据质量高
- 交互复杂
- 长尾价值高
- 分布稀缺
用于构建核心标注集。
12.2 B级:补充分布
数据质量良好,但复杂度相对一般。用于平衡整体数据分布。
12.3 C级:预备池
质量勉强合格或信息量一般。仅在预算充足时补充。
13. 人工复核流程
自动筛选后必须进行人工复核。
13.1 复核重点
- 场景是否连续完整
- 关键目标是否可见
- 是否存在不可控的标注困难
- 是否与已选场景重复
- 是否满足当前任务定义
13.2 建议抽检比例
- A级:10% 抽检
- B级:20% 抽检
- C级:30% 抽检
若为首版数据集,建议首轮全量审核。
14. 输出物设计
最终建议输出以下四类结果。
14.1 候选场景表
字段建议:
log_idscene_idstart_tsend_tsquality_scoreobject_scoreinteraction_scorerare_scorediversity_scorefinal_scorecityweathertime_of_dayroad_typetraffic_densityselected_flag
14.2 关键帧索引表
建议字段:
scene_idkeyframe_tssensor_pathsposecalib_version
14.3 剔除原因表
记录样本被剔除的具体原因,例如:
- 传感器缺失
- 同步异常
- 标定异常
- 图像模糊
- 点云过稀
- 场景重复
- 信息量不足
14.4 数据分布报表
统计最终入选数据在以下维度的分布:
- 类别分布
- 地域分布
- 白天与夜间分布
- 天气分布
- 场景复杂度分布
- 稀有类分布
15. 推荐落地策略
若需要快速启动,建议先使用以下工程初始版策略。
15.1 阶段一:硬过滤
剔除以下问题数据:
- 传感器丢帧严重
- 时间同步异常
- 标定异常
- 图像严重模糊或过曝
- 点云极度稀疏
- 定位轨迹跳变
15.2 阶段二:20 s 切片
将通过过滤的连续日志按 20 s 切分为 scene。
15.3 阶段三:场景打分
采用如下综合分:
S = 0.3 S q u a l i t y + 0.2 S o b j e c t + 0.2 S i n t e r a c t i o n + 0.15 S r a r e + 0.15 S d i v e r s i t y S = 0.3S_{quality} + 0.2S_{object} + 0.2S_{interaction} + 0.15S_{rare} + 0.15S_{diversity} S=0.3Squality+0.2Sobject+0.2Sinteraction+0.15Srare+0.15Sdiversity
15.4 阶段四:分层抽样
按以下维度做均衡抽样:
- 城市
- 白天与夜晚
- 晴天与雨天
- 路口与非路口
- 稀有目标占比
15.5 阶段五:关键帧标注
对入选 scene 按 2 Hz 选取关键帧进行人工标注。
16. 面向项目落地的实施流程图
以下流程图面向工程实施,覆盖从原始日志接入到标注入库的完整闭环。
16.1 工程模块拆分建议
建议将整套流程拆分为以下模块:
ingest:原始日志接入、索引构建、元数据解析。quality_gate:完整性、同步、标定、图像与点云质量检查。scene_builder:固定窗口切片与事件增强切片。scene_scorer:计算质量分、目标分、交互分、长尾分、多样性分。sampler:分层抽样、配额控制、相似场景去重。review:人工抽检、问题回流、候选池修正。exporter:导出标注任务、关键帧索引、场景分布报表。
16.2 推荐落地顺序
推荐按以下顺序逐步上线:
- 先完成硬性过滤与固定窗口切片。
- 再补充场景打分和简单 Top-K 排序。
- 随后加入分层抽样和相似场景去重。
- 最后接入人工复核、报表导出和版本冻结机制。
这样可以先跑通可用的最小闭环,再逐步增强筛选精度。
17. 面向项目落地的筛选规则表
下表给出一版可直接落地的初始筛选规则。项目实施时可根据传感器规格、采集平台和任务目标进一步调整。
| 规则ID | 规则类别 | 指标 | 条件 | 建议阈值 | 动作 | 说明 |
|---|---|---|---|---|---|---|
| R001 | 完整性 | 相机缺失率 | > |
0.05 | reject | 任一关键相机长期缺失直接剔除 |
| R002 | 完整性 | LiDAR 丢帧率 | > |
0.05 | reject | LiDAR 为主传感器时严格控制 |
| R003 | 完整性 | Radar 丢帧率 | > |
0.10 | downgrade/reject | 先降级,严重时剔除 |
| R004 | 定位 | GNSS/IMU 连续失效时长 | > |
2.0 s | reject | 无法保证姿态连续性 |
| R005 | 同步 | Camera-LiDAR 时间偏差 | > |
50 ms | reject | 影响多传感器配准 |
| R006 | 同步 | Radar-主时钟时间偏差 | > |
100 ms | downgrade | 轻度异常可降级处理 |
| R007 | 标定 | 重投影误差均值 | > |
3.0 px | reject | 相机与点云对齐明显异常 |
| R008 | 标定 | 地平面法向波动 | > |
5.0 deg | reject | 标定或姿态可能异常 |
| R009 | 图像质量 | 模糊评分 | < |
100.0 | reject | 可使用 Laplacian 方差 |
| R010 | 图像质量 | 过曝像素占比 | > |
0.25 | reject | 大面积高亮区域不可标 |
| R011 | 图像质量 | 欠曝像素占比 | > |
0.35 | reject | 夜间极暗场景需剔除 |
| R012 | 图像质量 | 雨滴/污渍分数 | > |
0.60 | reject | 镜头遮挡严重 |
| R013 | 点云质量 | 单帧有效点数 | < |
30000 | reject | 点云过稀导致标注困难 |
| R014 | 点云质量 | 噪声点比例 | > |
0.15 | reject | 雨雾或异常回波过多 |
| R015 | 场景切片 | Scene 连续时长 | < |
20.0 s | reject | 不满足标准切片时长 |
| R016 | 目标丰富度 | 平均每帧目标数 | < |
3 | downgrade | 信息量不足,降级候选 |
| R017 | 目标丰富度 | 动态目标数 | < |
1 | downgrade | 用于压缩低价值巡航段 |
| R018 | 交互复杂度 | 路口/并线/横穿事件数 | < |
1 | keep | 非必需,不作剔除,仅影响得分 |
| R019 | 长尾价值 | 夜间/雨天/施工标签 | == |
true | bonus | 稀有场景给予额外加分 |
| R020 | 去重 | 场景相似度 | > |
0.95 | deduplicate | 仅保留高分代表样本 |
| R021 | 关键帧 | Keyframe 采样频率 | = |
2 Hz | export | 输出正式标注帧 |
| R022 | 复核 | 人工抽检未通过 | == |
true | reject/rollback | 从标注池移除或退回修正 |
17.1 规则优先级建议
reject:直接剔除,不进入候选池。downgrade:进入低优先级候选池,仅在配额不足时补充。bonus:不改变准入资格,仅在最终排序时加分。deduplicate:用于相似样本去重。export:用于导出关键帧或标注任务。
17.2 规则实施建议
- 硬性质量类规则在
scene切片前执行。 - 目标丰富度和交互复杂度规则在
scene切片后执行。 - 去重规则在分层抽样之后执行。
- 人工复核规则作为最终入库前的最后关卡。
18. JSON/YAML 配置模板
为便于工程落地,建议将筛选逻辑配置化。以下给出一版推荐模板,可直接作为配置文件初稿使用。
18.1 JSON 配置模板示例
对应文件可保存为 docs/annotation_filter_config.template.json。
{
"project": {
"name": "apollo_annotation_filter",
"version": "1.0.0",
"description": "Raw driving log filtering for annotation-ready scenes"
},
"scene": {
"duration_sec": 20,
"stride_sec": 10,
"keyframe_hz": 2
},
"quality_gate": {
"sensor_integrity": {
"camera_missing_rate_max": 0.05,
"lidar_drop_rate_max": 0.05,
"radar_drop_rate_max": 0.10,
"localization_failure_sec_max": 2.0
},
"time_sync": {
"camera_lidar_offset_ms_max": 50,
"radar_master_offset_ms_max": 100,
"continuous_anomaly_count_max": 3
},
"calibration": {
"reprojection_error_px_max": 3.0,
"ground_normal_jitter_deg_max": 5.0
},
"image_quality": {
"blur_score_min": 100.0,
"over_exposure_ratio_max": 0.25,
"under_exposure_ratio_max": 0.35,
"occlusion_score_max": 0.60
},
"pointcloud_quality": {
"valid_points_min": 30000,
"noise_ratio_max": 0.15
}
},
"scoring": {
"weights": {
"quality": 0.30,
"object": 0.20,
"interaction": 0.20,
"rare": 0.15,
"diversity": 0.15
},
"minimums": {
"avg_objects_per_frame": 3,
"dynamic_objects_per_scene": 1
},
"bonus": {
"night_scene": 0.05,
"rain_scene": 0.05,
"construction_zone": 0.05,
"rare_object_scene": 0.08
}
},
"sampling": {
"quotas": {
"day": 0.50,
"night": 0.20,
"rain": 0.10,
"intersection": 0.20
},
"deduplication": {
"enabled": true,
"similarity_threshold": 0.95,
"keep": "highest_score"
}
},
"review": {
"a_level_sample_ratio": 0.10,
"b_level_sample_ratio": 0.20,
"c_level_sample_ratio": 0.30,
"reject_on_manual_fail": true
},
"outputs": {
"export_keyframes": true,
"export_scene_table": true,
"export_reject_report": true,
"export_distribution_report": true
}
}
18.2 YAML 配置模板示例
对应文件可保存为 docs/annotation_filter_config.template.yaml。
project:
name: apollo_annotation_filter
version: 1.0.0
description: Raw driving log filtering for annotation-ready scenes
scene:
duration_sec: 20
stride_sec: 10
keyframe_hz: 2
quality_gate:
sensor_integrity:
camera_missing_rate_max: 0.05
lidar_drop_rate_max: 0.05
radar_drop_rate_max: 0.10
localization_failure_sec_max: 2.0
time_sync:
camera_lidar_offset_ms_max: 50
radar_master_offset_ms_max: 100
continuous_anomaly_count_max: 3
calibration:
reprojection_error_px_max: 3.0
ground_normal_jitter_deg_max: 5.0
image_quality:
blur_score_min: 100.0
over_exposure_ratio_max: 0.25
under_exposure_ratio_max: 0.35
occlusion_score_max: 0.60
pointcloud_quality:
valid_points_min: 30000
noise_ratio_max: 0.15
scoring:
weights:
quality: 0.30
object: 0.20
interaction: 0.20
rare: 0.15
diversity: 0.15
minimums:
avg_objects_per_frame: 3
dynamic_objects_per_scene: 1
bonus:
night_scene: 0.05
rain_scene: 0.05
construction_zone: 0.05
rare_object_scene: 0.08
sampling:
quotas:
day: 0.50
night: 0.20
rain: 0.10
intersection: 0.20
deduplication:
enabled: true
similarity_threshold: 0.95
keep: highest_score
review:
a_level_sample_ratio: 0.10
b_level_sample_ratio: 0.20
c_level_sample_ratio: 0.30
reject_on_manual_fail: true
outputs:
export_keyframes: true
export_scene_table: true
export_reject_report: true
export_distribution_report: true
18.3 配置字段使用建议
- 质量过滤阈值单独维护,便于按车型、传感器批次调整。
- 场景评分权重建议通过历史标注效果持续校准。
- 抽样配额建议由数据管理与算法团队联合维护。
- 所有配置变更都应带版本号,并与导出的标注批次绑定。
19. 结论
本方案的核心思想是:先利用传感器完整性、时间同步、标定、图像质量和点云质量进行硬性过滤;再将连续日志切分为固定时长 scene;从可标注性、目标丰富度、交互复杂度、长尾价值和多样性五个维度进行打分;随后按地域、天气、光照、道路类型和交通密度进行分层均衡抽样;最后仅对入选场景中的关键帧执行人工标注,而将非关键帧作为时序上下文保留。
在项目实施层面,建议优先落地“质量过滤 → 场景切片 → 场景打分 → 分层抽样 → 人工复核 → 标注导出”的最小闭环,并通过规则表和配置文件实现阈值、配额、权重的统一管理与持续迭代。
该流程能够在保证标注质量的前提下,提高样本有效性、数据集代表性和标注资源利用效率。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)