本文是发表于ACM Transactions on Graphics 期刊上的一篇论文
论文地址:[2302.12228] 基于编码器的域优化,用于文本到图像模型的快速个性化 (arxiv.org)
官方代码:mkshing/e4t-diffusion:实现基于编码器的域调优,以实现文本到图像模型的快速个性化 (github.com)
近年来,个性化大规模文本到图像模型的能力已经彻底改变了内容创建的方式。通过将对新概念的理解注入到预训练的模型中,用户可以在新的提示中利用它,从而将主题插入到新的场景中,或者用一个单词调用独特的艺术风格。
然而,目前的个性化方法难以扩展,每个新概念都需要在高端GPU上进行数十分钟甚至数小时的微调会话。此外,生成的检查点通常有几GB大小,这会导致存储和服务成本的增加。为了防止模型过度拟合虚假的图像细节,这些模型通常需要收集具有不同背景和姿势的多个图像。
为了解决这些挑战,提出了一种领域微调的方法。该方法通过教导文本到图像模型如何从给定的域中个性化新概念来实现。该方法基于一个前提,即高度正则化的模型非常适合学习某些平均行为。因此,在该方法中,通过同时个性化网络上的一个大的数据集(从单一域中选取)来限制模型的自由度。网络不是学习单个概念的细节,而是学习一组更一般化的权重,这些权重分别接近每个概念。
为了实现这一方法,设计了两个组件:一个限制性的权重集和一个有效的方法来反转大量的概念。对于权重,研究了用先验方法调整的模型,并建议在去噪网络的注意力机制中调节投影矩阵。通过网络学习这些变化可以限制学习到的偏移的数量,并提供平滑先验。为了有效地求逆,使用了一个编码器来将给定的概念图像快速映射到近似表示它的单词嵌入。通过迭代细化的方式,编码器可以在合成过程中纠正错误。
最后,在推理时学习一个新的特定概念,微调两个组件和扩散模型,并使用单个图像和最少5次训练迭代来调整模型。相比之前的个性化方法,该方法具有更快的训练时间,并且可以在推理时使用一次性个性化,而不需要为每个新身份创建新模型。
早期的文本到图像模型主要采用基于生成对抗网络(GAN)的架构,在大量成对图像捕获数据集上进行训练。然而,由于GAN容易出现模式崩溃且难以大规模训练,自回归模型成为了一种替代方案,将图像视为离散潜在空间中的单词序列,并通过调节文本前缀的生成或测试时优化来使用文本指导。最近,扩散模型在图像生成方面取得了显著进展,实现了前所未有的多样性和保真度。
反演图像反转是指找到可以输入生成器以重建给定目标图像的潜在代码的任务,可以通过优化单个图像上的潜在代码或训练神经网络直接预测这样的代码来实现。
个性化方法则通过特定于目标的数据来使模型适应独特的个人或组织,已被应用于各种领域。在文本到图像扩散模型的背景下,个性化方法旨在通过利用特定于目标的数据来合成特定目标概念的新颖图像。最近的工作提出了基于编码器的方法,将训练时间减少了几个数量级,消除了存储模型的需要,并允许仅使用单个图像进行模型个性化。在基于扩散的图像编辑中也存在相关任务,其中利用预先训练的扩散模型来操纵输入图像。个性化方法试图捕捉一个概念,以便在新场景中使用,并与图像编辑方法的目标略有不同,后者旨在保持原始图像的内容和结构。
这部分我主要还是基于框架图来讲解,
上图是论文所提出方法在实现个性化图像生成微调的整个框架图,很明显主要被分为三个部分:词嵌入编码器,预训练的文本生成图像扩散模型(Stable Diffusion)、权重偏移部分。
整体的流程大概如下:
输入一张图像并对其进行特征提取,同时将输入的图像送入到预训练扩散模型中,从U-NET的编码器部分提取噪声图像的特征,将这两个特征向量连接形成词嵌入,并与粗略描述合并,从而更新个性化标识符S*。(这里实际上都是对文本转变后的向量进行编辑,并不是文本。)然后将整个文本向量送入文本编码器中,然后送入U-NET网络中。
因为在微调的过程中,整个交叉注意力层的参数更新是最多的,所以为了更好的实现个性化,论文对交叉注意力层的权重更新使用了权重偏移,这个技术主要是通过分解初始参数向量并生成一个中间矩阵,然后通过线性变换和偏移量的组合,最终得到适应任务要求的注意力投影矩阵。权重偏移的使用可以帮助模型更快速地适应新概念,同时避免过度拟合训练数据。通过对模型的子集参数进行调整,权重偏移可以在不改变整个生成器的领域的情况下,允许模型对新概念进行个性化调整。这种技术有助于平衡模型的灵活性和稳定性,从而提高模型的性能并加速个性化过程。
注意,在整个微调过程中,由于去噪的图像是不断迭代更新的,所以对去噪图像的特征提取也在不断变化,所以在每一步迭代中都需要去更新个性化标识符S*所对应的向量,当然,注意力权重也是要在每步迭代中不断更新的。
实验部分,论文主要与当前两个流行的个性化方法Dream Booth、Text Inversion进行了比较。
上图是在个性化人脸的图像生成上所做的对比,从左到右分别展示了:用于1次个性化的图像,使用研究人员的名字提示稳定扩散的结果,分别使用1张和5张图像的Textual Inversion和DreamBooth的个性化结果,同时训练DreamBooth模型和嵌入5张图像的结果,最后是我们自己的结果,以及驾驶提示。我们的方法实现了可比或更好的质量,只有一个单一的图像和一小部分的时间。由于许可,输入图像被GAN重建替换。请参阅原始图像的项目页面。
上图在基于文本提示相似度、身份相似度所作的比较。
左边(a)是将所提出的方法与DreamBooth、TextInversion在单个、多个个性化概念上所做的比较。
右边则是一个消融实验,评判各种操作所产生的影响。
在图4(b)中,几个比较方法分别是指论文中进行的实验中使用的不同的方法或变体。这些方法包括:
1. Tuning only on stable diffusion : 仅对扩散模型进行调整,而不使用任何额外的组件或方法。
2. w/ HyperNetwork: 使用了一个称为HyperNetwork的方法,它替代了学习常量偏移的预测。
3. w/o Finetuning: 在个性化过程中不进行微调。
4. w/o Tuning stable diffusion: 不对模型进行调整,只使用预训练模型。
5. w/o Iterative Refinement: 不使用迭代细化模块。
6. w/o Embedding Regularization: 在训练中不使用嵌入正则化损失。
7. w/o Weight-offsets: 不使用权重偏移。
8. w/o Weight-offset Regularization: 在训练中不对权重偏移进行正则化。
这里主要是与Text Inversion、DreamBooth在训练的消耗上进行比较,分别是迭代次数,个性化时间、预训练时间 。
这篇论文的核心思想是基于一个预训练的域编码器来实现个性化图像生成,它可以针对某一大类的对象实现快速个性化图像生成,相比于Dream Booth等方法而言 ,它在微调所花费的时间要少的多,但它在预训练上还是需要花费相对比较多的时间,而且这中快速个性化也只能针对同一类别的对象实现,还是比较有局限性的。