返回列表

10th Place Solution: Flux 1 Dev -> SVG optimization -> Postprocessing

650. Drawing with LLMs | drawing-with-llms

开始: 2025-02-25 结束: 2025-05-27 AIGC与多模态 AI大模型赛
第 10 名解决方案:Flux 1 Dev -> SVG 优化 -> 后处理

作者: Raki (BERA 团队)

合作者: Benedikt Droste

发布日期: 2025 年 5 月 29 日

竞赛排名: 第 10 名

第 10 名解决方案:使用 LLM 绘图

团队: BERA

我们很激动能在“使用 LLM 绘图”竞赛中获得第 10 名。感谢组织者和指标团队不断改进和挑战,也感谢其他参与者分享的出色工作。

我们的解决方案专注于先生成高质量图像,然后在严格的 10KB 限制下将其转换并优化为紧凑、准确的 SVG。我们的 Pipeline 强调图像质量、转换 fidelity 以及通过竞赛评估器进行的智能选择,其中 SVG 转换的效率尤为突出。

Pipeline 组件

图像 (Flux-1-Dev + HyperSD + Nunchaku) + SVG (vtracer + svgo + 自定义几何简化 + OCR 添加) + 选择 (VQA + 美学 + OCR) + 可选边框添加

我们的 Pipeline 概述

  1. 图像生成 (Flux 1 Dev + HyperSD + Nunchaku)

    • 我们使用了Flux 1 Dev,并通过HyperSD LoRA 增强,将推理步数从默认的50 步减少到8 步,并使用Nunchaku 以更快的版本加载 transformer 部分。我们使用 BitsAndBytes 将 Pipeline 的所有组件量化为 4bit,以便它们适应单个 T4 显卡。
    • 最初我们无法运行并行生成,但切换到最新的 Nunchaku 开发版本解决了这个问题。
    • 最终吞吐量:使用单个 T4 在约 20 秒内生成约 10 张图像。
  2. 图像 → SVG 转换 (vtracer + 路径简化)

    • 每张图像都使用vtracer 转换,这给了我们干净、分层的 SVG。
    • 我们通过修剪增加可忽略曲率的中间点来应用几何简化

    例如:如果点 B 位于线 A–C 的 2 像素范围内,我们丢弃 B。

    • 随后使用SVGO 进行压缩。我们对vtracer 参数进行二分搜索,以找到使用低于 10000 字节的最佳配置。
    • SVG 对比
    • 这一步很耗时,并在4 个线程上多进程运行
    • 我们还添加了两个小的"M"水印(黑色和白色),以减轻 OCR 误报。
  3. 候选选择 (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 上发挥创意,构建可解释的评估器,并尊重严格的计算预算。

再次感谢主办方,并祝贺所有参与者。

同比赛其他方案