如何評估 VLM 的定位與指點能力
定位按多個閾值下的 IoU 評分,指點按點落入區域的命中率評分,無可指物件則單獨作為一種答案。以及為什麼用給框評分的方式給點評分總是會失敗。
定位評估問的是模型有沒有把區域放在正確的位置;指點評估問的是它有沒有把點放在正確的東西上。 兩者需要不同的度量,而用定位的度量去評估指點,會把一個指點完全正確的模型報成徹底失敗。
定位:報告多個閾值
以人工標註區域為參照,按 IoU 在 0.25、0.5、0.75 與 0.9 四個閾值下為定位評分。
單一閾值無法區分"幾乎正確"與"差得很遠",而一個恰好被調到剛好跨過 0.5 的模型,看起來與一個真正貼合的模型毫無二致。跨閾值的曲線形狀才是結論所在。
指點不是"畫個小框的定位"
Molmo 系列的模型輸出的是點。點沒有面積,因此任何針對它的 IoU 都是 0。 用給定位模型評分的方式去給指點模型評分,無論它指得多好,報出來的都是徹底失敗。
點所回答的問題是"它是否在那個東西里面",因此度量是一個命中率:point_in_region。
mean_miss_distance 只在未命中的樣本上報告。若把命中樣本也一併平均,它主要衡量的將是物體有多大,而不是模型偏得有多離譜。
標註者在點上的一致性是一個距離
同樣的結構性問題也出現在標註者之間。把由重疊匯出的度量套用到點上會飽和:兩位標註者分別指向同一張圖的對角,得分仍約為 0.86,而任何係數量表都會把它歸入"高度一致"。
因此請報告標註者點位之間的平均距離與中位距離,以歸一化影像單位表示,0 為完美。距離沒有可飽和的上限,而把它稱作距離,也就阻止了任何人把它當作係數來歸檔。
無可指物件是三種不同的錯誤
請分開跟蹤:
| 結果 | 含義 |
|---|---|
| 正確拒答 | 該表示式並未指向畫面中存在的任何東西,而模型也如實指出了 |
| 臆造了位置 | 為一個並不存在的東西給出了區域 |
| 漏掉了確實存在的指稱物件 | 東西在那裡,卻沒被找到 |
把它們合併成一個"錯誤"數字,會掩蓋"過度斷言"與"過度保守"之間的差別,而這兩者的糾正方式恰好相反。
標註者從未作答的表示式會被排除,而不是計作漏檢。 若把它計入,被跳過的短語越多、模型看起來就越差,而那說的其實是標註者,不是模型。
區域描述需要語義距離
描述同一個物體的兩位標註者,很少會用到相同的實詞。"一個把手有缺口的紅馬克杯"與"左邊那個破了的杯子"描述的是同一個區域,卻沒有任何重合的實詞。
請通過語義距離而非字串重疊來計算描述的一致性。Krippendorff's α 接受任意距離函式,因此只要距離選對了,同一套係數機制便可沿用。
配置
annotation_schemes:
# grounding_eval 負責繫結,但它自己不繪圖,
# 因此由一個影像模式來提供畫布。
- annotation_type: image_annotation
name: region
description: "Draw the region for the selected phrase."
source_field: image
tools: [bbox, polygon, landmark]
labels: [{name: referent, color: "#6e56cf"}]
- annotation_type: grounding_eval
name: grounding
description: "What does each phrase refer to?"
region_type: box # 指點評估時改用 `point`
expressions_field: expressions條目攜帶其短語,並帶有穩定的 id:
{"id": "img1", "image": "/media/img1.jpg",
"expressions": [{"id": "e1", "text": "the man in the red shirt"}]}直接給一個字串列表也可以,但此時 id 會回退為位置序號,因此重排該列表會讓已有標註指向別處。
可用示例:RefCOCO 與 PixMo-Points 展示設計。
複核模型預測
如果你是在審計一個模型,而不是在採集基準答案,請讓預測在整條鏈路上都被標記為預測。一條標註者尚未接受的預測,是關於模型的證據;把它併入人工標註區域,就毀掉了它唯一的用途。