🧠 第四章 数据标注:引导模型学习提升性能
📄 一句话概括

同一批 1000 张图:分类 0.8 小时/25 元,目标检测 50 小时/1500 元, 关键点 33.3 小时/1000 元,语义分割 83.3 小时/2500 元。 最贵的比最便宜的差 100 倍——而业务往往用不到那一级的信息。

📝 本节和前面几节的关系

前一节把「为什么标」讲完了。从这一节开始进工具,第一件事不是点鼠标,是想清楚要标哪一种。

一、四个任务,四种问法

分类问的是「这张图里有什么」。输出一个标签,回答最粗的问题。 目标检测问的是「有什么、在哪」。输出若干个矩形框加类别。 关键点问的是「某个部位在哪」。输出一组坐标加语义(左眼、右肩)。 语义分割问的是「每个像素属于什么」。输出一张和原图同尺寸的类别图。 它们是四个不同的问题,不是四个精度档。用分割去回答「有没有行人」, 等于为了一个是非题去描一遍人的轮廓——精度没多出来,成本涨了一百倍。 所以选型的第一步永远是问业务:你拿到结果之后要做什么?要报警,分类够了;要画框标记,检测; 要算面积,才轮到分割。

二、成本差一个数量级

Demo 按「每图耗时 × 每目标数 × 图数」算了一遍人工成本,单价取 30 元每小时:

任务类型 每图耗时 1000 张总工时 人工费
图像分类 3 秒 0.8 小时 25 元
目标检测 180 秒 50.0 小时 1500 元
关键点标注 120 秒 33.3 小时 1000 元
语义分割 300 秒 83.3 小时 2500 元
最省和最优之间差 100 倍。 这个倍数在小批量时看着无所谓,到了十万张图就是几十万和几百万的差别。
注意检测那一行的 180 秒是怎么来的:
每图 4 个框,每个框 45 秒。所以检测的成本跟「图里有多少目标」直接挂钩——
一张人头攒动的照片和一张空街景,成本能差二十倍。
这也意味着报价不能按「每张图多少钱」,得按「每个框多少钱」。按图报价的项目,遇到密集场景必亏。

三、按业务选,不按精度选

四句话可以当决策树用: 只要判断有没有 → 分类。 有没有安全帽、有没有裂纹、是不是垃圾邮件。 不需要知道位置,就不要花那个钱。 要知道在哪 → 检测。 要画框、要计数、要触发区域报警。 要知道形状或面积 → 分割。 病灶面积、路面破损占比、农作物长势。 要知道姿态或结构 → 关键点。 人脸对齐、人体姿态、屏幕四角矫正。 还有一条现实约束:下游模型支持什么。你要用现成的检测模型,标了分割也用不上; 要跑端侧小模型,分割的精度也保不住。标注类型和训练方案要一起定。

四、两个容易被漏掉的成本

返工率。 任务越复杂,标错和返工的比例越高。分类标错了看一眼就知道; 分割的一个像素描偏了,可能要整张重来。上面那张成本表还没算这一项。 一致性成本。 分割和关键点对「标在哪」的歧义大得多——边界算毛边还是算实体、 关节算骨点还是算皮肤表面。歧义大就要写更厚的手册、做更多轮对齐,这些都是隐性工时。 所以真实项目里的经验值是:把 Demo 那张表的数字乘 1.5 到 2 倍当预算。乘上去之后还划算, 这个任务类型才值得上。 反过来,如果乘完发现不划算,还有一个降级方案: 先做粗标注(检测),用模型跑一遍,再让人修。这叫预标注,能把工时压掉一半以上。

五、动手 Demo:1000 张图:分类 0.8 小时,分割 83.3 小时,差 100 倍

按「每图每个目标的耗时 × 每图目标数 × 图数」估算四种任务的总工时,再乘人工单价算钱。 单价取 30 元每小时,规模取 1000 张图、每图 4 个目标。

tasks = [
    (u'图像分类',   u'整图一个类',   3.0, 1.0),
    (u'目标检测',   u'框出每个目标', 45.0, 4.0),
    (u'关键点标注', u'标出关键部位', 40.0, 3.0),
    (u'语义分割',   u'每个像素归类', 300.0, 1.0),
]

total_s = sec_per * cnt * n_img
hours = total_s / 3600.0
print(hours, hours * rate)

实跑输出:

--------------------------------------------------------------------
选任务类型:分类、检测、分割,成本差一个数量级
--------------------------------------------------------------------
  规模                     1000 张图
  人工成本                 30 元/小时

  任务类型     要标什么       每图耗时      总工时    人工费
  ---------------------------------------------------------
  图像分类     整图一个类         3 秒    0.8 小时     25 元
  目标检测     框出每个目标     180 秒   50.0 小时   1500 元
  关键点标注   标出关键部位     120 秒   33.3 小时   1000 元
  语义分割     每个像素归类     300 秒   83.3 小时   2500 元

  **同一批 1000 张图,最省的要 0.8 小时,最贵的要 83.3 小时——差 100 倍。**
  钱也跟着差:从 25 元到 2500 元。

  所以选任务类型的第一原则不是「哪个精度高」,是**「业务到底需要多细」**:
  只要判断有没有           分类就够,别上检测
  要知道在哪               才需要检测框
  要知道形状、面积         才需要分割
  **多标一级,成本翻十倍,而业务往往用不到那一级的信息。**

  还有一笔隐形成本:**返工率**。任务越复杂,标错和返工的比例越高。
  分割的返工率通常是分类的好几倍——**上面那张表还没算这一项。**

表里四行,总工时从 0.8 到 83.3 小时。 最贵的比最便宜的差 100 倍——这个倍数不是我凑的,是「每图 3 秒」和「每图 300 秒」直接除出来的。 钱也一样:25 元对 2500 元。 1000 张图的规模下,这个差距还能接受;十万张图就是 2500 元对 25 万元。 检测那一行是 180 秒:4 个框乘 45 秒。 所以检测的成本跟目标密度挂钩——同样 1000 张图,街景和室内能差十倍。 关键点 120 秒、分割 300 秒这两个数是按经验给的,不同团队差异很大(有人用半自动工具能压到一半)。 这张表要看的是量级关系,不是绝对数。 最后一句话是这一节的重点: 多标一级,成本翻十倍,业务往往用不到。先把「拿到结果要干什么」问清楚,再选类型。

30 秒实验

  1. 把每图目标数从 4 改成 12(密集场景),看检测的成本涨到多少。这就是「按图报价」会亏的原因。
  2. 把语义分割的每图耗时从 300 秒改成 120 秒(用预标注加人工修),看它还比检测贵多少。 这就是降级方案的价值。
  3. 把人工单价从 30 元改成 80 元(专业领域标注),看总价怎么变。 医疗、法律这类需要专业背景的标注,单价能差三五倍。

常见误区

  1. 「精度越高越好,直接上分割」。分割成本是分类的上百倍,而业务往往只需要「有没有」。 先问用途,再选类型。
  2. 「按每张图报价」。检测的成本跟目标密度强相关,密集场景按图报价必亏。要按框报。
  3. 「成本表算出来就是预算」。返工率和一致性成本都没算,真实预算要乘 1.5 到 2 倍。
自测三问(点开对答案) 1. 为什么说四个任务是「四种问法」而不是「四个精度档」? —— 因为它们回答的是不同的问题:有没有、在哪、什么形状、什么姿态。问题不同,不是精度不同。 用分割回答「有没有」是纯浪费。 2. 为什么检测任务不能按「每张图」报价? —— 因为成本跟图里目标数量直接挂钩。同样一张图,4 个框和 40 个框的工作量差十倍。要按每个框计价。 3. 预算不够时有什么降级办法? —— 先做粗标注(检测代替分割),或者用模型预标注再人工修。预标注通常能把工时压掉一半以上。

类型定了,接着就是定义标签。这一步看着只是敲几个字,实际上是在定一份契约。

相关笔记