650. Drawing with LLMs | drawing-with-llms
首先,我想感谢组织者为运行此次竞赛所做的辛勤工作!我还要感谢 @richolson 分享了两段极其有用的代码:他的 OCR 诱饵技巧 和 图像转 SVG 转换。
我的流程首先使用 Stable Diffusion 3.5 Medium 生成图像,并使用 DRaFT 进行微调,以产生高质量、分数优化的输出。然后使用启发式方法将图像转换为粗略的 SVG,并使用 diffvg(一种可微光栅化器)进行进一步细化。

在尝试了几个模型后,我决定使用不带 T5 文本编码器的 Stable Diffusion 3.5 Medium。它的内存占用相对较小,这对于微调很重要。
我使用 DRaFT(更准确地说是 DRaFT-LV)为 SD3.5M 训练了一个 LoRA,它根据奖励模型训练扩散模型以生成高分图像。与 RL/DPO 不同,DRaFT 利用了扩散模型可微的事实,并将奖励直接反向传播到扩散模型中。你可以在这里看到训练代码。

训练数据:我使用 GPT-4o 生成了一组 1000 个训练提示及其对应的问题/答案。我采用了一种两阶段方法,首先生成 50 个图像类别,然后从这些类别中采样提示,已知评估集类别(风景、抽象和时尚)会产生更多提示。
奖励函数:我使用了两个从我之前的 DRaFT 工作中知道效果很好的通用奖励函数:
这些模型是在人类偏好数据上训练的。我还添加了三个特定于竞赛的奖励:
结果:微调将美学分数提高了约 10%,VQA 分数提高了约 5%。整体 LB 分数提高了约 0.03。训练的一个附带好处是我不需要做任何提示工程;我只是依靠微调来引导模型产生正确的图像风格。以下是一些微调前后生成的示例(使用相同的随机种子):

我使用了一个简单的启发式图像到 SVG 转换器,灵感来自 Rich Olson 的 notebook,并进行了一些调整以提高视觉质量和压缩效率。生成的 SVG 然后使用 diffvg(一种可微 SVG 光栅化器)进行优化。优化使用梯度下降法对路径的位置/颜色进行优化,以最小化渲染的 SVG 与原始扩散图像之间的 L1 距离。这效果非常好,意味着我可以只用一个相当基本的初始 SVG 转换器,因为细化步骤会修复出现的大多数问题。我还使用了 Rich Olson 的 OCR 诱饵技巧来减少 OCR 幻觉。
对于每个提示,我的 notebook 会持续生成 SVG,直到大约过去 60 秒,并根据是否落后或超前于计划进行一些自适应调整。这通常会产生 5-6 个候选者。返回给定是/否问题“此图像是否显示 {提示}?”具有最高 VQA 分数的 SVG。还有一个检查以确保返回的图像 OCR 分数为 1。