- 论文名:SUR-adapter: Enhancing Text-to-Image Pre-trained Diffusion Models with Large Language Models
- 论文地址:https://arxiv.org/abs/2305.05189
- 开源地址:https://github.com/Qrange-group/SUR-adapter
问题背景
以Stable diffusion为代表的text-to-image扩散模型越来越被研究者们所关注,大量关于生成的研究方向(如图像编辑,视频生成)等都用到了这些预训练扩散模型。然而,这些文生图模型的图文匹配程度严重依赖于一些预训练文本编辑器,如CLIP等。
注意到CLIP由于是使用大量图片文本对进行训练的模型,没有专门针对语义进行优化。这使得Stable diffusion模型在实际使用中会出现大量图文不匹配的问题。比如,对扩散模型输入“seven cute cats”这种prompt的时候,很容易让模型生成只有少数几只猫,甚至有些时候生成的并不是猫。针对这个现象,本文对预训练扩散模型的语义能力进行了检验,如下表所示
使用计数,颜色,以及动作三种类别的文本prompt进行人工检验和统计,可以发现实际上text-to-image的扩散模型的图文匹配度不尽人意,有一些prompt的正确率甚至低至0%。因此,需要想办法增强预训练扩散模型中本文编码器的语义能力以获得符合文本生成条件的图像。
直觉动机
接着,首先通过一个简单的实验来给出本文的动机。一般来说,如果是人类使用stable diffusion这样的模型时,写出来的prompt是接近自然语言(simple prompt),而不是一些复杂的甚至是特定格式的“咒语”(complex prompt)。本文发现相比simple prompt, complex prompt可以获得更好的语义一致性。不过也可以利用大语言模型对simple prompt进行解读,并将解读后的prompt输入到stable diffusion中也可以获得很不错的结果。因此一种直觉的想法是:如何将大语言模型的语义能力迁移到预训练文本编码器如CLIP中,以减缓图文不匹配的问题?
不过需要注意的是,尽管上述直观实验中大语言模型发挥了作用。但是我们不能直接使用大语言模型(当然土豪请随意,比如打算重新用大语言模型构造数据集,重训CLIP;或者大显存用户打算在在推理中使用大语言模型),除了计算消耗和成本的问题。如Learning to Prompt for Vision-Language Models文章中所提到的,文本prompt的稳定性其实不是很好,少一个"a"的效果可能天差地别。因此最好使用隐式蒸馏的方式来完成文本编码器的语义增强。
方法细节
-
数据准备。首先从常用的扩散模型在线网站lexica.art,civitai,stablediffusionweb中获取图片文本对,并清洗筛选获得超过57000张高质量 (complex prompt, simple prompt, image) 三元组数据,并构成SURD数据集。
-
大语言模型语义蒸馏。本文引入一个transformer结构的Adapter在特定隐含层中蒸馏大语言模型的语义特征,并将Adapter引导的大语言模型信息和原来文本编码器输出的语义特征做线性组合获得最终的语义特征。其中大语言模型选用的是不同大小的LLaMA模型。
-
图像质量恢复。由于本文引入了可学习模块,一定程度破坏了预训练模型的原图生成质量,因此我们需要将图像生成的质量拉回原预训练模型的生成质量水平。我们采用的是SURD中的三元组在训练中引入相应的质量损失函数以恢复图像生成质量。
实验结果
实验结果表明所提出的方法可以在保持图像生成质量的同时,缓解固有的预训练text-to-image固有的图文不匹配问题。当然这种方法并不是非常完美,仍然有很多值得改进的空间,例如实际上也有不少的情况的图文匹配度呈现下降的问题,另外该方法的稳定性也值得进一步地加强。在未来仍然有很多的改进值得考虑,毕竟如果text-to-image的预训练模型生成的图像质量再好,多样性再好,但是图文不匹配也是白搭。严重影响下游的任务的发展。