同一批 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 秒实验
- 把每图目标数从 4 改成 12(密集场景),看检测的成本涨到多少。这就是「按图报价」会亏的原因。
- 把语义分割的每图耗时从 300 秒改成 120 秒(用预标注加人工修),看它还比检测贵多少。 这就是降级方案的价值。
- 把人工单价从 30 元改成 80 元(专业领域标注),看总价怎么变。 医疗、法律这类需要专业背景的标注,单价能差三五倍。
常见误区
- 「精度越高越好,直接上分割」。分割成本是分类的上百倍,而业务往往只需要「有没有」。 先问用途,再选类型。
- 「按每张图报价」。检测的成本跟目标密度强相关,密集场景按图报价必亏。要按框报。
- 「成本表算出来就是预算」。返工率和一致性成本都没算,真实预算要乘 1.5 到 2 倍。
自测三问(点开对答案)
1. 为什么说四个任务是「四种问法」而不是「四个精度档」? —— 因为它们回答的是不同的问题:有没有、在哪、什么形状、什么姿态。问题不同,不是精度不同。 用分割回答「有没有」是纯浪费。 2. 为什么检测任务不能按「每张图」报价? —— 因为成本跟图里目标数量直接挂钩。同样一张图,4 个框和 40 个框的工作量差十倍。要按每个框计价。 3. 预算不够时有什么降级办法? —— 先做粗标注(检测代替分割),或者用模型预标注再人工修。预标注通常能把工时压掉一半以上。类型定了,接着就是定义标签。这一步看着只是敲几个字,实际上是在定一份契约。
- ☐ (本节完,下一节 4.2.2 创建和添加自定义标签)