3. 数据标注基础

大家好,我是这次课程的主讲工程师。今天咱们聊聊数据标注——这个听起来有点「脏活累活」的环节,其实是自动驾驶系统最底层的基石。

我见过不少团队,算法模型调得飞起,结果一上实车就翻车。查来查去,最后发现是标注数据出了问题。嗯,这坑我踩过,所以今天想跟你好好聊聊。

核心观点:标注质量直接决定模型上限。再好的算法,也救不了垃圾标注。

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 本章知识体系

下面这张图,帮你梳理本章的核心逻辑:

数据标注基础:知识体系 数据标注 标注类型 2D框标注 3D框标注 语义分割 目标追踪 标注工具 LabelImg(2D框) CVAT(多类型) PointCloud标注器 质量控制 标注前:标准制定 标注中:实时抽检 标注后:交叉验证 核心:标注质量决定模型上限 流程对了,质量自然就稳了