vl_benchmark_tutorial

Chapter 6: 视觉 Grounding 与指代表达理解 (RefCOCO 系列)

1. 开篇:连接视觉与语言的“手指”

在 Chapter 2 和 Chapter 3 中,模型主要是在“看图说话”或回答问题。然而,在机器人抓取、自动驾驶行人分析、以及精确的图像编辑(如“把左边那个人P掉”)中,我们需要模型具备一根“手指”——能够精准地指出语言描述的是图像中的哪一块区域

这就是 Visual Grounding(视觉定位) 的核心使命。

本章将聚焦于 Referring Expression Comprehension (REC),即“指代表达理解”。这不仅要求模型能识别物体,更要求模型理解物体之间的空间关系(spatial relations)、属性对比(attribute comparison)以及复杂的句法结构

本章学习目标

  1. 任务全景:区分 REC, REG, RES 以及 Phrase Grounding。
  2. 基准细究:彻底搞懂 RefCOCO, RefCOCO+, RefCOCOg 的区别(这是阅读论文的门槛)。
  3. 技术范式:理解从“两阶段检测”到“LLM Token 生成”的技术演变。
  4. 实战技巧:掌握 IoU 计算、坐标归一化陷阱以及数据增强策略。

2. 任务谱系与核心定义

在进入数据集之前,必须厘清几个容易混淆的任务术语。

2.1 核心任务矩阵

缩写 全称 输入 (Input) 输出 (Output) 核心挑战
REC Referring Expression Comprehension 图像 + 一句特定描述 一个边界框 (BBox) 消除歧义,唯一精准定位
REG Referring Expression Generation 图像 + 一个目标框 一句区分性描述 生成独特的特征(不仅是”猫”,是”左边那只睡着的猫”)
RES Referring Expression Segmentation 图像 + 描述 像素级掩码 (Mask) 需要极细粒度的边缘分割能力
Phrase Grounding (e.g., Flickr30k Entities) 图像 + 一句长描述 多个 BBox 句子里的每个名词短语 (NP) 都要找到对应的物体

ASCII 示意图:REC 流程

Input Image (H x W)                 Input Text
+-----------------------+          "The woman in the white
|      [Person A]       |           dress standing behind
| [Person B] [Person C] | <-------  the chair."
+-----------------------+
          |
          v
   Multimodal Model
          |
          v
    Output BBox
+-----------------------+
|  [x1, y1, x2, y2]     | ---> 对应 [Person C] 的坐标
+-----------------------+

2.2 技术流派:怎么做到的?

理解 benchmark 之前,需要知道模型是怎么解题的,这有助于理解为什么某些 benchmark 会针对性地“攻击”模型的弱点。

  1. 两阶段法 (Two-Stage / Detection-based):
    • 先用检测器(如 Faster R-CNN)把图里所有的物体框都切出来。
    • 然后用一个多模态匹配模型,算每个框和文本的相似度得分。
    • 缺点:如果第一步检测器没把你想要的人框出来,第二步就彻底没戏了(瓶颈在 Recall)。
  2. 单阶段法 (One-Stage / End-to-End):
    • 类似 YOLO 或 DETR,直接输入整图和文本,一步输出最终坐标。
  3. LLM 生成法 (The Modern Way):
    • 将坐标视为特殊的文本 token(例如 <box>255, 300, 500, 600</box>)。
    • 像 GPT-4o、Qwen-VL、Kosmos-2 都是这类。
    • 优势:可以利用 LLM 强大的常识推理能力(例如理解“可以用来切菜的东西”是指“刀”)。

3. Benchmark 详解:RefCOCO 家族与朋友们

这是本章的重点。RefCOCO 系列均基于 MS COCO 图像,但采集协议完全不同,测试的能力维度也截然不同。

3.1 RefCOCO & RefCOCO+ (UNC Data)

这两者源自同一个双人游戏(ReferItGame)。玩家A看图描述,玩家B猜。

3.2 RefCOCOg (Google Data)

Rule-of-Thumb (选型指南)

3.3 Phrase Grounding: Flickr30k Entities


4. 评价指标与协议

4.1 IoU (Intersection over Union)

这是计算机视觉的黄金标准。

4.2 Accuracy @ 0.5

Grounding 任务通常不关注框得有多么“完美”(例如 IoU 0.9),而是关注有没有指对人

4.3 为什么不用 Mean IoU?

Mean IoU 会掩盖错误。例如:


5. 训练数据配方与构建策略

如果你要训练一个 Grounding 模型,光靠下载 RefCOCO 是不够的。

5.1 数据增强:坐标抖动与负样本

5.2 格式统一:坐标归一化

大模型(如 LLaVA/Qwen)通常将坐标归一化到 [0, 1000] 的整数区间。

5.3 伪标注 (Pseudo-Labeling)

RefCOCO 数据量较小(几万张图)。为了提升性能,业界常用策略:

  1. 拿 Object Detection 数据集(如 Object365, OpenImages)。
  2. 用简单的模板(”A photo of a [CLASS]”)构造文本。
  3. 或者用 Caption 模型生成描述,再用强力的 Grounding 教师模型去验证。

6. 练习题(实战演练)

基础题 (帮助熟悉概念)

Q1: IoU 临界值计算 假设 GT 框是 (面积 10000)。 预测框也是 的正方形,但是向右平移了 个单位。 请问 等于多少时,IoU 恰好等于 0.5?(这有助于理解为什么 Acc@0.5 是一个比较宽松但合理的指标)。

点击展开答案 **答案:** **解析**: 设平移量为 。 交集宽为 ,高为 。交集面积 。 并集面积 。 。 。 **直观理解**:只要偏移量小于边长的 1/3,就能算“对”。

Q2: 数据集区分 判断下列 Prompt 最可能属于哪个数据集(RefCOCO, RefCOCO+, RefCOCOg)?

  1. “Blue shirt guy”
  2. “The man sitting on the bench feeding pigeons”
  3. “Left person”
点击展开答案 **答案:** 1. **RefCOCO+** (强调外观属性,Blue shirt)。 2. **RefCOCOg** (长句,包含动作关系 feeding pigeons)。 3. **RefCOCO** (极短,强调方位 Left)。

Q3: 任务边界 如果用户上传一张图问:“把图中所有的苹果都标出来”。这是 REC 任务吗?

点击展开答案 **答案:** 不完全是。 **解析**:标准的 REC (RefCOCO style) 假设是 **Single Object Grounding**(指代特定单一物体)。 “找出所有苹果”属于 **Open-Vocabulary Object Detection (开放词汇目标检测)** 或 **Phrase Grounding** (Flickr30k style)。虽然技术栈通用,但在评测时,REC 指标只算 Top-1 box,不适合评估“所有目标”。

Q4: 坐标还原 模型输出归一化坐标 token 为 [250, 250, 750, 750] (范围 0-1000)。 原图尺寸 。 请计算还原后的真实像素坐标 。

点击展开答案 **答案:** **解析**: 。 。

挑战题 (深度思考)

Q5: 宽高比陷阱 (Aspect Ratio Gotcha) 接 Q4。现在的 VLM 通常将图像预处理为 的正方形输入。 如果 的图被直接强制拉伸 (Resize without keep ratio) 成 ,模型输出了正中心框 [500, 500]。 但在实际部署中,你的预处理逻辑改成了 Letterbox Padding(保持比例缩放,上下补黑边)。 如果你不重新微调模型,直接用这个模型推理,会发生什么现象?为什么?

点击展开答案 **答案:** **现象**: 轴坐标会严重偏离,预测框会“漂”到图像中间压缩的内容部分,导致 IoU 暴跌。 **解析**: * **强制拉伸模型**学到的是:图像内容充满了整个 画布。 * **Padding 输入**:图像内容被压扁在中间,上下是黑边。 * 模型不知道黑边是无意义的,它可能会把坐标输出到黑边里,或者按照它记忆中的“拉伸感”去定位。 * **结论**:**预处理逻辑必须与训练时严格一致**。这是 VLM 部署中最常见的 Bug 来源。

Q6: 文本依赖性测试 (Blind Test) 有一种调试方法叫 “Blind Grounding”:把图像设为全黑,只给文本,让模型预测框。 如果模型在 RefCOCO 上 Blind Grounding 的 Acc@0.5 达到了 20% 甚至更高,这说明了什么?这是好事还是坏事?

点击展开答案 **答案:** **说明**:数据集存在严重的 **Center Bias (中心偏差)** 或位置分布规律。 **解析**: * 摄影师拍照习惯把主角放在中间。 * 既然是 Blind (看不见图),模型全靠猜。如果猜得准,说明模型学到的不是“视觉理解”,而是“统计概率”(比如不管你说什么,我都猜中间)。 * **坏事**:这意味着基准测试的分数虚高,模型并没有看上去那么聪明。

Q7: 多义性与拒答 (Ambiguity & Rejection) 在 RefCOCOg 中,如果有这样一条数据: 图:两只一模一样的斑马。 文本:”The zebra.” Ground Truth 标注了左边那只。 这是一个好的训练数据吗?如果模型微调时遇到了这种数据,会产生什么负面影响?

点击展开答案 **答案:** **不是好数据**,这是“脏数据”或“歧义数据”。 **负面影响**: * 这会导致模型产生 **Hallucination (幻觉)**。 * 因为视觉上无法区分,模型会被迫学习文本中不存在的特征(比如认为"zebra"这个词本身就暗示左边),或者学习去拟合标注员的随机噪声。 * **对策**:在数据清洗阶段,计算指代文本与图中所有对象的 CLIP 相似度,如果 Top-1 和 Top-2 差异过小,应剔除该样本。

Q8: 链式思考 (CoT) 在 Grounding 中的应用 相比于直接输出 <box>..., 让模型先输出一段 “Rationalization” (例如:I see two dogs. The user asks for the left one. So I should focus on the black dog on the left side…) 再输出坐标,有什么优缺点?

点击展开答案 **答案:** **优点**: 1. **可解释性**:知道模型为什么选这个。 2. **纠错**:CoT 可以帮助模型分步推理(先找大物体,再找相对位置),在复杂场景(RefCOCOg)通常能提升准确率。 **缺点**: 3. **推理延迟**:输出那么多废话,实时性(FPS)会大幅下降。 4. **幻觉风险**:有时候模型解释得头头是道,最后框画歪了,这种“一本正经胡说八道”对用户体验伤害更大。

7. 常见陷阱与错误 (Gotchas)

  1. Split 的诅咒 (The Split Confusion):
    • RefCOCO: 有 testA (People focus) 和 testB (Object focus)。论文必须汇报这两个的平均值或分别汇报。
    • RefCOCOg: 最坑的一个。有 google split (标准划分) 和 umd split (University of Maryland 划分)。这两个的验证集和测试集完全不同
    • 陷阱:如果你用 google 的训练集训练,去跑 umd 的测试集,这叫数据泄漏(因为有重叠)。一定要看清楚论文比的是 val-g 还是 val-u
  2. XYXY vs XYWH:
    • COCO 标注格式默认是 [x_topleft, y_topleft, width, height]
    • 许多模型(如 CLIP 预处理、DETR)需要 [x_center, y_center, w, h][x_min, y_min, x_max, y_max]
    • 调试:IoU 算出来极低 (0.0x) 时,99% 是坐标格式搞反了。
  3. 大模型的“多嘴”毛病:
    • 微调 LLaVA/Qwen 做 Grounding 时,如果不加特殊的 token 约束,模型可能会在输出坐标后继续喋喋不休地描述物体,导致输出解析失败。
    • Rule-of-Thumb:在 System Prompt 中强制约束“Output only the bounding box coordinates.”。
  4. 可视化验证的必要性:
    • 不要只看 IoU 数字。一定要把预测框画在图上看看。
    • 你可能会发现:模型虽然 IoU 很高,但总是把框画得比物体大一圈(包含背景),或者总是切掉物体的脚。这能指导你调整 Loss Function(比如加入 GIoU loss)。