前面三层解决的是"能不能""对不对"。从这一层开始,问题变成"贵不贵"。 这一页讲 AI 在标注流水线里到底干了什么,以及它带来的代价。
先算一下从零画一个 3D 框,一个人的动作序列:
① 在点云里【搜索】物体在哪 耗时最久
② 判断物体的三个维度和朝向 需要经验
③ 拉框、微调角点 机械操作
而人脑在这三件事上的表现差得很远:
| 能力 | 人 |
|---|---|
| 判断"这个框对不对" | ✅ 极快、极准,几十毫秒 |
| 穷举"这里所有东西都找出来" | ❌ 慢、会漏、注意力会疲劳 |
AI 干的不是"标注",AI 干的是【穷举搜索】
把人的工作从"找"降级成"看"
有预标注:人的任务是【看一眼 + 微调】
没有预标注:人的任务是【搜索 + 判断 + 拉框】
从零画约 8 分钟/帧,改框约 1 到 2 分钟/帧
人力成本砍掉七到八成
很多人一听"标注环节用 AI",想到的就是预标注。在一个成熟平台里,模型至少扮演五种角色。
| 角色 | 具体模型 | 干什么 | 价值 |
|---|---|---|---|
| ① 预标注 | YOLOR(2D)、OpenPCDet(3D) | 先生成候选框,人来改 | 砍掉大部分人力 |
| ② 标签传播 | AB3DMOT(跟踪) | 已标的帧推导未标的帧 | 跨帧复用 |
| ③ 交互式辅助 | RITM(图像分割) | 人在操作时实时响应,点一下自动分割出物体 | 单帧内的人机回环 |
| ④ 数据挖掘 | MobileNetV3 加 openTSNE | 决定标哪一帧,不是标什么 | 决定钱花在哪 |
| ⑤ 质检与评估 | ModelRun 机制 | 对比模型标的和人标的 | 差异就是错误和难例 |
① 和 ③ 是两种完全不同的交互模式,工程要求也不一样:
预标注(①):模型先跑完 → 人再改 异步、批处理
交互式(③):人操作 → 模型立刻响应 同步、实时
这个区别后面会变成一条架构判据:异步批量放服务端,同步交互放客户端。
| 数字 | |
|---|---|
| 省下的标注费,一次迭代 | 约 3.7 万元 |
| 跑模型服务的 GPU 开销 | 一块 GPU 跑一天约 240 元 |
| 投入产出比 | 约 150 倍 |
在一个九成成本都在标注的流程里,任何能减少标注人力的东西都是杠杆最高的投资。 所以"为什么每个标注平台都塞 AI"这个问题,答案很朴素:账算下来太划算。
模型 → 预标注 → 人工修正 → 新训练数据 → 更好的模型 → 更好的预标注 → …
要让这个轮子转起来,系统必须能区分"人标的"和"模型标的"。这就是标签来源字段的作用:
sourceId = -1 人标的,也就是 Ground Truth
sourceId = 模型ID 某个模型版本标的
这个字段一旦存在,评测和难例挖掘就变成了副产品:
| 你想知道的 | 数据里直接就有 |
|---|---|
| 模型在这个数据集上错在哪 | 对比 model run 和 GT 的差异 |
| 哪些帧模型最不擅长 | 差异最大的帧,就是优先补数据的地方 |
| 模型 v1 比 v2 好多少 | 两个 model run 都跑同一批数据,比差异 |
| 导出干净的训练集 | 按来源过滤,只要人工标注 |
最后一行是重点。如果不记录来源,AI 预标注的数据会污染训练集, 模型把自己的错误当成正确答案学回去。
这个词是 Human-in-the-loop 的直译,关键词在环,不在"人参与"。
| 说法 | 含义 | 标注场景 |
|---|---|---|
| Human-in-the-loop | 人的介入在每个决策的回路内 | 每帧都过人,这是标注平台的默认形态 |
| Human-on-the-loop | 人在环上监督,只在异常时介入 | 只抽检一成 |
| Human-out-of-the-loop | 无人工介入 | 全自动标注 |
所以"在环"的含义是精确的:不是有人坐在旁边,而是人的判断是每一次输出都绕不过去的一站。
微观环,同步,帧内
人操作 → 模型实时响应 → 人看到结果 → 再操作
对应 RITM。要的是【低延迟】
宏观环,异步,跨迭代
模型 → 预标注 → 人工修正 → 新训练数据 → 更好的模型
就是数据飞轮。要的是【可复现、可追溯】
两个都是人在环,但工程实现完全不同。
通常的说法是"模型不准,所以需要人补"。这只是临时理由。还有一条结构性理由:
全自动标注 = 模型给自己产标签 = 模型自己教自己
→ 模型的错误被当成正确答案学回去 → 逐步坍缩
系统需要一个不来自模型的信息源。这个源就是人。所以人在环里有两个功能,层次不同:
| 功能 | 性质 |
|---|---|
| 补模型的不足,把八成修成十成 | 临时,模型变强就少用人 |
| 提供模型无法自己产生的判据,比如什么算行人、躺在地上算不算 | 🏛️ 结构性,永远需要 |
第二条是本质。"正确"的定义不可能从模型内部长出来。
而"记录标签来源"这个设计,在这里就变成了人在环的制度化: 环要闭合,系统必须能区分人给的和模型给的,否则导出纯净训练集和对比评测这两件事都做不了。
另外,在环里的人不止一层。标注员产出标签,审核员审标注员,管理员定义本体。 连"人"这个环节本身都做成了回路,因为人标注的一致性远不完美。
别从零画 → 减少人的【操作量】 效率诉求
做人在环 → 保证人的【判断仍在】 质量诉求
合起来 = 减少劳动,但不移除判断
这也解释了为什么"全自动标注"在这里不是一个更高级的形态。 它做到了前半句,却把后半句做掉了。而来源标记那套设计,本质就是在防止后半句被做掉。
上一节的账算得很漂亮,但它有前提。只看收益不看代价,很容易做出错误的部署决策。
人看到预标注框后,倾向于"接受加微调",而不是独立判断。 后果是模型漏掉的物体,人也容易跟着漏。
模型没见过的长尾物体
→ 预标注不给框
→ 人看着"没有框",也容易以为这里没东西
→ 漏标
→ 新训练集里还是没有这个类别
→ 模型还是不会
→ 长尾永远补不上
预标注让效率提升,同时也让模型的能力边界变成了数据的能力边界。
而且它是静默的。损失曲线看不出,指标上看不出, 直到你在真实场景里遇到那个模型没见过的物体。
如果模型在这个场景上很差,框全是错的,人改一个错框可能比自己画还慢。 因为要先理解这个错框想表达什么,还要抵抗被它带偏。
所以有"预标注质量阈值"这个概念:先小批量试跑,够好才全量跑。
| 机制 | 对抗什么 |
|---|---|
| 随机抽样做全盲标注,不给预标注 | 锚定偏差。用来测量"如果没人提示,人会标出多少" |
| 对比模型 run 与人工标注的差异分布 | 系统性漏检,不是随机错误,是结构性的 |
| 定期人工审核预标注结果 | 确认偏差累积 |
人在环有收益的前提是模型达到某个质量阈值。
低于阈值时,人不但在环里,还被环拖累。这时候"人出环"、全盲标注反而更准。
这正是平台要做随机全盲标注的原因:它用来测量"没有人在环时人会标成什么样", 以诊断锚定偏差有没有累积。
如果平台没有这些机制,它实际上是在用效率换数据质量,而且这个交换是隐形的。
既然预标注是给人改的,它的优化目标就不该和车端模型一样。
| 错误类型 | 后果 | 严重性 |
|---|---|---|
| 漏检 | 人可能也跟着漏,数据被污染且静默无声 | 🔴 严重 |
| 误检 | 人一眼删掉,浪费几秒 | 🟡 只是成本 |
预标注模型应该追求高召回,而不是高精度。 宁可多检几个让人删掉,也不要漏检让数据悄悄坏掉。
漏检是质量问题,误检只是成本问题。
这和自动驾驶感知的取舍恰好相反。车上误检会导致幽灵刹车,很危险,所以要压精度。
同样是检测模型,在预标注场景下损失函数是不对称的。
AI 在标注里的核心价值不是"替你标",是替你找。它把人的工作从搜索降到判断。
但这份收益是带条件的。条件有三条:模型得够好、来源得能区分、锚定偏差得有办法量。 少一条,省下来的时间和坏掉的数据就会互相抵消。
下一节看最后一层:决定标哪些数据,而不是怎么标。