🧠 第七章 数据标注
📄 一句话概括

1000 张图、每张 3 个框、全人工 12 秒一张。 上预标注之后,召回 90%、精确 90% 只要 1.6 小时,是全人工的 2.03 倍; 但召回 50%、精确 50% 反而要 21.5 小时,比全人工慢一倍。

📝 本节和前面几节的关系

上一节算清了各种标法的价钱,这一节算怎么把这笔钱省下来。核心只有一句话:让模型先标,人只改。

一、预标注:把「画」换成「改」

从零画一个框要 12 秒:找目标、对齐边缘、确认类别。 改一个已有的框只要几秒:看一眼,对了就过,错了删掉或重画。 所以只要模型给的框大致靠谱,人工就从「创作」变成「审阅」,单位成本立刻降下来。 这就是预标注的全部原理。它不神奇,就是把人的动作从画改成判。 真正要算的是:模型多准的时候这套才划算?

二、要分开算召回和精确

很多人会说「预标注模型准确率 80%」。这句话没法用,因为它把两件事混在一起了: 召回:该有的框,模型找到几个。漏一个,人工要补,补一个 10 秒,比从零画还贵。 精确:模型给的框,有几个是真的。多给一个假框,人工删掉,删一个只要 3 秒。 两个错误的代价差了 3 倍多。所以「准确率 80%」这句话必须拆开看,拆开之后才知道这套划不划算。

三、算出来的盈亏线

Demo 的账:1000 张,每张真值 3 个框,全人工 12 秒一张,共 3.3 小时。 召回 90%、精确 90%:每张复核 2 秒、补 0.3 个框、删 0.3 个框,合计 1.6 小时,2.03 倍加速。 召回 70%、精确 70%:13.7 秒一张,比全人工还慢,加速比 0.88。 召回 50%、精确 50%:21.5 秒一张,加速比 0.56——模型帮了倒忙,人工要一条条删假框、 一个个补漏框。 分界线大致在「召回乘精确」接近 0.5 的地方。低于它,别上预标注。

四、提高一致性的四个手段

速度之外还有一致性。同一批数据标得前后不一,比标错更麻烦。 1. 写规范。边界贴哪一侧、遮挡怎么处理、模糊的算不算,每条都要有例子。 规范不写清,五个人能标出五种结果。 2. 先标 50 张对齐。全组一起标同一批,坐下逐条对,把分歧消掉再开工。 这半天时间能省掉后面几千张的返工。 3. 重叠抽样。抽 5% 到 10% 让两个人各标一遍,算一致性。 一致性低于阈值就停下来重新对齐,不要硬推到结束。 4. 分批验收。每标完一批就抽检,别等全部标完才发现口径错了——那时候返工量是灾难级的。

五、动手 Demo:预标注加复核:召回和精确各要多少才划算

1000 张图、每张真值 3 个框、全人工 12 秒一张; 模型按召回 r 给出 3r/p 个框,其中 3r 个是对的、其余要删; 人工每张复核 2 秒、删一个多余框 3 秒、补一个漏框 10 秒; 对召回和精确各三档共九种组合算总工时和加速比。

def cost(r, p):
    miss = B * (1 - r)                # 漏掉的框
    given = B * r / p                 # 模型给出的框
    extra = given - B * r             # 其中多余的
    return N * (t_check + miss * t_add + extra * t_del)

实跑输出:

--------------------------------------------------------------------
预标注加复核:召回和精确各要多少才比全人工快
--------------------------------------------------------------------
  要标的图                 1000 张,每张真值 3 个框
  全人工每张               12.0 秒(画 3 个框)
  复核每张                 2.0 秒(看一遍、确认)
  删掉一个多余框           3.0 秒
  补一个漏框               10.0 秒
  全人工总耗时             3.3 小时

  召回   精确   总耗时 小时   加速比   对比全人工
  ----------------------------------------------
   50%    50%           6.0     0.56   更慢
   50%    70%           5.3     0.63   更慢
   50%    90%           4.9     0.69   更慢
   70%    50%           4.8     0.69   更慢
   70%    70%           3.8     0.88   更慢
   70%    90%           3.3     1.03   更快
   90%    50%           3.6     0.92   更慢
   90%    70%           2.4     1.42   更快
   90%    90%           1.6     2.03   更快

  这张表最该看的是标「更慢」的那几格。召回 50%、精确 50% 的时候,模型一半框是假的、一半目标没找到,人工既删又补,比从零画还累。
  所以「预标注模型准确率百分之八十」这句话没用——必须把召回和精确分开说。漏框最贵(补一个 10 秒,比画一个还费劲),多给框反而便宜(删一个只要 3 秒)。
  工程上的取向因此很明确:召回做高、精确放宽,宁可多给候选框让人删。这和分类任务追求「均衡」是反的,因为下游的成本不对称。

看「对比全人工」那列:九格里有六格是「更慢」。 这很反直觉,但算一遍就明白——复核的 2 秒省不掉,漏框的 10 秒又很贵。 召回 90%、精确 70% 是 1.42 倍,比 90%/90% 的 2.03 倍差一截。说明精确掉下去会直接吃掉收益。 召回 70%、精确 90% 只有 1.03 倍,几乎不赚。因为漏掉的 0.9 个框每个要 10 秒去补,9 秒就没了。 所以结论很明确:先把召回做上去,再谈精确。漏框是这套流程的头号敌人。

30 秒实验

  1. 把补框时间从 10 秒改成 6 秒,看有几格能从「更慢」翻成「更快」。
  2. 把复核时间从 2 秒改成 4 秒,看整体加速比掉多少。
  3. 想一想:为什么真实系统宁可多给候选框,也不肯漏?

常见误区

  1. 「模型准确率 80% 就能上预标注」——必须拆成召回和精确分别看。
  2. 「预标注一定省时间」——九种组合里六种更慢。
  3. 「一致性靠个人自觉」——得靠规范、对齐会、重叠抽样和分批验收。
自测三问(点开对答案) 1. 为什么补一个漏框比删一个假框贵得多? —— 补框要从零画,删框只要点一下;这个成本差决定了整个流程的设计取向。 2. 预标注划算的分界线大概在哪? —— 召回乘精确接近 0.5 附近,低于它总工时会超过全人工。 3. 保证标注一致性的四个手段是什么? —— 写规范、先标 50 张对齐、重叠抽样算一致性、分批验收。

理论和账都算完了。下一节开始动手:用 VGG 标注工具做五个实例,第一个是三维人脸。

相关笔记