4. 数据标注基础:标注类型与工具选型

数据标注这件事,说实话,是很多团队最容易忽视的环节。我见过不少项目,算法模型结构设计得漂漂亮亮,训练流程也搭得挺顺,结果一跑起来,效果就是上不去。查来查去,最后发现是标注数据出了问题。嗯,这其实挺常见的。

今天我们就来聊聊标注这件事。我会结合我自己在项目里踩过的坑,把标注类型、工具选型、质量把控这几个关键点讲清楚。

4.1 标注类型:2D、3D 与时序

标注类型的选择,说白了取决于你的传感器配置和算法目标。我习惯把它们分成三类来讲。

4.1.1 2D 标注

2D 标注是最基础的。就是在图像上画框、画点、画多边形。常见的包括:

  • 目标检测框:矩形框,标注物体的位置和类别。比如车、人、自行车。
  • 语义分割:像素级分类。每个像素都要标上类别,比如道路、天空、车辆。
  • 关键点标注:标出物体的关键部位。比如人的肩膀、膝盖,或者车辆的车轮、车灯。

我个人习惯,在项目初期先用 2D 检测框快速验证算法可行性。因为 2D 标注成本低、速度快,适合快速迭代。

小技巧:2D 标注时,注意遮挡物体的处理。我一般要求标注员对遮挡超过 50% 的物体不标,避免引入噪声。

4.1.2 3D 标注

3D 标注就复杂多了。它需要标注物体在三维空间中的位置、尺寸和朝向。常见的数据形式是点云(LiDAR)或者 3D 包围盒。

3D 标注的难点在于:

  • 遮挡严重:点云稀疏,物体被遮挡后很难判断边界。
  • 标注效率低:一个 3D 框的标注时间可能是 2D 框的 5-10 倍。
  • 一致性差:不同标注员对物体朝向的判断可能完全不同。

我在项目中遇到过一个问题:同一个场景,两个标注员对同一辆车的朝向标注差了 30 度。这直接导致模型在转弯场景下频繁误检。后来我们加了一条规则:朝向标注必须以车头方向为准,且误差不超过 10 度。

避坑指南:我曾经因为 3D 标注的朝向不一致,浪费了整整两周时间重新清洗数据。建议你在标注规范里明确写出朝向的定义,最好配上示意图。

4.1.3 时序标注

时序标注,说白了就是给连续帧的数据做标注。比如视频或者连续的点云序列。

时序标注的核心挑战是:

  • 跟踪一致性:同一个物体在不同帧里的 ID 必须一致。
  • 边界帧处理:物体刚出现或即将消失时,怎么标?
  • 标注量巨大:一秒钟 30 帧的视频,标注量是单帧的 30 倍。

我建议的做法是:先标关键帧,然后通过插值算法生成中间帧的标注,最后人工修正。这样能节省 60% 以上的标注时间。

4.2 标注工具选型

工具选型这件事,我踩过不少坑。早期我们团队用开源工具,后来发现管理起来太麻烦。现在我的原则是:看团队规模和数据量

下面是我常用的两款工具对比:

工具 适用场景 优点 缺点
LabelStudio 小团队、快速原型 开源免费、配置灵活、支持多种标注类型 性能一般、大规模数据管理弱
Supervisely 中大型团队、生产环境 功能全面、支持自动化标注、团队协作强 收费、学习曲线陡

4.2.1 LabelStudio

LabelStudio 是我个人比较喜欢的工具。它轻量、开源,适合快速搭建标注流程。你想想看,一个下午就能部署好,然后直接开始标数据,多方便。

它的配置方式是用 XML 定义标注界面。比如一个简单的 2D 检测框标注配置:

<View>
  <Image name="image" value="$image"/>
  <RectangleLabels name="label" toName="image">
    <Label value="car" background="red"/>
    <Label value="person" background="blue"/>
    <Label value="bicycle" background="green"/>
  </RectangleLabels>
</View>

嗯,这里要注意:LabelStudio 的配置虽然灵活,但如果你需要复杂的 3D 标注或者时序标注,它的支持就比较弱了。

4.2.2 Supervisely

Supervisely 是更工业化的选择。它内置了自动化标注功能,比如用预训练模型做预标注,人工只需要修正。这能大幅提升效率。

我记得有一次,我们团队需要标注 10 万张 3D 点云数据。如果用纯人工,至少需要 3 个月。但用 Supervisely 的自动化标注 + 人工修正,我们只用了 3 周就完成了。

重要提醒:工具选型没有绝对的好坏。我的建议是:
- 项目初期、数据量小:用 LabelStudio
- 项目中期、数据量大:考虑 Supervisely
- 如果预算充足:直接上 Supervisely,省心

4.3 质量把控

标注质量,是数据闭环里最容易出问题的一环。我见过太多团队,模型训练完了才发现标注数据里有大量错误。这时候再回头清洗数据,成本极高。

我的质量把控策略分三步:

  1. 标注前:制定规范
    • 明确标注规则:比如遮挡怎么处理、边界怎么定义。
    • 制作标注示例:好的和坏的示例都要有。
    • 培训标注员:至少培训 2 天,然后做考核。
  2. 标注中:实时监控
    • 随机抽检:每天抽检 10% 的标注数据。
    • 反馈机制:发现问题及时反馈给标注员,避免批量错误。
    • 一致性检查:让两个标注员标同一批数据,对比差异。
  3. 标注后:自动化校验
    • 规则校验:比如检测框不能超出图像边界、类别不能为空。
    • 模型校验:用预训练模型跑一遍,对比标注结果。
    • 统计分析:检查类别分布、标注数量是否合理。
避坑指南:我曾经因为忽略了标注后的自动化校验,导致一批数据里混入了大量空标注(标注框大小为 0)。模型训练时直接报错,排查了整整一天才发现问题。从那以后,我每次标注完成后都会跑一遍自动化校验脚本。

最后说一句:标注质量直接决定了模型的天花板。你想想看,如果输入的数据都是错的,模型再厉害也学不出好东西。所以,别在标注上省钱省时间,这钱和时间花得值。