数据标注基础:标注类型、工具与质量控制
大家好,我是这次课程的主讲工程师。今天咱们聊聊数据标注——这个听起来有点「脏活累活」的环节,其实是自动驾驶系统最底层的基石。
我见过不少团队,算法模型调得飞起,结果一上实车就翻车。查来查去,最后发现是标注数据出了问题。嗯,这坑我踩过,所以今天想跟你好好聊聊。
核心观点:标注质量直接决定模型上限。再好的算法,也救不了垃圾标注。
3.1 标注类型:你至少要知道这几种
自动驾驶的标注类型,说白了就是「让机器看懂世界」的不同方式。我按常用程度给你捋一遍。
3.1.1 2D框标注
这是最基础的标注方式。在图像上画一个矩形框,框住目标物体。比如行人、车辆、交通标志。
我个人习惯用「左上角+右下角」的坐标格式。为什么?因为后续处理方便,很多框架原生支持。
# 2D框标注格式示例
{
"xmin": 120,
"ymin": 45,
"xmax": 280,
"ymax": 310,
"label": "car",
"truncated": false,
"occluded": false
}
小技巧:标注2D框时,尽量让框紧贴物体边缘。留白太多会影响模型对物体尺寸的感知。
3.1.2 3D框标注
这个就高级一些了。3D框不仅要框住物体,还要给出物体的长、宽、高、朝向和中心点坐标。说白了,就是给物体一个「立体身份证」。
我在项目中遇到过一个问题:3D框的朝向角定义不统一。有的团队用欧拉角,有的用四元数。结果模型训练出来,推理结果对不上。后来我们统一用「朝向角+旋转矩阵」的方式,才彻底解决。
| 参数 | 含义 | 示例值 |
|---|---|---|
| center_x | 中心点X坐标 | 12.5 |
| center_y | 中心点Y坐标 | 8.3 |
| center_z | 中心点Z坐标 | 0.0 |
| length | 物体长度 | 4.5 |
| width | 物体宽度 | 1.8 |
| height | 物体高度 | 1.5 |
| yaw | 朝向角 | 0.78 |
3.1.3 语义分割
语义分割就是给图像里的每个像素打标签。比如「这个像素属于路面」、「这个像素属于天空」。你想想看,这得多精细?
我记得第一次做语义分割标注时,一个标注员一天只能标20张图。后来我们引入了半自动标注工具,先用模型预标注,人工再修正,效率提升了3倍。
注意:语义分割的边界区域最容易出错。比如「路面」和「路沿」的边界,标注员经常标歪。建议设置专门的边界审核环节。
3.1.4 目标追踪
追踪标注,就是给视频序列中的同一个物体打上相同的ID。比如一辆车从第1帧跑到第100帧,它的ID始终是「car_001」。
这里有个坑:物体被遮挡后重新出现,ID容易丢失。我曾经遇到过一个案例,一辆白色SUV被大卡车遮挡了5帧,重新出现后标注员给了新ID。结果模型训练出来,总把同一辆车识别成两辆。后来我们加了「遮挡处理规则」——遮挡不超过10帧的,ID保持不变。
3.2 标注工具介绍:工欲善其事
工具选得好,标注效率翻倍。我这些年用过不少工具,挑三个最常用的给你说说。
3.2.1 LabelImg
LabelImg 是入门级工具,纯Python写的,轻量好用。适合做2D框标注。
- 优点:安装简单,开箱即用
- 缺点:不支持3D框,不支持多人协作
- 适用场景:小团队、快速验证
我个人习惯用LabelImg做快速标注验证。比如新来了一个数据集,先标100张看看效果,再决定要不要大规模投入。
3.2.2 CVAT
CVAT 是Intel开源的在线标注平台,功能很全。支持2D框、3D框、语义分割、追踪,还支持多人协作。
我在项目中用CVAT搭建过标注流水线。配置好任务后,标注员在线操作,审核员在线审核,效率提升很明显。
# CVAT任务配置示例
{
"name": "自动驾驶标注任务_v3",
"labels": ["car", "pedestrian", "cyclist", "traffic_light"],
"type": "detection",
"segmentation": false,
"tracking": true,
"overlap": 0.2
}
小技巧:CVAT支持快捷键操作。我建议标注员把常用快捷键背下来,效率能提升30%以上。
3.2.3 PointCloud标注器
点云标注是自动驾驶特有的需求。激光雷达扫出来的点云数据,需要在三维空间里标注物体。
常用的工具有:
- SUSTech POINTS:开源,支持点云+图像联合标注
- LATTE:百度开源,支持3D框和语义分割
- CloudCompare:通用点云处理工具,可做标注
我记得第一次用点云标注器时,感觉像在玩3D游戏。但实际标注起来很累,因为点云稀疏,物体边界不清晰。后来我们采用「点云+图像联合标注」的方式,先用图像标注2D框,再映射到点云上,效率高了很多。
3.3 标注质量控制流程
标注质量怎么控?我总结了一套「三审三校」流程,分享给你。
3.3.1 标注前:标准制定
标注之前,先把标准定清楚。比如:
- 遮挡到什么程度算「严重遮挡」?
- 截断的物体要不要标?
- 远处的行人标不标?
我建议写一份《标注规范文档》,图文并茂,标注员人手一份。我曾经因为没写清楚「截断物体标注规则」,导致标注员和审核员吵了三天架。
3.3.2 标注中:实时抽检
标注过程中,每天抽检10%的标注结果。发现问题及时反馈,避免批量返工。
抽检标准我一般这样定:
| 指标 | 合格标准 | 不合格处理 |
|---|---|---|
| 框准确率 | ≥95% | 返工+培训 |
| 标签正确率 | ≥98% | 返工+重新标注 |
| 漏标率 | ≤2% | 补充标注+审核 |
3.3.3 标注后:交叉验证
标注完成后,安排不同标注员交叉验证。A标的数据由B来审,B标的数据由C来审。这样能发现一些「习惯性错误」。
举个例子:有的标注员习惯把「自行车」标成「电动车」。交叉验证时,另一个标注员一眼就能看出来。
核心原则:标注质量不是「检查」出来的,而是「流程」保障出来的。流程对了,质量自然就稳了。
3.4 本章知识体系
下面这张图,帮你梳理本章的核心逻辑:
好了,这一章的内容就到这里。数据标注看起来基础,但做扎实了,后面的路就好走了。下一章我们聊聊数据增强——怎么用有限的数据,训练出更强的模型。