Scaling Text-Rich Image Understanding via Code-Guided Synthetic Multimodal Data Generation¶
会议: ACL 2025
arXiv: 2502.14846
代码: https://yueyang1996.github.io/cosyn
领域: 多模态VLM
关键词: 合成数据, 代码引导, 文本丰富图像, VLM指令微调, 图表文档理解
一句话总结¶
提出CoSyn框架,利用纯文本LLM的代码生成能力自动创建40万张文本丰富图像(图表、文档、图表等)+270万条指令微调数据,训练的7B VLM在7个基准上达到SOTA,超越GPT-4V和Gemini 1.5 Flash。
研究背景与动机¶
- 领域现状:VLM在自然图像理解上表现优秀,但在文本丰富图像(图表、文档、标签、截图等)上仍存在显著短板,这类图像需要同时具备文本理解和空间推理能力。
- 现有痛点:高质量的文本丰富视觉-语言数据严重稀缺——现有数据集(ChartQA、FigureQA等)规模小、类型有限、问题模板化;人工标注成本高;开源VLM在新任务上泛化能力差(训练了百万张图的模型在营养标签问答上表现不佳)。
- 核心矛盾:文本丰富图像通常由代码渲染而成(Matplotlib画图表、HTML渲染文档、LaTeX排版公式)——代码本身就是图像的完美文本表示,但现有合成数据方法没有充分利用这一特性。
- 本文要解决什么? (a) 如何规模化生成多样、高质量的文本丰富图像+指令数据?(b) 合成数据能否让VLM泛化到从未见过的新任务?(c) 如何减轻现有基准中的标注偏差?
- 切入角度:代码是文本丰富图像与文本之间的天然桥梁——让LLM生成代码渲染图像,再用同一代码作为上下文生成QA数据,无需视觉模型参与数据创建。
- 核心idea一句话:用代码作为中间表示,将图像合成和指令数据生成统一为文本LLM的代码理解任务:\(P(I,T|q) = P_{LM}(C|q) \cdot P(I|C) \cdot P_{LM}(T|C)\)。
方法详解¶
整体框架¶
输入:自然语言查询(如"nutrition fact labels"),经CoSyn的20条流水线之一处理,输出:合成图像+对应的QA指令微调数据。流程分4步:(1) Topic生成——基于persona采样确定主题 → (2) Data生成——填充具体内容 → (3) Code生成——生成可执行代码渲染图像 → (4) Instruction生成——以代码为上下文让LLM生成QA对(含CoT推理)。
关键设计¶
- 11种渲染工具 × 20条流水线:
- 做什么:覆盖9大类文本丰富图像的生成
- 核心思路:Matplotlib/Plotly/Vega-Lite生成图表, LaTeX/HTML处理文档和表格, Mermaid/Graphviz生成图表, SVG/Asymptote做向量图, Lilypond生成乐谱, RDKit画化学结构。同一工具可用于多条流水线(如HTML用于文档、表格和图表)
-
设计动机:覆盖真实世界中文本丰富图像的全类型谱——不局限于图表,扩展到文档、公式、电路图、化学结构等
-
Persona驱动的多样性:
- 做什么:在Topic生成阶段引入persona来提升内容多样性
- 核心思路:从20万个persona库中采样(如"a sci-fi novelist who likes alien worlds"),作为LLM生成主题时的条件。不同persona引导生成不同风格和内容的主题
-
设计动机:单靠采样温度等参数,LLM生成的合成数据容易重复单调。Persona可以从varied perspectives激发多样化输出
-
代码作为桥梁的指令生成:
- 做什么:用代码(而非图像)作为上下文让纯文本LLM生成高质量QA数据
- 核心思路:\(P_{LM}(T|C)\) —— 代码精确描述了图像中所有信息(数据值、标签、布局),LLM可以基于代码生成准确的question-answer-explanation三元组。无需VLM参与,避免了视觉幻觉
- 设计动机:代码是图像内容的lossless文本表示,比图像caption或描述更精确。用代码做上下文可以生成需要数值推理的问题(如"计算平均值")
损失函数 / 训练策略¶
模型架构:CLIP ViT-L/14 + MLP连接层 + Mistral-7B,遵循Molmo架构。两阶段训练:(1) Dense caption预训练 (2) 组合三类数据的监督微调(评估数据集138K + 辅助数据集1M + CoSyn合成数据400K)。训练60K步,TPU v3-128,batch size 32。
实验关键数据¶
主实验¶
7个文本丰富基准的平均分对比:
| 模型 | ChartQA | DocVQA | InfoVQA | TableVQA | AI2D | TextVQA | ScreenQA | 均分 |
|---|---|---|---|---|---|---|---|---|
| GPT-4V | 78.1 | 87.2 | 75.1 | 60.5 | 89.4 | 78.0 | 41.6 | 72.8 |
| Gemini 1.5 Flash | 85.4 | 89.9 | 75.3 | 72.6 | 91.7 | 78.7 | 40.1 | 76.2 |
| Llama 3.2 11B | 83.4 | 88.4 | 63.6 | 51.1 | 91.9 | 73.1 | 87.7 | 77.0 |
| Ours (7B) | 86.3 | 90.0 | 70.5 | 65.8 | 91.9 | 82.0 | 80.1 | 80.9 |
| Ours (7B zero-shot) | 80.8 | 82.9 | 59.8 | 64.9 | 83.9 | 72.7 | 78.1 | 74.7 |
消融实验¶
训练数据组合的消融(均分):
| 配置 | 均分 | 说明 |
|---|---|---|
| Aux only (1M images) | 58.7 | 辅助数据不能泛化到评估任务 |
| Syn only (400K) | ~72 | 仅合成数据即接近GPT-4V水平 |
| Aux + Syn | 74.7 | 超越GPT-4V (72.8) |
| Eval + Aux | 77.3 | +Aux仅提升1.4% |
| Eval + Syn | 80.3 | +Syn提升3.6%(效果远大于Aux) |
| Eval + Aux + Syn (Full) | 80.9 | 最佳 |
关键发现¶
- 400K合成数据 > 1M辅助数据:合成数据的边际贡献(3.6pp)远大于辅助真实数据(1.4pp),证明质量和相关性比数量更重要
- 7K领域数据即可超越百万级训练:在NutritionQA新任务上,用CoSyn生成仅7K营养标签样本微调即超越大多数训练了百万张图的开源VLM
- 缓解标注偏差:ChartQA中机器生成vs人类标注问题的性能差距从无合成数据的21.8%降至14.2%,说明合成数据帮助模型摆脱对模板化问题的过拟合
- CoT推理有选择性收益:在需要多步推理的ChartQA(+2.5pp)和TableVQA(+2.2pp)上有效,但在DocVQA上因答案格式偏差反而降分
- 合成数据更多样:CoSyn-400K的图像多样性和文本多样性均显著高于FigureQA、ChartQA等现有数据集
亮点与洞察¶
- 代码作为桥梁的洞察极其优雅:文本丰富图像天然由代码生成,反过来利用代码做数据合成,既保证了图像-文本对齐的精确性,又让纯文本LLM就能完成全部工作。这个思路可以迁移到任何"由代码渲染"的视觉内容(如幻灯片、网页、CAD图纸)
- 零样本泛化到新域的能力:用语言查询即可定向生成新领域数据,解决了VLM在新任务上cold-start的实际问题。NutritionQA实验尤其令人印象深刻
- Persona多样性策略:简单但有效,值得在所有合成数据生成场景中借鉴
局限性 / 可改进方向¶
- 依赖高质量代码LLM:数据生成用了Claude-3.5-Sonnet和GPT-4o-mini,开源替代的效果未知,成本也不低
- 渲染失败率未报告:LLM生成的代码不一定能成功执行渲染,失败率和处理策略缺少讨论
- 仅关注文本丰富图像:对自然图像、场景理解等其他VLM任务的影响未探讨
- 评估指标局限:作者自己发现严格字符串匹配惩罚了更详细的正确回答(如"Tuesday to Thursday"被判错),但未提出替代评估方案
相关工作与启发¶
- vs Molmo/PixMo-docs: Molmo也有合成文本丰富数据集但规模和多样性不及CoSyn-400K;本文用了Molmo的架构和预训练但在合成数据上做了大幅扩展
- vs ChartPali: ChartPali在ChartQA的机器生成vs人类问题差距为32.8%,本文降至14.2%,说明更多样的合成数据有效减少偏差
- vs LLaVA-OneVision: OneVision训练数据更大但均分(72.4)低于本文(80.9),说明定向合成数据比堆量更有效
评分¶
- 新颖性: ⭐⭐⭐⭐ 代码做桥梁的思路简洁优美,persona驱动多样性也是亮点
- 实验充分度: ⭐⭐⭐⭐⭐ 7个基准+消融+新任务泛化+偏差分析+多样性量化+CoT分析,实验极其充分
- 写作质量: ⭐⭐⭐⭐⭐ 结构清晰,insights丰富,NutritionQA案例很有说服力
- 价值: ⭐⭐⭐⭐⭐ 既有通用框架又有实际可用的400K数据集,对文本丰富图像理解领域有重要推动