CodePercept: Code-Grounded Visual STEM Perception for MLLMs¶
会议: CVPR2026 arXiv: 2603.10757 代码: TongkunGuan/Qwen-CodePercept 领域: 多模态VLM 关键词: STEM视觉感知, 可执行代码, 图像重建, 代码锚定字幕, 多模态大模型, 感知增强
一句话总结¶
通过系统性缩放分析发现 感知(perception)而非推理(reasoning) 是MLLM在STEM领域的真正瓶颈,提出以可执行Python代码为锚定媒介的CodePercept范式,构建百万级ICC-1M数据集和STEM2Code-Eval基准,显著提升MLLM的STEM视觉感知能力。
研究背景与动机¶
- STEM推理的瓶颈之问:当前大量工作聚焦于用强化学习增强MLLM的推理能力(冷启动数据、RL奖励设计、单模态推理数据迁移),但始终未回答:模型STEM任务失败到底是感知不足还是推理不足?
- 缩放实验揭示真相:作者将STEM视觉推理解耦为感知(image→caption)和推理(caption→answer)两阶段,独立缩放一端并固定另一端,发现扩展感知始终优于扩展推理,证明感知才是STEM视觉推理的真正杠杆。
- 知识蒸馏的幻觉问题:直觉方案——用GPT/Gemini等强模型生成描述性字幕进行知识蒸馏——faced两大缺陷:教师模型在空间关系、数量细节上易幻觉;复杂STEM图像存在"描述失语"(descriptive aphasia),自然语言无法精确刻画辅助线、多面体等结构。
- 评测范式的缺失:现有STEM评测(MathVision、MathVista等)以问题解答准确度为代理指标,只能反映"与问题相关的理解",无法度量全面的视觉感知能力。
- 代码作为感知媒介的优势:可执行代码天然具有精确语义、可验证性、结构化表达,与STEM视觉内容的结构化本质对齐——只有完整理解图像才能生成正确的重建代码。
- 训练数据的空白:缺乏大规模、高质量的STEM图像-代码配对数据来训练模型的代码锚定感知能力。
方法详解¶
整体框架¶
CodePercept包含三大模块:(1) 图像-代码对构建引擎 → (2) 两种代码锚定训练任务 → (3) SFT+RL两阶段后训练。基于Qwen3-VL系列模型。
关键设计¶
1. 图像-代码对构建(三条互补pipeline)
- Image Reproduction (IR):对种子STEM图像,先用MLLM生成详细描述,再基于图像+描述生成matplotlib重建代码。受限于源图像多样性。
- Image Diversity (ID):抽取种子图像的底层科学原理(Gₚᵣᵢₙ꜀ᵢₚₗₑ),基于同一原理生成K个不同视觉实例化代码。例如从多米诺逻辑谜题生成圆形排列、三角组合、瓢虫矩阵等变体,保持STEM严谨性的同时引入结构新颖性。
- Solid Geometry (SG):针对LLM/MLLM在立体几何代码生成上的根本缺陷,构建参数化模板库(立方体展开折叠、正投影三视图、截面分析、多面体构造等),通过参数采样批量生成。
2. 统一质量控制:三阶段过滤——图像质量Qᵢ + 代码质量Q꜀ + 图像-代码一致性Qᵢ꜀,均由SOTA MLLM+专用prompt评估。
3. Code-Grounded Caption Generation(代码锚定字幕生成)
核心思路:用可执行代码作为ground truth来修正自然语言字幕的幻觉。
- Step 1 Native Caption:MLLM直接生成图像描述草稿t_draft(语言流畅但事实易错)
- Step 2 Code Analysis:利用代码本身+执行日志ξ(c)提取经验证的视觉事实t_code。执行追踪器记录几何精度(坐标、尺寸、空间关系)、数量属性(计数、RGB值)、渲染语义(z-order、变换矩阵)等
- Step 3 Code-Grounded Refinement:LLM做"外科手术式"编辑——修正事实错误、替换模糊量词为精确数值、补充遗漏内容,同时保持原始语言风格和描述流畅性
4. STEM Image-to-Code Translation(STEM图像到代码翻译)
- 先让MLLM直接从图像生成"讲解式"代码草稿(含分步注释、参数解释)
- 再用ground-truth代码作为参考进行修正,保留讲解结构但确保代码正确性
- 最终得到兼具教学性和正确性的explanatory code
训练策略¶
- Stage 1 SFT (CodePercept-S1):在ICC-1M上联合训练image→caption和image→code两个任务,两种模态互补——字幕提供语义上下文,代码提供精确结构化细节
- Stage 2 RL (CodePercept-R1):仅对代码生成施加GRPO强化学习,设计两类奖励:
- Format Reward:正则验证代码格式(二值奖励)
- Content Reward:执行奖励(代码能否执行)+ 代码级奖励(GPT-4o评估语义等价性)+ 图像级奖励(GPT-4o评估视觉相似性)
实验¶
主要结果¶
感知能力评估(Captioner-Solver范式):CodePercept作为captioner生成描述,固定LLM solver解题。
| 模型 | MathVision | MathVista | MathVerse | DynaMath | WeMath | LogicVista | Avg |
|---|---|---|---|---|---|---|---|
| Qwen3-VL-4B-Instruct | 54.21 | 67.30 | 64.59 | 69.40 | 46.10 | 54.14 | 59.29 |
| CodePercept-4B-S1 | 57.63 | 69.60 | 65.59 | 71.38 | 47.81 | 60.40 | 62.07 (+2.8) |
| Qwen3-VL-8B-Instruct | 54.37 | 69.60 | 63.75 | 72.19 | 45.43 | 56.82 | 60.36 |
| CodePercept-8B-S1 | 59.31 | 70.20 | 66.52 | 73.20 | 49.14 | 61.52 | 63.32 (+3.0) |
| Qwen3-VL-32B-Instruct | 58.55 | 72.20 | 71.09 | 75.78 | 48.00 | 62.19 | 64.63 |
| CodePercept-32B-S1 | 62.27 | 72.90 | 71.70 | 77.41 | 54.19 | 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% |
| CodePercept-32B-S1 | 61.14 | 56.99 | 59.07 | 93.0% |
| CodePercept-32B-R1 | 68.97 | 62.53 | 65.75 | 95.9% |
消融实验¶
| 配置 | Avg |
|---|---|
| Qwen3-VL-8B baseline | 60.36 |
| + IR-CodeCap | 60.91 |
| + ID-CodeCap | 62.15 |
| + SG-CodeCap | 62.75 |
| NativeCap(无代码锚定) | 60.78 |
| CodeCap(代码锚定字幕) | 62.75 (+2.0) |
| CodeCap + ImCode(双任务) | 63.32 (+0.6) |
关键发现¶
- CodePercept-8B-S1在captioner-solver设置下超越了Qwen2.5-VL-72B等大得多的模型(+6.2%),接近Claude-Opus 4.1-Thinking和GPT5-Thinking的水平
- RL阶段对代码生成质量提升显著:4B模型Avg从40.78→46.52,执行成功率从80.7%→91.3%
- 三条数据pipeline逐步叠加均有增益,ID-CodeCap贡献最大(程序化生成多样STEM图像+验证代码提供更强训练信号)
- 代码锚定字幕比直接字幕生成高2.0个点,验证了代码作为ground truth消除幻觉的有效性
- Image-to-code和image-to-caption两任务互补:字幕提供语义上下文助力代码生成,代码生成通过精确可执行的特性反哺字幕准确性
亮点¶
- insight深刻:通过严谨的缩放实验首次定量证明"感知>推理"是STEM瓶颈,而非仅凭直觉
- 范式创新:将可执行代码同时用于(1)评测感知能力和(2)增强感知能力,形成闭环
- 执行追踪器设计精巧:通过运行代码获取执行日志来辅助LLM分析复杂代码逻辑,解决了深层递归/嵌套循环难以静态分析的问题
- 立体几何模板化方案务实:不回避LLM生成立体几何代码的根本缺陷,而是用参数化模板绕过
- 评测benchmark有价值:STEM2Code-Eval首次提供确定性、可验证的STEM视觉感知评测
局限性¶
- RL阶段的Content Reward依赖GPT-4o打分,成本高且引入主观性,难以规模化
- 代码生成局限于matplotlib库,无法覆盖所有STEM可视化类型(如3D交互图、动态仿真)
- 立体几何依赖人工设计模板,覆盖范围受限于模板数量
- STEM2Code-Eval仅1000样本,统计置信度有限
- 未探索代码锚定范式对非STEM领域(如医学图像、遥感等)的泛化性
相关工作¶
- STEM推理增强:Intern-S1、KeyeVL1.5、MiMo-VL-7B-RL等聚焦推理,本文指出应先解决感知
- 感知评测:[30]采用captioner-solver两阶段但只度量问题相关信息,本文提出代码重建作为更全面的评测
- 领域特定代码生成:UI/Chart/SVG代码生成关注下游应用,本文的STEM图像-代码对既用于评测也用于训练
- 知识蒸馏:传统直接蒸馏teacher模型描述,本文用代码作为中间媒介消除幻觉
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ — 感知瓶颈的缩放验证+代码锚定感知范式均为首创
- 实验充分度: ⭐⭐⭐⭐ — 6个benchmark + 3种模型规模 + 完整消融,但RL阶段消融不够细致
- 写作质量: ⭐⭐⭐⭐⭐ — 逻辑清晰,动机→方法→评测一脉相承
- 价值: ⭐⭐⭐⭐⭐ — 揭示STEM瓶颈在感知而非推理,对社区有重要指导意义