VLM 定位、指点与区域描述
把指代表达式绑定到区域;指点任务以点落入区域的命中率评分,而非 IoU;无可指对象的情况单独计数,而不计作漏检。
把每一个指代表达式绑定到能回答它的那个区域,并把"无可指对象"当作一个明确的答案,而不是缺失的答案。 定位任务按四个阈值下的 IoU 评分;指点任务则按点落入区域的命中率评分,因为点没有面积,任何针对它计算的 IoU 都是零。
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 # box | polygon | mask | point
expressions_field: expressions条目自身携带其短语:
{"id": "img1", "image": "/media/img1.jpg",
"expressions": [{"id": "e1", "text": "the man in the red shirt"}]}也可以直接给一个字符串列表,此时 id 回退为位置序号——这一点很关键,因为之后重排该列表会让已有标注指向别处。如果数据源本身有稳定的 id,就应当使用它们。
可运行示例:examples/ai-assisted/grounding-eval/。
指点不是"画个小框的定位"
Molmo 系列的模型输出的是点而非框。设置 region_type: point,标注者便可放置一个标记点。
点必须换一种方式评分:点没有面积,因此任何针对它的 IoU 都是 0。用给框评分的方式给点评分,会把一个指点完全正确的模型报成彻底失败。点所回答的问题是"它是否在那个东西里面",这是一个命中率。
mean_miss_distance 只在未命中的样本上计算。若把命中样本也一并平均,它主要衡量的将是物体有多大,而不是模型偏得有多离谱。
在指点任务上,标注者之间的一致性同样是一个距离,以归一化图像单位表示,而不是一个系数。把重叠度量套用到点上会饱和:两位标注者分别指向同一张图的对角,得分仍约为 0.86,而任何系数量表都会把它归入"高度一致"。距离没有可饱和的上限,并且它被命名为距离,因此不会有人把它当作系数来归档。
无可指对象是单独计数的
以下三种结果彼此分开统计:
- 正确拒答。 该表达式并未指向画面中存在的任何东西,而标注者也如实指出了。
- 臆造了位置。 为一个并不存在的东西给出了区域。
- 漏掉了确实存在的指称对象。 东西在那里,却没被找到。
标注者从未作答的表达式会被排除,而不是计作漏检。若把它计入,被跳过的短语越多、模型看起来就越差,而那说的其实是标注者,不是模型。
区域描述
region_caption 为每个区域增加一段自由文本描述,其一致性通过语义距离计算,而非字符串重叠,因为描述同一个物体的两位标注者,很少会用到相同的实词。
- annotation_type: region_caption
name: captions
description: "Describe each region you drew."
placeholder: "e.g. a red mug with a chipped handle"
min_length: 10
max_length: 300
agreement_distance: token可运行示例:examples/image/region-captioning/,该示例配置了两位标注者并启用了一致性统计。
复核模型的预测
设置 predictions_field 后,条目的预测结果会传到客户端,并增加一个裁定控件。预测在整条链路上都被标记为预测,并且绝不会被并入标注者自己的区域。一条标注者尚未接受的预测,是关于模型的证据;把它折叠进基准答案,就毁掉了它唯一的用途。