Reliable Reasoning in SVG-LLMs via Multi-Task Multi-Reward Reinforcement Learning¶
会议: ECCV2026
论文: ECCV 原文
代码: https://github.com/hmwang2002/CTRL-S
领域: 视觉语言推理
关键词: SVG生成、思维链、分组结构、多任务学习、强化学习
一句话总结¶
CTRL-S 让 Qwen3-VL-8B 先规划绘图步骤、再输出与步骤对应的 SVG 分组,并联合训练文本生成、图像重建和代码修复,使 SArena-Icon 图像到 SVG 的 DINO 从 SFT 的 0.903 提升至 0.980,生成成功率从 90.12% 提升至 99.93%。
研究背景与动机¶
SVG 用几何图元、路径和属性描述图像,放大不失真,也便于修改局部对象。但让视觉语言模型直接续写 SVG 代码,会遇到两种不同的问题:一是输出语法可能正确,渲染出的形状和布局却不对;二是即使图像接近目标,代码也可能包含大量重复路径,或者被压缩成难以编辑的序列。只依赖逐 token 的监督学习,无法直接衡量最终画面的质量。
SVGen 和 SVGThinker 已经尝试在绘图前生成思维链(chain-of-thought,CoT),但“先解释,再写代码”并不自动保证解释中的对象能对应到可编辑的代码片段。SVG 本身已有 <g> 分组结构,恰好可以把一个语义对象的路径组织在一起。另一方面,RLRF 和 Reason-SVG 使用渲染奖励进行强化学习,但本文认为单任务优化没有充分利用文本描述、参考图像和错误草稿之间的互补监督。
因此,本文不仅增加一段推理文本,还重新构造了带语义分组的训练目标,并加入看图修复错误 SVG 的任务。核心 idea:让绘图规划逐步对应 SVG 分组,再用可渲染性、视觉相似度、文本一致性和代码效率共同奖励三类任务,使模型学习既画得对、又便于定位和修改的向量图代码。
方法详解¶
整体框架¶
CTRL-S 是基于 Qwen3-VL-8B-Instruct 的统一自回归模型。文本到 SVG 只输入绘图指令;图像到 SVG 输入指令和参考图像;代码修复再增加一份错误 SVG 草稿。三种任务均输出一段规划或修正分析,随后给出可执行的 SVG,而不是为每种任务训练一个独立模型。
训练先构建 SVG-Sophia,再经过 SVG token 对齐和思维链分组对齐两阶段监督微调(SFT),最后进入多任务多奖励 GRPO。推理时只需要这个训练后的模型;训练中用于评分的参考图像和参考代码长度不是文本到 SVG 部署时额外要求的输入。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
source["ColorSVG-100K"] --> data["SVG-Sophia构建"]
data --> align["两阶段结构对齐"]
sagoge["SAgoge + Qwen3-VL"] --> align
align --> rl["多任务多奖励GRPO"]
rl --> model["统一CTRL-S模型"]
inputs["指令 / 参考图 / 草稿"] --> model
model --> output["规划或修正分析<br/>分组SVG代码"]
关键设计¶
1. SVG-Sophia构建:把画面语义、绘图步骤和代码分组一起标注
作者从 ColorSVG-100K 获取原始 SVG,并统一到 \(128\times128\) 的 viewBox。Claude-Sonnet-4.5 先依据渲染图生成详细描述,再结合描述和原始代码重构 SVG:加入语义分组与说明,并写出对应的逐步绘图规划。重构不能改变原图,因此仅保留重构前后渲染 SSIM 不低于 0.95 的样本。论文还报告由 100 名人工标注员审核描述与步骤到分组的对应关系。
文本和图像生成共享底层 SVG 程序,仅输入模态不同,各有 50K SFT 和 5.5K RL 样本。代码修复的 31K SFT、3.4K RL 样本来自另一个流程:先训练 Qwen3-VL-8B 生成草稿,保留相对目标图像满足 \(0.30\leq\mathrm{SSIM}\leq0.95\) 的中等错误样本,再请 Claude 对比错误图和目标图,生成缺陷分析与修正推理。规则过滤会剔除声称完全一致或分析无关的样本,随后人工复核。
这个筛选区间避免训练集被完全正确的草稿或几乎无法修复的失败样本占据。SVG-Sophia 共含 131K SFT 和 14.4K RL 样本,论文将总量约记为 145K;修复测试集另有 934 个样本,底层 SVG 与训练集不重叠,错误草稿来自 SFT 模型及多个通用模型,减少只测试单一错误风格的偏差。
2. 两阶段结构对齐:先学会 SVG 表示,再让计划对应可编辑对象
第一阶段沿用 InternSVG 的 SVG 专用 token 设计,从 SAgoge 采样 1M 训练实例来稳定这些 token 的嵌入。第二阶段使用 SVG-Sophia 的 131K SFT 样本,使模型学会先输出 <think> 中的计划,再生成带层级 <g> 分组的代码。关键约束是每一步计划对应一个分组,而不是把所有绘图操作压成不可区分的路径串。
例如,“绘制气球主体”“添加条纹”“绘制下方吊篮”应该在代码中留下可定位的结构边界。这样后续发现吊篮缺失时,可以沿语义对象理解修改位置。这种可编辑性首先来自训练目标的组织方式,不能仅凭模型输出了推理文本就认定它已经具有可靠的内部推理或精确的局部编辑保证。
两阶段分工也解释了数据规模的口径:表 1 中 CTRL-S 标出的 131K/145K 是 SVG-Sophia 阶段的数据量,不能据此说完整训练只用了这些数据,因为前面还有 1M SAgoge 对齐实例。
3. 多任务多奖励GRPO:把能运行、画得像、符合描述和少冗余联合优化
对一个任务输入,模型采样多个“规划 + SVG”候选,先用 CairoSVG 尝试渲染。格式奖励要求恰好一个 <think>...</think> 推理块,后接一个可成功渲染的 SVG 代码块;不满足时,整个候选总奖励直接为零。这个门控防止模型用不可执行代码换取其他代理分数。
可执行候选再接受三类评分。DINO 奖励比较渲染图和目标图的 DINOv2 特征,关注视觉结构;Long-CLIP 奖励比较渲染图与输入描述的嵌入,覆盖文字要求。选择 Long-CLIP 是因为 SVG-Sophia 的指令常包含多句细节,标准 CLIP 的 77-token 上限可能截掉重要描述。两者分别回答“像不像目标”和“符不符合要求”,并不能互相替代。
代码效率奖励以生成 SVG 和参考 SVG 的长度为依据,针对 SFT 中的重复、过长输出。需要保留一个复现边界:本地全文式 (9) 的符号抽取损坏,无法可靠恢复完整长度奖励表达式,因此这里不补造公式;准确的截断、符号与归一化应回查原 PDF 或代码。其长度比较机制和抑制冗余的目标在正文中是明确的。
总奖励的门控与加权关系由原文式 (10) 给出:
GRPO 在同一输入的候选组内比较奖励高低,优势为 \(\hat A_i=(r_i-\mu_{\mathcal G})/(\sigma_{\mathcal G}+\epsilon)\),使用裁剪策略目标并加上相对 SFT 参考策略的 KL 惩罚,不额外训练价值网络。这里的“组”是同一输入的候选集合,与 SVG 的 <g> 代码分组不是同一概念。
三种任务共享模型并联合更新。代码修复提供的不是另一种输入包装,而是显式的“哪里画错、应如何改”的监督;表 3d 中加入修复后,图像到 SVG 的 DINO 从文本与图像联合训练的 0.966 提升至 0.980,与这种互补作用一致。
一个完整示例¶
以论文图 3 的热气球场景为例,文本输入描述条纹气球、周围云朵和下方吊篮。模型先安排主体、条纹和附属对象的绘制步骤,再输出对应的 SVG 分组;这些对象名只是对流程的说明,并非照抄原文推理轨迹。
训练时,同一输入采样 16 个候选。格式不合格的候选得零分;其余候选渲染后,分别比较目标画面、文本要求和代码长度,再以组内相对优势更新模型。切换到修复任务时,输入还带有错误草稿,分析围绕缺失或错位的对象展开,但最终仍输出修正后的 SVG,而不是只输出一段自然语言建议。
损失函数 / 训练策略¶
SFT 两阶段学习率依次为 \(10^{-4}\)、\(5\times10^{-5}\),在 48 张 H200 上使用全局 batch size 96。RL 使用 verl 实现的 GRPO,在 32 张 GPU 上训练,原文此处没有再次指明 GPU 型号。
RL 全局 batch size 为 128,学习率 \(10^{-5}\),每个 prompt 采样 16 个回复,训练 2 个 epoch,耗时约 12 小时。这个时长仅指 RL 阶段,不能当作包含数据标注与两阶段 SFT 的端到端成本。
实验关键数据¶
主实验¶
下表摘录原文表 1 的 SArena-Icon 结果。T2S 为文本到 SVG,I2S 为图像到 SVG;SR 是生成成功率,不等于语义或几何完全正确。DINO、SSIM 越高越好,FID、LPIPS 越低越好;Tokens 沿用原表口径,不视为跨模型 tokenizer 一致的计算成本。
| 模型 | T2S FID | T2S CLIP-T2I | T2S SR | T2S Tokens | I2S DINO | I2S SSIM | I2S LPIPS | I2S SR | I2S Tokens |
|---|---|---|---|---|---|---|---|---|---|
| InternSVG-8B | 8.715 | 23.916 | 97.24% | 1.0k | 0.949 | 0.811 | 0.127 | 94.45% | 1.3k |
| Gemini-3-Pro | 13.203 | 25.731 | 96.91% | 397 | 0.940 | 0.723 | 0.198 | 97.14% | 769 |
| CTRL-S (SFT) | 18.154 | 23.655 | 92.02% | 1.1k | 0.903 | 0.717 | 0.187 | 90.12% | 1.4k |
| CTRL-S (SFT+RL) | 11.584 | 25.944 | 99.85% | 346 | 0.980 | 0.835 | 0.098 | 99.93% | 512 |
CTRL-S 并非该表所有指标的最优:InternSVG-8B 的 T2S FID 更低,Gemini-3-Pro 的 CLIP-I2I 为 84.157,高于 CTRL-S 的 82.291。传统优化方法 LIVE 的 I2S SSIM 为 0.986、LPIPS 为 0.024,也优于 CTRL-S。因此,更准确的结论是在生成效率与多项质量指标上表现有竞争力,而不是全面超过所有向量化方案。
下表为原文表 2 的修复基准,测试集共 934 个样本。
| 模型 | DINO | SSIM | LPIPS | SR | Tokens |
|---|---|---|---|---|---|
| GPT-5.2 | 0.911 | 0.640 | 0.342 | 99.26% | 975 |
| CTRL-S (SFT) | 0.888 | 0.665 | 0.236 | 84.37% | 2.9k |
| CTRL-S (SFT+RL) | 0.951 | 0.765 | 0.180 | 99.79% | 866 |
按表内 SFT 与 RL 两行直接相减,DINO 提高 0.063、SSIM 提高 0.100、LPIPS 降低 0.056;原表的“增量”行却写为 0.067、0.126、0.104,与这两行不一致。本笔记使用原始结果行,不沿用该增量行。
消融实验¶
原文表 3b 比较奖励组成,以下均为 T2S。总奖励版本采用 \(2:1:1\) 权重;表中前两项是原文的配置标签,不能解释为只在固定权重下添加一个项的完全受控实验。
| 奖励配置 | FID | CLIP-T2I | CLIP-I2I | Tokens | 秒/SVG |
|---|---|---|---|---|---|
| 格式门控 + DINO | 12.443 | 24.573 | 80.897 | 606 | 6.151 |
| 格式门控 + DINO + Long-CLIP | 11.831 | 25.444 | 82.070 | 701 | 7.121 |
| 完整总奖励 | 11.584 | 25.944 | 82.291 | 346 | 4.439 |
关键发现¶
- 表 3b 的完整奖励相对不含效率项的配置,将 Tokens 从 701 降至 346,时间从 7.121 降至 4.439 秒/SVG,同时 CLIP-T2I 从 25.444 升至 25.944。短代码不必以牺牲这组实验的视觉质量为代价。
- 表 3a 中,RL 下有/无 CoT 的 I2S DINO 为 0.980/0.961,T2S Tokens 为 346/274。CoT 并非免费提速,而且该对照同时移除了 Claude 重构后的结构化代码,不能将全部差异归因于推理文本本身。
- 表 4 在未使用插画数据训练的情况下测试 SArena-Illustration:CTRL-S 的 T2S FID 为 21.832,I2S DINO 为 0.952;I2S Tokens 为 1.4k,对比 InternSVG-8B 的 7.7k。该泛化结论限于这个插画基准。
亮点与洞察¶
- 推理步骤与
<g>对应,把解释附着到真正可操作的代码对象上。相比仅增加一段 CoT,这为后续局部修改提供了更明确的结构入口。 - 可渲染性是奖励门控而非普通加分项。对生成可执行工件的任务,这能排除“不合法但代理指标很高”的候选,不过不等于已经解决所有奖励投机。
- 修复任务让模型在失败样本上学习视觉差异。其对生成任务的增益提示,构造质量可控的错误草稿可能比只增加正确示例更有针对性。
局限与展望¶
- 主文没有单列局限章节。这里的限制主要来自实验范围与复现信息:数据以 ColorSVG 图标为基础,虽有插画迁移,仍不足以说明复杂工程图、动画 SVG 或完整交互式编辑工作流的表现。
- CoT 消融同时改变推理监督和代码重构,缺少“相同分组代码、只改变是否输出 CoT”的对照;可读性与可编辑性的论断也缺少专门的人类编辑效率测量。
- DINO 和 Long-CLIP 是代理指标,较高分数不能保证每个几何细节或指令约束正确。后续可加入局部对象匹配、拓扑约束或真实编辑任务评价。
- 完整流程包含 1M token 对齐实例、人工审核和多 GPU RL,不能只用 145K 样本与 12 小时概括成本。式 (9) 的缓存损坏及表 2 增量行不一致也应在复现前回查原 PDF 与实现。
相关工作与启发¶
- 对比 InternSVG:本文沿用其 SVG 专用 token 并使用 SAgoge 做对齐,主要增量在结构化 CoT 数据与多任务多奖励后训练,不是完全重新设计 SVG 表示。
- 对比 SVGen / SVGThinker:共同使用显式规划;CTRL-S 强调步骤与 SVG 分组对应,并增加图像生成和修复任务的联合训练。
- 对比 RLRF / Reason-SVG:共同使用渲染反馈与 GRPO;CTRL-S 将视觉、长文本、格式和长度信号置于同一多任务流程。可迁移的思路是围绕最终可执行产物设计奖励,而不是照搬具体奖励权重。
- 对比 LIVE / DiffVG:传统优化方法依靠逐实例优化,部分重建指标仍更强;CTRL-S 面向统一条件生成与代码修复,优势定位应结合速度、输入形式和可编辑结构,而非只看单一视觉分数。
评分¶
- 新颖性: 4/5。SVG 分组对齐与三任务后训练组合有针对性,但 GRPO 和渲染奖励已有先例。
- 实验充分度: 4/5。包含生成、修复、插画泛化和多组消融,仍缺干净的 CoT 因果对照及编辑性用户实验。
- 写作质量: 3/5。整体流程清楚,但表 2 增量行存在数值不一致,部分“最优”表述需限定比较范围。
- 价值: 4/5。对可执行视觉代码的结构化训练有参考意义,训练成本和复杂场景边界仍需重视。