CodePercept: Code-Grounded Visual STEM Perception for MLLMs¶
会议: CVPR 2025
arXiv: 2603.10757
代码: https://github.com/TongkunGuan/Qwen-CodePercept
领域: 多模态VLM
关键词: STEM感知, 代码生成, 视觉推理, 数据合成, 感知瓶颈
一句话总结¶
通过 scaling 分析发现 STEM 视觉推理的真正瓶颈是感知而非推理,提出用可执行 Python 代码作为精确感知媒介——构建 ICC-1M 数据集(Image-Caption-Code 三元组)训练模型,在 STEM 感知基准上 CodePercept-8B 比 Qwen3-VL-8B 提升 +3.0%-12.3%。
研究背景与动机¶
领域现状:当前 MLLM 在 STEM 领域的改进集中在推理能力——cold-start 数据、RL 训练、text-only thinking data 迁移。大量工作用 RL reward 来提升数学/科学推理。
现有痛点:模型在 STEM 任务上失败时,不知道是感知不够还是推理不够。传统 benchmark 只测问题求解准确率,无法分离两种能力。
核心矛盾:作者通过 scaling 实验揭示——将 STEM 推理解耦为 perception (image→caption) 和 reasoning (caption→answer),独立 scale 两者时,perception scaling 始终优于 reasoning scaling。这表明感知才是真正的杠杆。
本文目标 如何系统性提升 MLLM 在 STEM 领域的视觉感知能力?
切入角度:自然语言描述 STEM 图像时存在"描述失语"——复杂空间关系、精确数值无法用自然语言完整表达。但可执行代码天然具有精确语义,与 STEM 图像的结构化特性高度匹配。
核心 idea:用可执行 Python 代码作为 STEM 视觉感知的 ground truth 和训练媒介——能准确重构图像才证明真正理解了图像。
方法详解¶
整体框架¶
三大组件:(1) ICC-1M 数据集构建(1M Image-Caption-Code 三元组),(2) 两个 Code-Grounded 训练任务(代码驱动的 caption 生成 + 图像到代码翻译),(3) STEM2Code-Eval 基准(通过代码重构评估感知能力)。训练分两阶段:SFT + RL。
关键设计¶
-
Scaling 分析(关键发现):
- 功能:将 STEM 推理解耦为 感知(MLLMcaptioner → 描述)和 推理(LLMsolver → 答案)两阶段
- 实验设计:固定一方用 4B 模型,另一方分别用 4B/8B/32B 模型,观测性能变化
- 关键结论:scaling perception 的提升始终大于 scaling reasoning。用 Qwen3-VL-Thinking 模型在 MathVision 上验证。这回答了一个长期存在的问题——STEM 失败的根因是感知
-
ICC-1M 数据集构建(三条 pipeline):
- Image Reproduce (IR):用 MLLM 为现有 STEM 图像生成重构代码——先 caption 理解内容,再据此 + 原图生成代码
- Image Diversity (ID):从种子图像提取底层 STEM 原理,然后在不同视觉上下文中重新实例化(如从多米诺逻辑谜题→圆形多米诺轮、三角排列等),扩展多样性
- Solid Geometry (SG):用参数化模板生成立体几何图像+代码,解决 LLM 无法生成准确 3D 空间代码的问题
- 统一质量控制:图像质量 + 代码质量 + 图像-代码一致性三重过滤
-
Code-Grounded Caption Generation:
- 功能:利用可执行代码作为 ground truth 来生成精确 caption
- 核心思路:先生成 native caption(可能有幻觉)→ 分析代码+执行日志提取 verified visual facts → 用 visual facts 修正 caption 中的错误
- 亮点:execution tracer 自动记录几何坐标、数量、颜色等精确信息,解决代码复杂逻辑难以直接分析的问题
- 设计动机:直接让 MLLM 描述 STEM 图像会产生数值、空间关系的幻觉
-
STEM Image-to-Code Translation:
- 功能:训练模型从图像直接生成可执行重构代码
- 核心思路:先生成解释性代码草稿(有步骤说明但可能错误)→ 用 ground truth 代码修正错误,保留解释性结构
- 代码作为"结构化 caption",与自然语言 caption 互补
训练策略¶
- SFT:联合训练 image→caption 和 image→code 两个任务,让语义理解和结构化理解相互增强
- RL(GRPO):只对代码生成做 RL,reward = format reward(合法 Python 块)+ content reward(可执行 + GPT-4o 评分代码语义 + GPT-4o 评分图像相似度)
- 基于 Qwen3-VL 系列,32×A100 训练
实验关键数据¶
主实验(Captioner-Solver 感知评估)¶
| 模型 | MathVision | MathVista | MathVerse | DynaMath | WeMath | LogicVista | Avg |
|---|---|---|---|---|---|---|---|
| Qwen3-VL-8B-Instruct | 54.37 | 69.60 | 63.75 | 72.19 | 45.43 | 56.82 | 60.36 |
| CodePercept-8B-S1 | 59.31 (+5.0) | 70.20 (+0.6) | 66.52 (+2.8) | 73.20 (+1.0) | 49.14 (+3.7) | 61.52 (+4.7) | 63.32 (+3.0) |
| CodePercept-32B-S1 | 62.27 (+3.7) | 72.90 | 71.70 | 77.41 | 54.19 (+6.2) | 65.33 | 67.30 (+2.7) |
STEM2Code-Eval(代码重构评估)¶
| 模型 | Image Score | Code Score | Avg | Exec Rate |
|---|---|---|---|---|
| Qwen3-VL-8B-Instruct | 28.59 | 28.23 | 28.41 | 85.3% |
| CodePercept-8B-S1 | 44.53 | 46.78 | 45.66 | 87.6% |
| CodePercept-8B-R1 | 50.25 | 47.04 | 48.65 | 93.4% |
| Gemini2.5-Pro-Thinking | 68.89 | 75.41 | 72.15 | 91.7% |
消融实验¶
| 数据配置 | Avg Score |
|---|---|
| Qwen3-VL-8B baseline | 60.36 |
| + IR-CodeCap | 60.91 (+0.6) |
| + ID-CodeCap | 62.15 (+1.8) |
| + SG-CodeCap | 62.75 (+2.4) |
| NativeCap (直接caption,无代码) | 60.78 |
| CodeCap (代码驱动caption) | 62.75 (+2.0) |
| CodeCap + ImCode (联合训练) | 63.32 (+2.5) |
关键发现¶
- 感知是瓶颈的实证:scaling 分析非常有说服力——独立放大感知能力的收益始终超过放大推理能力
- 代码驱动 caption 比直接 caption 好 +2.0%:验证了代码消除幻觉的有效性
- Caption 和 Code 互补:联合训练比单独 caption (+0.6%) 或单独 code 效果更佳
- RL 对代码生成帮助巨大:CodePercept-8B-R1 vs S1 在 STEM2Code-Eval 上 +3.0,Exec Rate +5.8%
- CodePercept-8B 超越多个 72B 模型:在 captioner-solver 评估中超越 Qwen2.5-VL-72B
亮点与洞察¶
- "感知是瓶颈"是一个被忽视但极重要的发现。当前 STEM AI 研究几乎全聚焦推理(RL、CoT),但这篇论文用 controlled experiment 证明应先解决感知。这可能改变该领域的研究优先级。
- "代码作为感知媒介"的 insight 非常精妙:代码天然具有精确性(坐标、颜色值)、可验证性(能执行)和结构性(层次化描述),这些都是自然语言缺乏的。
- Execution tracer:执行代码并记录所有渲染细节(坐标、z-order、颜色 RGB),作为代码分析的"说明书",巧妙地解决了 LLM 难以分析复杂代码逻辑的问题。
- STEM2Code-Eval benchmark 的设计理念:只有能重构图像才算真正理解图像——这比回答问题更全面地评估感知。
局限与展望¶
- 代码生成限于 matplotlib:某些 STEM 图像(如真实照片、手绘图)无法用 matplotlib 重构
- RL reward 依赖 GPT-4o:GPT-4o 评分不稳定且昂贵,可探索基于像素相似度的自动 reward
- 只测试了 STEM 领域:代码作为感知媒介的思路是否适用于其他领域(医学影像、遥感)?
- 感知 vs 推理的解耦不完美:caption 质量同时影响感知和表达能力,解耦不彻底
相关工作与启发¶
- vs Vision-R1/Video-R1 等 RL 推理工作:这些工作全力提升推理,CodePercept 指出他们可能在优化错误的方向——应先提升感知。
- vs Chart/UI 代码生成:那些是面向下游应用的代码生成,CodePercept 是用代码作为感知增强手段,目标不同但技术可互通。
- 启发:也许其他模态(音频→MIDI、3D→渲染代码)也可以用"代码作为感知媒介"的思路来提升理解能力。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ "感知是瓶颈"+代码作为感知的双重洞察,非常原创
- 实验充分度: ⭐⭐⭐⭐⭐ 6个STEM基准,scaling分析,全面消融,3个模型规模(4/8/32B)
- 写作质量: ⭐⭐⭐⭐ 结构清晰,但公式稍多
- 价值: ⭐⭐⭐⭐⭐ 可能改变STEM AI研究的优先级,benchmark + 数据集 + 方法贡献全面
相关论文¶
- [ICML 2025] EpiCoder: Encompassing Diversity and Complexity in Code Generation
- [ICLR 2026] Execution-Grounded Credit Assignment for GRPO in Code Generation
- [ACL 2025] DynaCode: A Dynamic Complexity-Aware Code Benchmark for Evaluating Large Language Models in Code Generation
- [ACL 2025] Rethinking Repetition Problems of LLMs in Code Generation
- [ACL 2025] GiFT: Gibbs Fine-Tuning for Code Generation