Abstract
本文提出了一种方法:仅使用用户给出的3-5张图像作为提供的参考,如物品或风格,通过学习冻结文本到图像模型的嵌入空间中的新“单词”(words)来表示它。这些"words"可以组成自然语言语句,直观地指导个性化创作。
有证据表明,单个word的嵌入足以捕获独特且多样化的概念。
图1:(左)在描述特定概念的预训练文本到图像模型的嵌入空间中发现了新的伪词(pseudo-words)。(右)这些pseudo-words可以组成新的句子,将目标置于新的场景,改变他们的风格或构成,或者直接融入到新的产品中。
1 Introduction
将一个新的概念引入大规模扩散模型非常困难,使用扩展后的数据集为这个新的概念重新训练一个模型的代价非常昂贵,对少数例子进行微调通常会导致灾难性的遗忘。更多的方法倾向于冻结模型并训练转换模块,以在面对新概念时调整其输出。然而这些方法仍然容易忘记先前的知识,或者在与新学到的概念同时访问时发生问题。
灾难性的遗忘:当微调模型时,可能会导致原来学习到的知识被覆盖。
本文提出了一种克服这个困难的方法:通过在预训练的text-to-image模型的文本嵌入空间中找到这些新的词(word)。
![[Pasted image 20231230165727 1.png]]
图2:text-embedding和inversion的过程的流程图。一个包含了占位符(placeholder)单词的字符串被首次转换成tokens。这些tokens被转换成连续的向量表示(即embeddings,
v
v
v)。最后,嵌入后的向量被转换成一个用来引导生成模型的条件代码
c
θ
(
y
)
c_\theta(y)
cθ(y)。我们使用重建的目标来优化与pseudo-word
S
∗
S_*
S∗相关的嵌入向量
v
∗
v_*
v∗。
考虑文本编码过程的第一阶段,输入的字符串首先被转换为一组标记,然后每个token被它们自己的嵌入向量替代。然后这些嵌入向量被送到下采样模型中。我们的目标是找到新的嵌入向量来表示这些新的特定的概念。
我们用一个新的pseudo-word来表示一个新的嵌入向量,用
S
∗
S_*
S∗来表示。然后这个pseudo-word会被当作其他正常的词一样对待,会通过这个pseudo-word来组成新的文本查询送到生成模型中,如:“a photograph of
S
∗
S_*
S∗ on the beach”。
很重要的一点:这个过程不会影响生成模型,这样就能保留强大的文本理解能力和生成能力。
为了找到pseudo-word,我们将任务构建作为inversion的内容之一。
给定一个预训练好的text-to-image模型和代表新概念的3~5张小图像集,目标是找到一个单词嵌入word embedding,能够让像"A photo of
S
∗
S_*
S∗“这样的句子能够根据我们的小图像集中的图片重新构建目标。
这个嵌入方式是通过优化过程找到的,我们称为"Textual Inversion”。
图像生成领域中,inversion指尝试从生成模型学习到的知识或潜在空间中还原出真实图像的过程。这个过程也被称作“图像反演”或“潜在空间反演”。
我们进一步研究了一系列基于生成对抗网络(GAN)inversion中常用的工具的扩展。
分析表明,虽然仍然存在一些核心的原则,但以简单的方式应用现有的技术要么无益,要么有害。
我们通过广泛的概念和prompt的尝试,证明了方法的有效性,展示了这个方法可以将独特的新对象注入到全新的场景中,将它们转换为不同的风格,转移姿势,减少偏差,甚至想像新的场景。
总结本文的贡献:
- 引入了个性化文本到图像生成的任务,其中在自然语言的指令指导下合成用户提供的概念的新颖场景
- 在生成模型的背景下提出了"Textual Inversion"的概念,目的是在一个text encoder的嵌入空间内找到新的pseudo-words,可以捕获高级语义和精细的视觉细节。
- 根据GAN启发的inversion技术分析了嵌入空间,证明它还表现出失真和可编辑性之间的权衡。我们表明我们的方法位于权衡曲线上一个有吸引力的点上。
- 根据用户提供的新概念标题生成的图像来评估我们的方法,证明我们的嵌入方式提供了更高的视觉保真度,并且还支持更强大的编辑功能。
3 Method
本文的目标是实现语言引导生成由用户指定的全新概念。为此,我们的目的是将这些概念编码到预训练好的text-to-image模型的内部表达。
实际上,这应该以一种允许我们利用这种模型所代表的丰富语义和视觉先验的方式来完成,并用它来指导概念的直观视觉转换。
在text-to-image模型通常采用的text encoders的词嵌入阶段中搜索这种表示的候选者是很自然的,这里离散输入的文本被转换为适合直接优化的连续向量表示。
先前的工作表明,该嵌入空间的表达能力足以捕获基本图像语义。
但是,这些方法利用了对比或语言来完成目标,这两者都不需要对图像进行深入的视觉理解。正如我们在Section 4演示的,这些方法无法准确捕捉概念的外观,并且尝试使用它们进行合成会导致严重的视觉损坏。
我们的目标是找到可以指导生成的pseudo-words,这是一项视觉任务,因此建议通过视觉重建目标来找到它们。
接下来,我们概述了将我们的方法应用于特定类别的生成模型的核心细节——潜在扩散模型。
在Section 5,我们受到GAN inversion 文献的启发,分析了该方法的一系列扩展。但是,这些额外的复杂性未能改进此处介绍的初始表示。
3.1 Latent Diffusion Models 潜在扩散模型
我们在潜在扩散模型(Latent Diffusion Models, LDMs)上实现了我们的方法,这个是最近引入的一类去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPMs),在自动编码器的潜在空间中运行。
LDMs由两个核心部分组成:
一个自动编码器(autoencoder)在庞大的图像数据集上预训练好。一个编码器
ε
\varepsilon
ε学习去将图片
x
∈
D
x
x\in \mathcal{D}_x
x∈Dx映射成潜在空间编码
z
=
ε
(
x
)
z=\varepsilon(x)
z=ε(x),通过KL散度损失或矢量量化进行正则化。解码器
D
D
D学习将这样的潜变量映射回图像,如
D
(
ε
(
x
)
)
≈
x
D(\varepsilon(x))\approx x
D(ε(x))≈x。
一个扩散模型(diffusion model),被训练在学习的潜在空间内生成编码。这个扩散模型可以类别标签、分割掩码、甚至联合训练的文本嵌入模型的输出作为条件。令
c
θ
(
y
)
c_\theta(y)
cθ(y)为将输入
y
y
y映射成一个条件向量的模型,LDM损失可以写成:
L
L
D
M
:
=
E
z
∼
ε
(
x
)
,
y
,
ϵ
∼
N
(
0
,
1
)
,
t
[
∣
∣
ϵ
−
ϵ
θ
(
z
t
,
t
,
c
θ
(
y
)
)
∣
∣
2
2
]
(1)
L_{LDM}:=\mathbb{E}_{z\sim \varepsilon(x),y,\epsilon\sim\mathcal{N}(0,1),t}[||\epsilon-\epsilon_\theta(z_t,t,c_\theta(y))||_2^2]\tag{1}
LLDM:=Ez∼ε(x),y,ϵ∼N(0,1),t[∣∣ϵ−ϵθ(zt,t,cθ(y))∣∣22](1)
其中
t
t
t是步数,
z
t
z_t
zt是时间
t
t
t下的潜在噪声,
ϵ
\epsilon
ϵ是未缩放的噪声样本,
ϵ
θ
\epsilon_\theta
ϵθ是去噪网络。
直观来看,这里的目标是正确去除添加到噪声潜在表示中的噪声。训练时,
c
θ
c_\theta
cθ和
ϵ
θ
\epsilon_\theta
ϵθ联合优化,一起令LDM的损失最小化。推理的过程中,对随机噪声张量进行采样并迭代去噪以生成新的潜在图像
z
0
z_0
z0。最后,这个潜在编码通过预训练好的解码器
x
′
=
D
(
z
0
)
x'=D(z_0)
x′=D(z0)转换成图像的形式。
我们采用公开的14B参数text-to-image模型,在LAION-400M数据集上进行预训练。
c
θ
c_\theta
cθ是通过BERT text encoder实现的,
y
y
y是一个text prompt。
3.2 Text embeddings
典型的文本编码器模型,如BERT,从文本处理步骤开始(如图2的左侧)。
首先,输入字符串中的每个单词或子单词都会转换为一个token,相当于预定义字典中的一个编号。每个token链接到一个独一无二的嵌入向量,可以通过基于索引的查找来检索这个嵌入向量。这些嵌入向量通常作为文本编辑器
c
θ
c_\theta
cθ的一部分进行学习。
本文的工作中,我们选择嵌入空间作为inversion的目标。
具体地,我们指定一个占位字符串
S
∗
S_*
S∗,来代表希望它学习的新概念。我们干预嵌入过程,并用新的、学习过的嵌入
v
∗
v_*
v∗替换和标记过的字符串有关的向量。本质上就是将新的概念注入到词汇库中。
这样,我们可以组成包含新概念的新句子,就像我们说其他词汇一样。
3.3 Textual inversion
为了找到这些新的嵌入,我们使用小量的图片(通常是3-5张),这些图片描述了目标概念的多种设定,如不同的背景和姿势。
我们通过直接优化找到
v
∗
v_*
v∗,通过最小化这些小量的图片的LDM的损失函数。
为了调节生成过程,我们从CLIP ImageNet模板中的上下文文本中随机采样,其中包含形如"A photo of
S
∗
S_*
S∗","A rendition of
S
∗
S_*
S∗"等等的prompt。
优化目标可以被定义为:
v
∗
=
argmax
v
E
z
∼
ε
(
x
)
,
y
,
ϵ
∼
N
(
0
,
1
)
,
t
[
∣
∣
ϵ
−
ϵ
θ
(
z
t
,
t
,
c
θ
(
y
)
)
∣
∣
2
2
]
(2)
v_*= {\underset{v}{\operatorname{arg max}}}\mathbb{E}_{z\sim \varepsilon(x),y,\epsilon\sim\mathcal{N}(0,1),t}[||\epsilon-\epsilon_\theta(z_t,t,c_\theta(y))||_2^2]\tag{2}
v∗=vargmaxEz∼ε(x),y,ϵ∼N(0,1),t[∣∣ϵ−ϵθ(zt,t,cθ(y))∣∣22](2)
这个是重新使用与原始LDM模型相同的训练方案来实现的,同时保持
c
θ
c_\theta
cθ和
θ
\theta
θ固定。值得注意的是,这是一项重建任务,我们期望它能够激发学习嵌入来捕捉该概念特有的精细视觉细节。
3.4 Implementation details
除非另外说明,我们保留LDM原有的超参数选择。词嵌入是用对象的单字粗略描述符的嵌入进行初始化的,如图1中用"sculpture"和"cat"对概念进行初始化。我们的实验使用2个V100,batchsize=4来实施。基础学习率设置为0.005。遵循LDM,进一步通过GPU数量和batchsize的大小来缩放基础学习率,达到效果不错的0.04。所有结果都通过5000步优化过程产生,发现这些参数在大部分时候都表现得很好。但是,值得说明的是,对于一些概念,更少的步数或更高的学习率可以达到更好的效果。
4 Qualitative comparisons and applications
本节将证明textual inversion具有很广泛的应用,并提供了和SOTA与目前人工捕获baseline的比较。(后续补充)