Textual Inversion:使用文本反转个性化文本到图像的生成
Textual Inversion:使用文本反转个性化文本到图像的生成
Textual Inversion是一种用于个性化文本到图像生成的技术,它允许用户通过少量示例图像将新的概念(如特定对象或风格)注入预训练模型中。这种方法仅需3-5张图像就能实现高质量的图像生成和风格迁移,具有训练速度快、效果明显的特点。
一、研究动机
文本到图像模型的使用受到用户通过文本描述所需目标的能力的限制。将新概念引入大型模型通常很困难:
- 如果针对每个新概念使用扩展数据集重新训练模型,成本会比较高,并且对于少数示例进行微调容易导致灾难性遗忘
- 如果采用冻结模型并训练转换模块的方法,则容易忘记先验知识,或者在与新学习的概念同时访问它时面临困难
因此,文章通过在预训练的文本到图像模型的文本嵌入空间中查找新词来克服这些挑战:仅使用用户提供的概念(例如对象或风格)的3-5个图像,学习通过冻结文本到图像模型的嵌入空间中的新“单词”来表示它。这些“词”可以组成自然语言句子,直观地指导个性化创作。
二、模型方法
模型中文本反演的架构设计:
- 首先需要定义一个在现有模型中没有的关键词S*来表示我们希望学习的新概念,也被称为pseudo word;
- 新的关键词会和其他的关键词一样,学习到对应的特征嵌入V*。这样就将新概念注入到了模型的词汇中;
- 然后,这个pseudo word就会像其他词一样被正常处理,并可用于为生成模型编写新的句子。
由于上述过程只是在SD的子模块text_encoder中的token embedding部分通过训练增加了pseudo word的嵌入向量,其他模块均保持不变,所以训练速度超快,效果也很明显。
1. 潜在扩散模型
LDM 由两个核心组件组成:
- 首先,自动编码器在大量图像上进行预训练:
- 编码器 E 学习将图像x ∈ Dx映射到潜在空间z = E(x),通过 KL 散度损失或矢量量化进行正则化。
- 解码器 D 学习将此类潜伏映射回图像,使得D(E(x)) ≈ x。
- 扩散模型,经过训练以在学习的潜在空间内生成代码。这种扩散模型可以以类标签、分割掩模甚至联合训练的文本嵌入模型的输出为条件。
模型采用 Rombach 等人公开的 14 亿参数文本到图像模型,它是在 LAION-400M 数据集上进行预训练的。
2. 文本嵌入
模型的文本嵌入端采用的是BERT文本编码器。输入字符串中的每个单词或者子单词都被转换为一个标记,它是某个预定义字典中的索引。然后,每个标记都链接到一个唯一的嵌入向量,可以通过基于索引的查找来检索该嵌入向量。这些嵌入向量通常作为文本编码器 cθ 的一部分进行学习。
Textual Inversion选择这个嵌入空间作为反演的目标。具体来说,指定一个占位符字符串 S* 来表示希望学习的新概念。对嵌入过程进行干预,并用新的、学习过的嵌入 v* 替换与标记化字符串相关的向量,本质上是将概念“注入”到词汇中。通过这样做,可以组成包含该概念的新句子,就像使用任何其他单词一样。
3. 文本反演
为了找到这些新的嵌入,模型使用一小组图像(通常是3-5张),它们描述了跨多种设置(例如不同的背景或姿势)的目标概念。我们通过直接优化找到 v*,通过最小化从小集合中采样的图像上等式的 LDM 损失。为了调节生成,我们随机采样源自 CLIP ImageNet 模板的中性上下文文本。其中包含“S* 的照片”、“S* 的演绎”等形式的提示。优化目标可以定义为:
三、Textual Inversion与dreambooth的对比
- 任务:Textual Inversion与dreambooth从任务描述来看基本上是一样的,都是仅使用3-5张用户提供的概念的图像将独特的对象注入新场景,将它们转换成不同的风格;
- 标识符:DreamBooth使用了稀有的单词重新和新主题关联,将唯一标识符与特定的主题绑定在一起。一旦主题被嵌入到模型的输出域中,那么唯一标识符就可以用来合成在不同场景中背景化的主题的全新逼真图像;而Textual Inversion是没有的单词,新加了单词,学习通过固定文本到图像模型的嵌入空间中的新“单词”来表示它;
- 风格迁移:Textual Inversion论文中实现了风格迁移,DreamBooth没做,但是理论上也可以做;
- 效果:Textual Inversion的效果不如DreamBooth;
- 训练过程:DreamBooth训练过程中所有的模型参数都会微调,Textual Inversion只训练新词特征字典,因此,DreamBooth为了抗遗忘的prior preservation loss自然在Textual Inversion也不需要了。
四、Textual Inversion效果
1. 图像变化
文本反演可用于使用单个pseudo word来创建对象的变体。它能够使用单个词的嵌入来捕捉对象更加精细的细节。
2. 文本引导合成
文本反演可以通过将学习到的pseudo word与新的条件文本相结合来创建新颖的场景。我们可以从上图中生成的图像看到,利用的pseudo word和新条件文本中的语义概念可以创建新的场景。由于SD中的UNet是使用预先训练好的大规模文本到图像模型建立的,因此一个通过学文本反演学习好的嵌入可以在不同扩散模型中重复使用。
3. 风格迁移
文本反演可以用于风格迁移,用户可以在其中绘制特定艺术家的独特风格,并将其应用到新的创作中。文本反演模型也能得到表示特定未知风格的pseudo word。我们可以为该模型提供一小组具有共同风格的图片,并用 "A painting in the style S* "来替换训练文本。
本文原文来自CSDN