一句话理解数据标注
数据标注 = 给传感器数据打上"正确答案",让神经网络学会看懂世界——标注的质量直接决定了模型性能的上限。
自动驾驶是一个数据驱动的领域。顶级算法团队和普通团队之间的差距,很多时候不是模型架构的差距,而是数据质量和规模的差距。一个好的标注系统能自动、高效、精确地为海量传感器数据生成标签。
🎯 标注类型与技术规范
2D 标注
Bounding Box(2D 检测框):
- 格式:$(x_{\text{min}}, y_{\text{min}}, x_{\text{max}}, y_{\text{max}})$ 或 $(x_c, y_c, w, h)$
- 属性:类别(car, pedestrian, cyclist…)、遮挡程度(0~3)、截断程度
- 要求:框必须紧贴目标轮廓,边缘落在目标可见像素的外边界上
语义/实例分割(Segmentation):
- 语义分割:每个像素分配一个类别标签(道路、天空、车辆……)
- 实例分割:同一类别下区分不同个体(车 A vs. 车 B)
- 格式:多边形(polygon)或 RLE(run-length encoding)
- 标注精度要求:像素级,通常边缘误差 < 2 像素
关键点标注(Keypoint):
- 用于人体姿态估计、车辆关键点(车轮、车顶角点)
- 通常标注 17 个人体关键点(COCO)或 4~8 个车辆角点
- 需要明确关键点的可见性标注
3D 标注
3D Cuboid(3D 检测框):
- 7 自由度:$(x, y, z, w, h, l, \theta)$
- $(x, y, z)$:框的中心坐标(通常在自车坐标系中)
- $(w, h, l)$:宽度、高度、长度(米)
- $\theta$:绕 $z$ 轴的偏航角(yaw)
- 标注要求:
- 框必须紧密包围物体,不遮挡其他目标
- 朝向角必须与目标实际行进方向一致
- 相邻帧之间保持框的尺寸稳定
点云标注(Point Cloud Annotation):
- 在 LiDAR 点云中标注 3D 框
- 通常需要在多个视角(BEV、前视图、侧视图)同时调整框的位置
- 挑战:远距离点云稀疏,标注者难以判断目标边界
- 常用辅助:将点云投影到图像上,利用图像语义辅助标注
BEV 标注:
- 直接在鸟瞰图上标注道路元素(车道线、路沿、停止线)
- 格式:折线或多边形,每个点对应 BEV 网格中的位置
- 精度要求:厘米级(相对于地图坐标系)
时序标注
自动驾驶数据是视频序列而非单帧图像。时序标注包含:
- Tracking ID:为每个目标分配跨帧的持久化 ID
- 生命周期标注:标记目标"出现→持续→消失"的帧区间
- 属性变化:跟踪目标属性的变化(如车辆刹车灯亮/灭)
- 遮挡推理:被遮挡时 ID 不变,基于运动模型推断位置
时序一致性是标注中最大的挑战。标注工具需支持插值传播:标注者只需标注关键帧,中间帧由光流或跟踪模型自动传播,人工修正。
🔧 常用标注工具
商业平台
| 平台 | 支持标注类型 | 特点 | 定价模式 |
|---|---|---|---|
| Scale AI | 2D/3D/Cuboid/Polygon/Lidar | 全球最大自动驾驶标注平台,曾服务于 Waymo/GM | 按量计费 |
| Labelbox | 2D/3D/Video/Text | 支持模型辅助标注(Model-assisted labeling) | 订阅制 |
| Supervisely | 2D/3D/Video | 开源功能丰富,支持插件扩展 | 混合模式 |
| Segments.ai | Point Cloud/2D/3D | LiDAR 点云标注体验好 | 按量计费 |
开源工具
| 工具 | 语言 | 特点 |
|---|---|---|
| CVAT | Python/TS | Intel 开源,功能全面,支持自动标注插件 |
| LabelImg | Python | 轻量级 2D 框标注,适合快速启动 |
| LabelStudio | Python | 多模态标注(文本、图像、音频) |
| Point Labeler (ROS) | C++/Python | 基于 RViz 的 3D 点云标注,ROS 生态 |
| annotator | Python | Facebook 开源的 3D 标注工具 |
企业级标注的架构
工业标注系统通常包含这几个模块:
- 数据管理:PB 级存储、去重、分布统计
- 预标注服务:用已有模型做初始标注,人工只需修正
- 标注队列:自动分发任务到不同标注员,做交叉验证
- 质量审核:自动检查标注一致性,抽样人工审核
- 版本管理:每次标注修改都形成新版本,可回溯
🧪 数据增强
数据增强是扩充训练集、提升泛化性的低成本手段。
几何增强
用于 2D/3D 检测的常用几何增强:
| 增强方法 | 2D | 3D | 说明 |
|---|---|---|---|
| 随机翻转(Horizontal Flip) | ✅ | ✅ | 左右镜像,注意交通规则(左舵/右舵) |
| 随机缩放 | ✅ | ❌ | 模拟目标尺寸变化 |
| 随机旋转 | ✅ | ✅ | 2D: ±10°, 3D: ±45°(yaw) |
| 随机裁剪 | ✅ | ❌ | 模拟部分可见 |
| 颜色抖动 | ✅ | ❌ | 亮度/对比度/饱和度扰动 |
| 3D 平移/旋转(全局) | ❌ | ✅ | 模拟不同泊车位置 |
| 点云 dropout | ❌ | ✅ | 模拟远距离或遮挡 |
场景级增强
- Object Paste:从其他场景中裁剪目标,粘贴到当前场景
- Ground Truth Sampling:在训练时随机将 GT 目标插入到 BEV 空间(PointPainting 做法)
- 场景混合:将两个场景的 BEV 特征混合(MixUp / CutMix 的 BEV 版本)
传感器仿真增强
- 天气/光照模拟:使用 GAN 或 ControlNet 改变图像的天气、光线
- 传感器噪声注入:模拟相机运动模糊、LiDAR 多径效应
🤖 现代标注范式:从人工到自动化
范式一:Auto-Labeling(自动标注)
Auto-Labeling 使用预训练模型自动生成伪标签,人工仅做修正和审核。
典型流程:
- 初步检测:使用已有 3D 检测模型在无标注数据上生成初始框
- 时序优化:利用 tracking 和 smoother(如 EKF)跨帧优化框的尺寸和位置稳定性
- 多传感器交叉验证:LiDAR 3D 框投影到图像上,用 2D 检测模型验证一致性
- 人工审核:抽样检查伪标签质量,纠正系统性错误
标杆工作:
- Waymo AutoLabel:使用离线大模型和时序优化生成高质量 3D 标签,据称在一项研究中替代了 97% 的人工标注
- Tesla 的数据引擎:在车端运行影子模式,遇到模型不确定性高的场景即上传数据,自动标注后加入训练集
范式二:NeRF / 3DGS 数据生成
Neural Radiance Field(NeRF)和 3D Gaussian Splatting(3DGS)可以从稀疏图像重建出可控场景,然后:
- 新视角生成:在重建场景中放置虚拟相机,生成任意视角的图像——训练视角鲁棒的感知模型
- 场景编辑:在重建场景中移动/插入/删除物体,自动更新对应的 3D 标注
- Corner Case 合成:手动编辑场景(如增加一辆横穿马路的车),生成在真实世界中罕见的危险场景
三种范式对比
| 维度 | 纯人工标注 | Auto-Labeling | NeRF/3DGS 生成 |
|---|---|---|---|
| 成本 | 高 | 中 | 低(一次构建,无限生成) |
| 精度 | 高 | 中高(需人工审核) | 中(受重建质量限制) |
| 规模 | 10^5 帧级 | 10^7 帧级 | 理论上无限 |
| 可控性 | 低 | 中 | 高(可编辑场景) |
| 成熟度 | ✅ 成熟 | ✅ 工业标配 | ⚠️ 快速发展中 |
📊 主流数据集
多模态数据集
| 数据集 | 规模 | 传感器 | 标注类型 | 特点 |
|---|---|---|---|---|
| nuScenes | 1000 scenes, 1.4M frames | 6 cam + 5 radar + 1 LiDAR | 3D bbox, 23 cls, 8 attrs | 最流行的学术数据集,场景覆盖广 |
| Waymo Open | 1150 scenes, 230K frames | 5 cam + 5 LiDAR | 3D bbox, 4 cls | 高密度 LiDAR,单帧 100+ 目标 |
| Argoverse 2 | 1000 scenes | 7 cam + 2 LiDAR | 3D bbox, 地图 | 提供 HD Map,支持预测任务 |
| Lyft Level 5 | 366 scenes | 7 cam + 3 LiDAR | 3D bbox | 早期开放数据集,现已被 nuScenes 覆盖 |
纯视觉/Camera-only 数据集
| 数据集 | 规模 | 标注类型 | 特点 |
|---|---|---|---|
| ONCE | 1M frames (100K 标注) | 3D bbox, 5 cls | 大规模、多天气、多时段 |
| SODA10M | 10M frames (20K 标注) | 2D bbox, 6 cls | 巨大规模,半监督评测基准 |
| BDD100K | 100K frames | 2D bbox, lane, drivable area | 多样化路况,美国多地 |
🎯 Corner Case 挖掘
Corner Case(边缘场景)是提升自动驾驶系统安全性的关键。常见挖掘方法:
基于模型的挖掘
- 不确定性估计:使用 MC-Dropout 或 Ensemble 方法估计模型预测的不确定性,高不确定性样本优先标注
- OOD 检测:检测模型遇到分布外(Out-of-Distribution)样本,如未见过类型的施工区域
- 闭环 Failure Detection:在仿真器中运行规划器,检测何时规划失败(碰撞、急刹、偏离车道),回溯对应的传感器场景
基于场景的挖掘
- 场景检索:在庞大数据集中检索特定场景(雨夜、十字路口、施工区)
- 路采回放:持续记录路试数据,自动筛选出有"惊险事件"的片段(接管、急刹、近距离 cut-in)
- 对抗生成:使用生成模型对现有场景添加扰动(如插入新障碍物),测试模型鲁棒性
数据飞轮
最好的数据策略是一个闭环的数据飞轮:
每一轮循环都在不断拓宽模型的能力边界,减少未知场景。
📚 延伸阅读
- Caesar, H. et al. “nuScenes: A multimodal dataset for autonomous driving.” CVPR, 2020.
- Sun, P. et al. “Scalability in Perception for Autonomous Driving: Waymo Open Dataset.” CVPR, 2020.
- Mao, J. et al. “One Million Scenes for Autonomous Driving: ONCE Dataset.” NeurIPS, 2021.
- Han, J. et al. “SODA10M: A Large-Scale 2D Self/Semi-Supervised Object Detection Dataset.” ECCV, 2022.
- Yang, Z. et al. “UniSim: A Neural Closed-Loop Simulator for Autonomous Driving.” arXiv, 2023.
- Mildenhall, B. et al. “NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis.” ECCV, 2020.
- Kerbl, B. et al. “3D Gaussian Splatting for Real-Time Radiance Field Rendering.” SIGGRAPH, 2023.