如何測量邊界框上的標註者間一致性
原始 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 計算器