第 10 名解决方案:Flux 1 Dev -> SVG 优化 -> 后处理
第 10 名解决方案:使用 LLM 绘图
团队: BERA
我们很激动能在“使用 LLM 绘图”竞赛中获得第 10 名。感谢组织者和指标团队不断改进和挑战,也感谢其他参与者分享的出色工作。
我们的解决方案专注于先生成高质量图像,然后在严格的 10KB 限制下将其转换并优化为紧凑、准确的 SVG。我们的 Pipeline 强调图像质量、转换 fidelity 以及通过竞赛评估器进行的智能选择,其中 SVG 转换的效率尤为突出。
Pipeline 组件
图像 (Flux-1-Dev + HyperSD + Nunchaku) + SVG (vtracer + svgo + 自定义几何简化 + OCR 添加) + 选择 (VQA + 美学 + OCR) + 可选边框添加
我们的 Pipeline 概述
-
图像生成 (Flux 1 Dev + HyperSD + Nunchaku)
- 我们使用了Flux 1 Dev,并通过HyperSD LoRA 增强,将推理步数从默认的50 步减少到8 步,并使用Nunchaku 以更快的版本加载 transformer 部分。我们使用 BitsAndBytes 将 Pipeline 的所有组件量化为 4bit,以便它们适应单个 T4 显卡。
- 最初我们无法运行并行生成,但切换到最新的 Nunchaku 开发版本解决了这个问题。
- 最终吞吐量:使用单个 T4 在约 20 秒内生成约 10 张图像。
-
图像 → SVG 转换 (vtracer + 路径简化)
- 每张图像都使用vtracer 转换,这给了我们干净、分层的 SVG。
- 我们通过修剪增加可忽略曲率的中间点来应用几何简化:
例如:如果点 B 位于线 A–C 的 2 像素范围内,我们丢弃 B。
- 随后使用SVGO 进行压缩。我们对vtracer 参数进行二分搜索,以找到使用低于 10000 字节的最佳配置。

- 这一步很耗时,并在4 个线程上多进程运行。
- 我们还添加了两个小的"M"水印(黑色和白色),以减轻 OCR 误报。
-
候选选择 (VQA + 美学评分 + OCR 鲁棒性)
- SVG 使用VQA 和美学评估器进行评分。
- 我们对所有候选者进行排名,然后向后搜索以找到第一个通过 OCR 检查的图像(这是一个主要痛点)。
- 在顶级候选者上,我们创建了两个变体:一个原始版本,另一个带有渐变银色边框。我们使用了得分最好的那个。

调试与工程痛点
我们花了数十个小时调试边缘情况,新的提交格式引入了几个非 trivial 的问题:
- SVGO:包裹在自定义 Python 接口中并加载到私有 GitHub repo 中,然后使用 PAT (个人访问令牌) 安装在依赖管理器中。
- Nunchaku:无法通过标准安装工作——必须通过 GitHub fork 并安装,然后仍然手动加载二进制文件。
- 多进程和执行图依赖:确保 cuda:0 上的图像生成、SVG 转换和 cuda:1 上的图像选择阶段不会相互阻塞本来会是一个巨大的速度提升,但我们无法让它在提交服务器上运行,尽管它在 notebooks 中、保存时甚至导入包时都能运行。
生成行为备注
- 风景:每次几乎完美。是我们 Pipeline 的最佳模式。
- 时尚:具有挑战性——由于细微特征,细节经常在 SVG 转换中丢失。
- 几何:几乎无望。 Across 12+ 模型,即使是基本形状如梯形也只有约 10% 的成功率。
备选提交方案 (未选用)
我们有另一个提交方案在私有排行榜上得分高得多,但在公共排行榜上略差,所以我们遗憾地没有选择它,但也许听到这些额外的改进对你仍然有趣:
- 它涉及提示词重写,将不同形式传递给不同的编码器。
- 最初失败是因为我们向两者发送了相同格式:
- CLIP 偏好逗号分隔的关键字。
- T5 偏好自然句子。
- 一旦分开,提示词重写在某些特定情况下提高了性能(例如动物和食物)。
最终感想
我们学到了很多关于图像生成 Pipeline 和 SVG 压缩的知识。这个挑战促使我们在 Pipeline 上发挥创意,构建可解释的评估器,并尊重严格的计算预算。
再次感谢主办方,并祝贺所有参与者。