这一页两个问题:该用哪种形状去标一个东西,以及机器先跑一遍到底省的是什么、坏的是什么。
| 原语 | 携带什么 | 大概的自由度 |
|---|---|---|
| 点 | 位置 | 2 到 3 |
| 2D 框 | 中心加宽高,朝向可选 | 4 到 5 |
| 3D 框 | 位置、朝向、尺寸 | 9 |
| 折线、多边形 | 一串位置加拓扑 | 几十到几百 |
| 掩码 | 逐像素的形状 | 上万 |
| 目标 | 原语 | 为什么 |
|---|---|---|
| 车辆 | 3D 框 | 它是体。下游要占据空间和朝向,框恰好只给这两样 |
| 道路边缘 | 3D 折线 | 它是线。要连通性、要能跨帧拼、要能延伸 |
| 人行横道 | 贴地多边形 | 它是地上的面。下游只要这块区域,多给高度是浪费 |
| 行人 | 掩码 | 形状不规则,没有简单几何体能准确表达 |
原语携带的自由度,必须够下游用,而且不能多太多。
不够,下游拿不到它要的。太多,是白花的标注成本,而且更容易标错、更难跨帧。
框是块,路沿是线
框与框之间各自独立,没有"首尾相连"这个属性
折线的点序本身就编码了连通性
所以下游拿到框之后,要重新"发明"连通性
而那正是它最需要的东西
这不是信息给少了,是给的结构不对。而且路沿是静态的,它不需要跨帧传播, 它需要的是跨帧拼接:车开过去,一段两百米的路沿被一百帧分段看到, 最后要拼成一条完整的。折线按点序接起来就行,一堆独立的盒子拼不出来。
掩码信息量最大,所以"标一份掩码,其他的都能导出来"。这个直觉不成立。
掩码:有形状,没有朝向
3D 框:有朝向,没有形状
掩码能导出外接矩形,但导不出朝向
因为朝向不是形状的函数
一个对称物体的轮廓,可能对应两个不同的朝向解释。所以那两个自由度是交叉的, 谁都不包含谁。这也解释了为什么很多平台最后是"框标注"和"分割标注"两套并存, 不是没做优化,是它们真的互补。
| 内容 | |
|---|---|
| 输入 | 原始序列,加上可选的、人已标好的关键帧 |
| 输出 | 候选加置信度加排序,不是最终标签 |
输出那一栏值得强调:它是待修改的初稿,不是答案。 而且"排序"很重要,它决定人先看哪一段。
有预处理:人工成本 = 审核成本 + 出错概率 × 修正成本
没有预处理:人工成本 = 从零成本
划算,当且仅当 审核 + 出错概率 × 修正 < 从零
从零画,你按自己的判断画,路径最短。
改一个错框,你要先理解机器想表达什么,再撤销重做, 而且还要抵抗锚定,因为你已经看到机器给的答案了。
所以"模型八成是对的"并不意味着"省了八成"。如果错的那两成很难改,可能净亏。
| 情况 | 后果 |
|---|---|
| 出错概率高,人不再信任 | 索性全部重做。预处理的价值归零,不是打折,审核时间还白花了 |
| 错误是结构性的,比如整条轨迹串错 | 改等于重做,直接净亏 |
| 没有优先级,人在平均用力 | 审核成本被拉到最高 |
模型的目标不是准确率最高,是让人总成本最低。
一个八成准、但错了容易改的模型,胜过九成准、但错了要重做的模型。
预处理的目标不是每个都准,是错得容易改。
落到具体做法上,就是三件事:界面支持局部修改,改一个框而不是整段重来; 输出置信度和可疑度并排序;支持一键拒绝,坏候选直接丢回从零画。
而这三件事有一个共同前提:候选必须结构正确。 框位置偏五厘米好改,整条轨迹串错了就是重做。
原语的选择看匹配,不看先进。多给的自由度如果没人消费,就是纯成本。
预处理的收益是带条件的:模型得够好、错误得改得动、人得还信它。 三条缺一条,省下来的时间就会被抵消掉。