如何测量边界框上的标注者间一致性
原始 IoU 不等于一致性。如何在做机遇校正的前提下衡量标注者在边界框、多边形与掩码上的一致程度,以及为什么检测、分类与定位需要各自独立的数字。
标注者之间的平均 IoU 衡量的是任务有多容易,而不是他们有多一致。在一份典型的检测语料上,即便标注者根本没看过图片,这个数字也会在 0.95 左右。 衡量空间标签上的一致性,意味着要做机遇校正,并把检测、分类与定位作为各自独立的数字来报告。
原始 IoU 为什么会误导人
设想一份语料,其中每张图片都只有一个居中的大目标。两位都在中间画框的标注者会有很高的重叠度,因此平均 IoU 会算出约 0.95。而一位看都没看就在中间画了个框的标注者,结果也是如此。
这个数字衡量的是任务,而不是标注者。这与百分比一致率在类别标签上遇到的问题完全相同——某一个占主导的类别会抬高分数——解法也相同:对该任务偶然产生的一致程度做出校正。
CVAT 的共识引擎与 V7 的共识环节都以原始 IoU 对照每个类别的阈值来比较标注者。两者都没有做机遇校正,而两者又都被广泛使用,因此从其中任何一方报出的"0.9 一致性",通常无法与任何东西作比较。
为什么不在 1 − IoU 上套用 Krippendorff's α
最显而易见的补救办法,是把 IoU 距离喂给 Krippendorff's α,它可以接受任意距离函数。但在这里效果并不好,动手实现之前值得先了解原因。
Braylan、Alonso 与 Lease(WWW 2022)以"所得分数能否正确地对标注者质量排序"为标准来评估距离函数。对于边界框,α 会把普通 L2(0.687)排在 IoU(0.505)与 GIoU(0.507)之上,这与他们基于分布的度量以及实践者的判断恰好相反。
从结构上看:IoU 距离被限制在 [0, 1] 区间内并且会饱和。随机配对的两个框几乎总是 IoU 为 0,于是期望分歧收敛到约等于 1,α 退化为 1 − 平均距离,其中已不剩任何机遇校正。IoU 还会在最关键的地方失去分辨力:两个不相交的框,无论相邻还是分处对角,得分都是 0,因此恰恰在标注者产生分歧的地方没有梯度。
应当报告什么
把问题拆成三份
| 组成部分 | 问题 | 度量 |
|---|---|---|
| 检测 | 他们究竟有没有找到相同的对象? | 存在性上的名义 α |
| 分类 | 对已匹配的对象,他们给出的标签是否相同? | 标签上的名义 α |
| 定位 | 已匹配的对象是否位于相同位置? | σ 与 KS |
一位找全了所有对象却把标签全标错的标注者,和一位标签正确但框画得松垮的标注者,是两种不同的问题。一个合并后的分数无法告诉你面对的是哪一种,而两者的纠正方式并不相同。
σ,配合经验机遇基线
σ = 1 − 平均(同一条目内距离) / 平均(不同条目间距离)
这是把 α 的 1 − D_o/D_e 形式推广到任意距离,其中机遇基线通过比较不同条目的标注来估计。σ = 0 意味着标注者之间的一致程度,与他们在互不相关的图片上的表现无异。
不要把负值截断到零。"在同一张图上比在不同图上分歧更大"是一种真实状态,而且它几乎总是意味着规范存在歧义,而非标注者粗心。
与之并列的 KS
同一条目内与不同条目间两组距离分布之间的双样本 Kolmogorov–Smirnov 统计量。σ 比较的是两个均值,可能被少数离群值拖动;KS 比较的是整个分布。
两者都要报告。当它们互相矛盾时,说明少数条目承载了绝大部分分歧,这提示你该去看看那些条目。
掩码需要另一套工具
对于像素掩码,"该记录谁的边界"与"他们是否一致"并不是同一个问题。请使用 STAPLE(Warfield、Zou 与 Wells,2004),它在逐像素标签上运行期望最大化,并为每位标注者估计敏感度与特异度。
敏感度与特异度要分别报告,因为它们的纠正方式恰好相反:敏感度低意味着分割不足,特异度低意味着分割过度,而单一的准确率数字会把两者评成同一分。
当认真的标注者人数处于劣势时,STAPLE 也优于多数表决。两位认真的标注者对三位噪声标注者时,多数表决相对真值的 Dice 为 0.846,STAPLE 为 1.000。
三维框需要精确的带旋转 IoU
对于立方体,请使用精确的带旋转三维 IoU。只要数据具有真实的俯仰与滚转——无人机、手持与室内扫描都是如此——轴对齐的近似所报告的分歧就是度量方式的产物。
在 Potato 中如何做
agreement_metrics:
enabled: true
annotation_schemes:
- annotation_type: image_annotation
name: objects
description: "Draw a tight box around every vehicle."
source_field: image
tools: [bbox]
labels:
- {name: car, color: "#FF6B6B"}
- {name: truck, color: "#4ECDC4"}
num_annotators_per_item:
default: 2报告位于 /admin/iaa。有两项特性值得知道:
- 未定义的数值会自我说明。 在完全一致的语料上,α 确实是未定义的。直接给出
NaN会让人以为计算出错,而给出1.0则是谎报。 - 不会无声地截断。 成对比较的复杂度对标注者人数与每个条目的实例数都是平方级的,因此设有预算。触及上限时,该条目会被整体跳过而非只算一半,并且报告会说明纳入了多少条目。
检查清单
- 每个条目至少要有两份独立标注。只有一位标注者时,一致性是未定义的,而不是完美的。
- 分别报告检测、分类与定位。
- 对照经验估计的基线做机遇校正,而不是对照一个固定阈值。
- 同时报告 σ 与 KS。
- 掩码用 STAPLE,立方体用带旋转的三维 IoU。
- 说明覆盖率。一个基于抽样得出、却表现得像完整的数字,会被人当作完整的来引用。
延伸阅读
- 几何形状上的一致性
- 用 STAPLE 做掩码共识
- 标注者间一致性详解——类别标签的情形
- 跨度标注的一致性
- 交互式 IAA 计算器