Thinking with Visual Primitives: 推理时一边思考一边 "用手指点"

Teaser: 用 box / point 边推理边指
Fig. 0 — Repo 主页 teaser。左边咖啡杯任务展示 grounded task reasoning,右边迷宫展示 topological reasoning。两个任务都把 box / point 作为推理链中间产物,而不是最终输出。

1. 出发点 (Motivation)

MLLM 的 Chain-of-Thought (CoT) 在 LLM 那一侧已经成熟,但纯语言空间的推理对视觉问题有个根本缺陷。

近几年研究让 MLLM "看更清"——高分辨率 cropping、Thinking with Images——这是在补 Perception Gap。但 paper 指出: 即使感知完美,模型在密集计数 / 拓扑推理 / 多步空间推断时仍然 "逻辑塌方"。

诊断 = Reference Gap: 自然语言天生不擅指代连续视觉空间中的精确位置。"the third dog from the left" 这种表述在密集场景下不可靠,语言"思想"会跟它指代的视觉实体 desync,导致 cascading hallucinations。

类比: 人类做这类任务时用手指辅助 — 数密集物体时一个个指着数,走迷宫时手指跟着路径划。这种 deictic pointer 是低成本的认知工具,把抽象思路锚到具体物理坐标。

Thinking with Visual Primitives 的主张: 让 MLLM 也能这么做。具体: 把 points 和 bounding boxes 提升为"最小思维单元 (minimal units of thought)",穿插进 CoT 推理链。模型一边推理一边 "点":

The user wants me to count men. Looking at the group, I see:
<|ref|>the men<|/ref|><|box|>[[13,228,116,714], [106,226,202,707], ...]<|/box|>
This covers ... 25 in total.

与早前 "grounding 作为后验验证" 的工作不同 (如 RepFormer / VR-FORM 把 bbox 用作 perception 增强的辅助):

这条路解决拓扑推理(迷宫,路径跟踪)和密集计数 — 这些场景里语言根本无法精确指代。

2. 方法 (Method)

2.1 架构 + 视觉 token 极致压缩

Fig 2: 架构 + 训练 pipeline
Fig. 2 — (a) 架构标准 LLaVA-style: 图像经 DeepSeek-ViT → 跟语言 instruction concat → DeepSeek-V4-Flash LLM → response (含 visual primitives) → de-tokenizer。(b) 训练 4 阶段: Pretraining → Specialized SFT → Specialized RL → Unified RFT → On-Policy Distillation。

核心是 DeepSeek-V4-Flash (该团队同期发布的另一个工作 deepseek-v4-2026):

Visual Encoder = DeepSeek-ViT: 内部自研,支持任意分辨率。流程:

  1. 14×14 patch tokenizer → patch tokens
  2. ViT 输出后 3×3 spatial pooling (9 个相邻 patch token 沿 channel 维拼成 1 个)
  3. LLM 内部 CSA 把每 4 个 visual token 的 KV 压成 1 entry

端到端举例 — 756×756 输入图:

这种激进压缩是这个范式能 work 的关键 — 否则把 bbox/point 穿插进 CoT 会让 sequence 爆炸,反而更慢。

Fig 1: token 效率 + benchmark
Fig. 1 — 800×800 输入下,各模型实际 KV cache entries 数: Gemma-4-31B ≈ 289, 本文 ≈ 361 (实际 ~90 entries 在 KV cache), Qwen3-VL-235B-A22B ≈ 660, GPT-5.4 ≈ 740, Claude-Sonnet-4.6 ≈ 870, Gemini-3-Flash ≈ 1100。 右边: 7 个 benchmark (counting + spatial reasoning) 平均分,本文 77.2% 跟前沿模型持平甚至略超。

2.2 Visual Primitives 的定义

两种原子: bounding box + point

为什么选 bbox 为主而非 point ?

  1. Determinism: bbox 紧贴物体边界,annotation 相对确定; point 在物体内部哪都行,无 strict GT
  2. Generalizability: bbox = 2 个 point,训出 bbox 模型可零成本退化到 point;反过来不行
  3. Information: bbox 携带几何信息 (宽高比例),point 只有位置

2.3 Pretraining 数据构建 (技术报告最有 hands-on 价值的一节)

40M 高质量 box-grounding 数据,自建。流程:

HF + 多网站爬虫
   ↓
97,984 box-grounding 数据源
   ↓ Step I: Semantic Review (MLLM-judge)
   ↓   • 丢掉 "0/1" 这种无语义机器码 label
   ↓   • 丢掉 "MyRoommate" 这种私有 entity
   ↓   • 丢掉 "OK"/"NG" 这种主观抽象 label
   ↓ → 43,141 source 留下
   ↓ Step II: Visual-Geometric Review
   ↓   • Severe miss recall >50% → 丢
   ↓   • 严重截断 bbox → 丢
   ↓   • >90% area mega box → 丢
   ↓ → 31,701 source
   ↓ Per-category 采样 (N=1000) + 全局 dedup
   ↓
40M 高质量样本

两阶段 LLM-judge 过滤是这篇 paper 工程上最 hands-on 的贡献 — 公开 OD 数据噪音大,自建一套 standard pipeline 把"语义对齐度 + 几何质量"两个维度都管起来。

统一格式:

两个值得抄的 curation 取舍:

  1. 通用多模态数据坚持用 web 爬取,拒绝模型蒸馏合成(如合成 caption),也不让 LLM 改写数据内容 —— 避免把其他模型的偏见 / 幻觉一并继承进来。
  2. 专项 primitive 能力另外补了 6 个高质量公开集:PixMo / Molmo(Deitke et al.)、Open Images V4(Kuznetsova et al.)、COCO(Lin et al.)、Kosmos-2 的 grounding 数据(Peng et al.)、Objects365(Shao et al.)、V3Det(Wang et al.),统一转成上面的 <|ref|>...<|box|> / <|point|> 格式。

Pretraining 全程消耗 trillions of multimodal tokens (与 base LLM 同尺度)。

2.4 4 个 Cold-Start 任务

Post-training 之前需要 cold-start 数据 bootstrap visual primitives 推理风格。4 个任务:

任务 样本数 难点 关键数据来源 & 合成方式
Counting (coarse + fine) ~10k 密集物体计数易丢漏 粗:聚合多个 dense detection 集 —— CARPK(无人机车辆)、OmniCountOpen ImagesCrowdHumanObjects365VisDrone、病理/细胞密集检测集;细:基于 GQA scene-graph 自造问题。MLLM 按"意图分析→批量 grounding→求和"生成 thinking,严格校验框与元数据坐标/语法/计数全一致;含 count=0 负样本
Spatial Reasoning + VQA 9k 多 hop 关系推断 自然:GQA 图 + scene graph;合成:CLEVR 工具链(3D 坐标投影成 2D box 做监督)。含负样本(faithful refusal)
Maze Navigation 460k 拓扑可达性,需 DFS + 回溯 程序合成:DFS / Prim / Kruskal 生成迷宫;3 种拓扑(矩形 / 同心圆环 / 六边形蜂窝)+ 可解 & 不可解;难度靠网格大小控制;point 标 DFS 前探 + 回溯
Path Tracing 125k 交叉曲线 disambiguation Bézier 曲线合成:统一线宽 + 去颜色捷径,逼模型靠曲率连续性;端点不与他线重叠(违反则重生成);thinking 为沿曲线采样的 point 序列(曲率大处加密)

冷启动总量 ≈ 604k(10k + 9k + 460k + 125k),其中迷宫 / 路径追踪几乎全靠程序合成,计数 / 空间推理则在公开集上用 MLLM 合成 thinking + 规则校验。所有冷启动样本的 thinking 里都嵌可验证的 primitive 序列,不是自由文本。

每个 cold-start 样本的 thinking content 都包含可验证的 visual primitive 序列, 不是普通自由文本。Counting 例子 (Fig 3):

1. Deconstructing the query: count men.
2. Sweeping the photo:
   <|ref|>the men<|/ref|><|box|>[[13,228,116,714], [106,226,202,707], ...]<|/box|>
3. Tallying: 4+9+8+2+2 = 25
Response: 25 men.

迷宫例子 (Fig 5) — 用 point 标 DFS 探索轨迹:

Fig 5: 迷宫导航 cold-start
Fig. 5 — 迷宫 cold-start 数据示例。模型从起点 (lime label) 探索到终点 (tangerine circle),沿途 emit `<|point|>` 标记每一步位置。遇到 dead end 时显式 backtrack,这跟人脑做 DFS 一样。最终输出 `[\boxed{True}]` + 可验证路径。

2.5 Post-Training: 4 阶段 + 3 类 Reward Model

Stage 1: Specialized SFT —— 70% general MM + 30% specialized data。分开训 box (FTwG) 和 point (FTwP) 两个 specialized model — 数据少时混训会 mode conflict。

Stage 2: Specialized RL (GRPO) —— 各自 RL fine-tune,3 类 reward model:

关键 trick: cold-start 中的 visual primitives 已 ground-truth-verified,所以 RL 阶段不对 primitives 本身做监督 — 只看最终答案和质量。这让 RL 数据要求大幅放宽 (图+问题+答案就够,不需要 box 标注),数据规模可大幅扩张。

Stage 3: Unified RFT(拒绝采样 / rollout 微调,⚠️ 不是 RL) —— 这里的 RFT 是 Rejection-sampling / Rollout Fine-Tuning,不是 "reinforcement fine-tuning"。做法:让两个专家 FTwG、FTwP 在 data pool 上 rollout 生成轨迹(套用前面的难度分级),汇成一份更大更杂的 RFT 数据集;然后从 base 预训练模型重新初始化(不是把两个专家做权重平均!),按与 SFT 相同的配置训练,得到统一模型 \(\mathcal{F}\)。换句话说,"合并"发生在 数据层面(两个专家的 rollout 数据并集),而非权重层面。

Stage 4: On-Policy Distillation (OPD) —— RFT 后的 \(\mathcal{F}\) 在各自专长域仍略逊于两个专家,于是用 OPD 把专家本事蒸进 \(\mathcal{F}\):student(\(\mathcal{F}\))用自己生成的 on-policy 轨迹,以 KL 散度 + 全词表 logit 蒸馏(full-vocabulary logit distillation)对齐 两个 teacher(FTwG、FTwP) 的输出分布,得到最终交付模型。

术语澄清:RFT 在本文 = 拒绝采样微调(专家 rollout 数据 → re-init from base → SFT 式训练),不要与 "reinforcement fine-tuning" 混淆。Stage 2 的 RL 用的是 GRPO,Stage 3 才是 RFT,二者是不同阶段、不同方法。

2.6 训练流程总览(谁→从谁初始化→什么方法→什么数据)

整条流水线是 "先分科训两个专家 → 数据层面合成一个统一模型 → 蒸馏提质"(论文称 train specialists—then—merge)。底座始终是 DeepSeek-ViT + DeepSeek-V4-Flash(LLaVA 式结构)。

阶段 训练哪个模型 从什么初始化 训练方法 用什么数据
0. 预训练 整个 MLLM(ViT+投影+LLM) DeepSeek-V4-Flash + DeepSeek-ViT 底座 标准自回归预训练(NTP) trillions 多模态 token + 自建 40M box-grounding + 6 个公开集
1. 专项 SFT 两个专家 FTwG(框)/ FTwP(点) 均复制自阶段 0 预训练模型 监督微调(SFT) 70% 通用多模态 + 30% 专项冷启动
2. 专项 RL FTwG、FTwP 各自 各自的 Stage1 SFT 结果 GRPO + 3 类 RM(Format/Quality/Accuracy) 仅"图+问题+答案"(不监督 thinking 里的 primitive)
3. Unified RFT 1 个统一模型 \(\mathcal{F}\) ⚠️ 重新初始化自 base 预训练模型 拒绝采样微调(RFT),SFT 同配置 两专家 rollout 生成的统一数据集(难度分级)
4. On-Policy Distill 统一模型 \(\mathcal{F}\)(最终版) Stage3 的 \(\mathcal{F}\) OPD:on-policy + KL 全词表 logit 蒸馏 \(\mathcal{F}\) 自采样轨迹,teacher = FTwG + FTwP

3. 结论 (Key Findings)

⚠️ 没有 detailed benchmark 表 — README 和 PDF 都是定性 + Fig 1 单张柱状图。具体数字只能看 Fig 1。

Fig 1 右边:

核心信息:

  1. 选定 benchmark subset 上 (paper 自报子集,不是 overall capability) 跟 frontier models 持平或反超
  2. Token efficiency 是 GPT-5.4 的 ~1/8, Claude-Sonnet-4.6 的 ~1/10
  3. README 明确说 "scores cover only a subset of evaluation dimensions that are directly relevant to the research focus" — 不是 overall capability claim

4. 实现细节 (Implementation Notes)

⚠️ 代码 + 权重 + 数据 0 release (截至 2026/06/04)。Repo 只有 PDF + README + Makefile,没有 src/。News 说"模型权重将集成进 foundation model 未来释出",benchmark 子集 + cold-start 数据子集 "近期" release。

5. 批判性总结 (Critical Assessment)

5.1 优点

5.2 不足 / 疑点

5.3 适用 vs 不适用

5.4 进一步阅读

讨论 / Comments

评论托管在本仓库的 GitHub Discussions, 需 GitHub 账号。