DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation

DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation (Paper reading)

Nataniel Ruiz, Google Research, US, CVPR2023, Cited: 218, Code, Paper

1. 前言

大型文本到图像模型在AI的演化中取得了显著的飞跃,实现了从给定文本提示中合成高质量、多样化的图像。然而,这些模型缺乏模仿给定参考集中主题外观并在不同环境中合成新的表现形式的能力。在这项工作中,我们提出了一种新的方法,用于“个性化”文本到图像扩散模型。只需输入主题的几张图像,我们对预训练的文本到图像模型进行微调,使其学习将唯一标识符与特定主题绑定。一旦主题嵌入到模型的输出域中,该唯一标识符可以用于在不同场景中合成主题的新颖逼真的图像。通过利用嵌入在模型中的语义先验,并结合新的自生类特定先验保持损失,我们的技术能够合成主题在参考图像中未出现的多样化场景、姿势、视角和光照条件下的形象,同时保留主题的关键特征。我们还为这个新任务提供了一个新的数据集和评估协议,该任务是基于主题驱动的生成。我们的技术应用于几个以前难以解决的任务,包括主题再语境化、文本引导的视图合成和艺术渲染,同时保留主题的关键特征。

在这里插入图片描述

2. 整体思想

想让一个大模型适应你的主题,比如图1,你家的狗,你想把它P到各种地方,或者各种形态,你希望狗一定要像你家狗,但是P的地点和形态也要很真实和形象。本文就是解决这个问题,主要方式是正则化的微调。

首先,你先准备几张你家狗的图片(比如图1的四张),你想让你家狗游泳,那么我先用预训练的扩散模型生成1000张”一只狗在游泳“的图片,显然这种方式生成的狗各不相同。那么你想变成你家的狗,这是只需要把你家的狗当作一种唯一标识[V]。这时候我们用你家狗的4张图片作为训练集,然后在prompt上加入[V],”一只[V]狗“。这里不需要加入”在游泳“,我们只想让模型学到这个唯一标识符,然后训练好后,模型就会把[V]替换成狗,那么前面各不相同的狗就会都变成你家的狗了。

训练过程简单来说是:2个数据集,一个是模型生成的,一个是你自己的主题。2个文本prompts,一个是”a [V] 类别“,一个是"a 类别 …"。我们利用损失函数联合训练,训练的过程中,模型在学习”一个狗在游泳“的同时也学习”一个[V]狗“,那么模型就仅仅会改变狗的样子。损失函数见下面。

3. 方法

在这项工作中,我们提出了一种新的方法,用于个性化文本到图像扩散模型(使其适应用户特定的图像生成需求)。我们的目标是扩展模型的语言-视觉字典,使其将新词与用户想要生成的特定主题绑定在一起。一旦新的字典嵌入到模型中,它可以使用这些词来合成主题的新颖逼真的图像,将其置于不同场景中,同时保留其关键识别特征。这种效果类似于一个"魔法照相亭"——一旦拍摄了主题的几张照片,照相亭就会根据简单直观的文本提示,在不同的条件和场景下生成主题的照片。更具体地说,给定主题的几张图像(大约3-5张),我们的目标是将主题(这几张图片的特征)嵌入到模型的输出域中,使其能够以唯一标识符合成。为此,我们提出了一种技术,使用罕见的标记标识符来表示给定主题,并对预训练的基于扩散的文本到图像框架进行微调。

我们使用输入图像和文本提示对文本到图像模型进行微调,其中文本提示包含了一个唯一标识符,后面跟着主题的类名(例如,“一只[V]狗”)。后者使模型能够在绑定唯一标识符的同时利用其对主题类的先验知识。为了防止语言漂移导致模型将类名(例如,“狗”)与特定实例相关联,我们提出了一种自生的、类特定的先验保持损失,它利用嵌入在模型中的类的语义先验,并鼓励它生成同一类的多样化实例,作为我们的主题。我们将我们的方法应用于各种基于文本的图像生成应用,包括主题的再语境化、属性的修改、原始艺术作品等,为以前难以解决的任务开辟了新的途径。我们通过消融研究突出了我们方法中每个组件的贡献,并与替代基线和相关工作进行了比较。我们还进行了用户研究,评估我们合成图像中主题和提示的保真度,与替代方法进行了比较。

在没有任何文本描述的情况下,只给定特定主题的几张随意拍摄的图像(通常为3-5张),我们的目标是生成具有高保真度的主题的新图像,并根据文本提示进行变化。我们对输入图像捕获设置和主题图像的上下文没有任何限制。接下来,我们介绍一些关于文本到图像扩散模型的背景(第3.1节),然后介绍我们的微调技术,将唯一标识符与在几张图像中描述的主题绑定在一起(第3.2节),最后提出一种类特定的先验保持损失,使我们能够克服微调模型中的语言漂移问题(第3.3节)。

3.1 Text2Image 扩散模型

扩散模型是一种概率生成模型,通过逐渐去噪一个从高斯分布中采样的变量来训练学习数据分布。具体而言,我们对一个预训练的文本到图像扩散模型 x ^ θ \hat x_θ x^θ感兴趣,该模型给定一个初始噪声图 ϵ ∼ N ( 0 , I ) ϵ ∼ N(0, I) ϵN(0,I)和一个使用文本编码器 Γ Γ Γ和文本提示 P P P生成的条件向量 c = Γ ( P ) c = Γ(P) c=Γ(P),生成一个图像 x g e n = x ^ θ ( ϵ , c ) x_gen = \hat x_θ(ϵ, c) xgen=x^θ(ϵ,c)。它们使用平方误差损失训练,以去噪一个可变噪声的图像或潜在编码 z t : = α t x + σ t ϵ z_t := α_tx + σ_tϵ zt:=αtx+σtϵ
E x , c , ϵ , t = [ ω t ∣ ∣ x ^ θ ( α t x + σ t ϵ , c ) − x ∣ ∣ 2 2 ] (1) \mathbb{E}_{x,c,\epsilon,t}=[\omega_t||\hat x_\theta(\alpha_tx+\sigma_t \epsilon, c)-x||^2_2] \tag{1} Ex,c,ϵ,t=[ωt∣∣x^θ(αtx+σtϵ,c)x22](1)

3.2 定制化text2image模型

我们的第一个任务是将主题实例嵌入到模型的输出域中,以便我们可以查询模型以获取主题的各种新颖图像。一种自然的想法是使用主题的少样本数据集对模型进行微调。在少样本场景下对生成模型(如GANs)进行微调时需要小心处理,因为这可能会导致过拟合和模式坍塌,而且不能很好地捕捉目标分布。已经有研究关于避免这些问题的技术,尽管与我们的工作相比,这些研究主要是为了生成类似目标分布的图像,但没有主题保持的要求。关于这些问题,我们观察到一个有趣的发现,即在使用公式1中的扩散损失进行谨慎的微调设置时,大型文本到图像扩散模型似乎擅长将新信息整合到其域中,而不会忘记先验知识或过拟合于一小组训练图像。

为Few-shot设计定制化prompts:我们的目标是将一个新的(唯一标识符,主题)对"植入"到扩散模型的"字典"中。为了避免为给定的图像集编写详细的图像描述的开销,我们选择了一种更简单的方法,将主题的所有输入图像标记为"a [identifier] [class noun]",其中[identifier]是与主题相关联的唯一标识符,[class noun]是主题的粗略类别描述符(例如猫、狗、手表等)。类别描述符可以由用户提供或使用分类器获得。我们在句子中使用类别描述符是为了将类别的先验知识与我们主题的唯一标识符嵌入相结合,发现使用错误的类别描述符或没有类别描述符会增加训练时间和语言漂移,同时降低性能。实质上,我们试图利用模型对特定类别的先验知识,并将其与我们主题的唯一标识符的嵌入纠缠在一起,以便我们可以利用视觉先验在不同的环境中生成主题的新姿势和构造。

稀有令牌标识符: 我们通常发现现有的英文单词(例如"unique"、“special”)不够理想,因为模型必须学习将它们从原来的含义中解脱出来,并重新将它们与我们的主题联系起来。这就需要一个在语言模型和扩散模型中都具有较弱先验的标识符。一种危险的方法是从英语中选择随机字符并将它们连接起来生成一个稀有标识符(例如"xxy5syt00")。实际上,分词器可能会将每个字母分开分词,并且这些字母对于这些字母的先验概率较高。我们经常发现这些标记具有与使用常见英文单词类似的弱点。我们的方法是在词汇表中查找稀有标记,然后使用解分词器将这些标记反转为文本空间,以最小化标识符具有强先验的概率。我们在词汇表中进行稀有标记查找,并获得一系列稀有标记标识符 f ( V ^ ) f(\hat V) f(V^),其中 f f f是一个分词器,它将字符序列映射到标记,并且 V ^ \hat V V^是来自标记 f ( V ^ ) f(\hat V) f(V^)的解码文本。序列的长度可以是可变的 k k k,我们发现 k = { 1 , . . . , 3 } k =\{1, ..., 3\} k={ 1,...,3}的相对较短的序列效果较好。然后,通过在 f ( V ^ ) f(\hat V) f(V^)上使用去分词器反转词汇表,我们获得了定义我们独特标识符 V ^ \hat V V^的字符序列。对于Imagen,我们发现使用对应于3个或更少Unicode字符(无空格)的标记的均匀随机抽样,并使用T5-XXL分词器范围{5000, …, 10000}的标记效果良好。

分词器(Tokenizer)是一种将文本分解为离散单元(如单词、子词或字符)的工具或算法。
在自然语言处理中,分词是文本预处理的重要步骤之一,它将连续的字符序列切分成有意义的单元,以便进一步处理和分析。
例如将"我喜欢学习机器学习"分成"我 喜欢 学习 机器学习"。

3.3 类别特定的先验保持损失

根据我们的经验,实现最大主题忠实度的最佳结果是对模型的所有层进行微调。包括对以文本嵌入为条件的层进行微调,这引发了语言漂移的问题。语言漂移是语言模型中观察到的问题,其中预训练于大型文本语料库并随后针对特定任务进行微调的模型逐渐失去了语言的句法和语义知识。据我们所知,我们是第一个发现类似现象影响扩散模型的人,其中模型逐渐忘记了如何生成与目标主题属于相同类别的主题。

另一个问题是可能会减少输出的多样性。文本到图像扩散模型天然具有高度的输出多样性。当在一小组图像上进行微调时,我们希望能够生成具有新的视点、姿势和关节的主题。然而,存在减少输出姿势和视图变异性的风险(例如,过度适应少量视图)。我们观察到,这通常是发生的情况,特别是当模型训练时间过长时。

为了缓解上述两个问题,我们提出了一种自生成的类别特定先验保持损失,以促进多样性并抵制语言漂移本质上,我们的方法是用模型自身生成的样本来监督模型,以便在少样本微调开始后保留先验。这使得它能够生成多样化的类别先验图像,并保留有关类别先验的知识,可以与关于主题实例的知识结合使用。具体而言,我们通过使用带有随机初始噪声 z t 1 ∼ N ( 0 , I ) z_{t1} ∼ N(0, I) zt1N(0,I)和条件向量 c p r : = Γ ( f ( ” a [ c l a s s n o u n ] ” ) ) c_{pr} := Γ(f(”a [class noun]”)) cpr:=Γ(f(a[classnoun]))的冻结预训练扩散模型上的祖先采样器来生成数据 x p r = x ^ ( z t 1 , c p r ) x_{pr} = \hat x(z_{t1}, c_{pr}) xpr=x^(zt1,cpr)。损失函数如下:
E x , c , ϵ , ϵ ′ , t = [ ω t ∣ ∣ x ^ θ ( α t x + σ t ϵ , c ) − x ∣ ∣ 2 2 ] + λ ω t ′ ∣ ∣ x ^ θ ( α t ′ x + σ t ′ ϵ ′ , c p r ) − x p r ∣ ∣ 2 2 ] (2) \mathbb{E}_{x,c,\epsilon,\epsilon',t}=[\omega_t||\hat x_\theta(\alpha_tx+\sigma_t \epsilon, c)-x||^2_2]+\lambda \omega_{t'}||\hat x_\theta(\alpha_{t'x}+\sigma_{t'} \epsilon', c_{pr})-x_{pr}||^2_2] \tag{2} Ex,c,ϵ,ϵ,t=[ωt∣∣x^θ(αtx+σtϵ,c)x22]+λωt∣∣x^θ(αtx+σtϵ,cpr)xpr22](2)
其中第二项是先验保持项,它用模型自己生成的图像来监督模型,λ控制该项的相对权重。图3说明了使用类别生成样本和先验保持损失对模型进行微调的过程。尽管简单,但我们发现这种先验保持损失在促进输出多样性和克服语言漂移方面非常有效。我们还发现可以进行更多迭代的训练而不会过拟合。我们发现在Imagen 中,使用λ=1和学习率 1 0 − 5 10^{-5} 105,以及在Stable Diffusion中使用 5 × 1 0 − 6 5×10^{-6} 5×106的情况下,进行大约1000次迭代,并且使用3-5张图像的主题数据集大小就足以获得良好的结果。在这个过程中,生成了约1000个“a [class noun]”样本,但可以使用更少的样本。对于Imagen,这个训练过程在一个TPUv4上大约需要5分钟,在NVIDIA A100上需要5分钟。
在这里插入图片描述

4. 实验

在这一部分中,我们展示了一些实验和应用。我们的方法能够对主题实例进行广泛的文本引导的语义修改,包括重新语境化、修改主题属性(如材料和物种)、艺术渲染和视角修改。

重要的是,在所有这些修改中,我们能够保留给主题赋予其身份和本质的独特视觉特征。如果任务是重新语境化,那么主题的特征将保持不变,但外观(例如姿势)可能会发生变化。如果任务是更强的语义修改,例如将我们的主题与另一个物种/对象进行交叉,那么在修改后,主题的关键特征将被保留。在这一部分中,我们使用[V]来引用主题的唯一标识。

我们收集了一个包含30个主题的数据集,包括独特的物体和宠物,如背包、填充动物、狗、猫、太阳镜、卡通等。我们还收集了25个提示:20个重新语境化提示和5个物体属性修改提示;10个重新语境化提示、10个配饰提示和5个主题/宠物的属性修改提示。为了评估套件,我们为每个主题和每个提示生成了四个图像,总共3000个图像。这使我们能够稳健地测量方法的性能和泛化能力。
在这里插入图片描述

4.1 消融实验

Prior Preservation Loss Ablation(PPL): 我们对Imagen模型在我们的数据集中的15个主题上进行微调,分别使用了我们提出的(PPL)和不使用PPL进行对比。先验保持损失旨在抵抗语言漂移并保留先验信息。我们通过计算生成的随机主题的图像与我们特定主题的真实图像之间的平均DINO嵌入的配对相似度,来计算先验保持度量(PRES)。这个度量越高,表示该类别的随机主题与我们特定主题的相似度越高,表明先验信息的崩溃。我们使用平均LPIPS余弦相似度计算生成的具有相同提示的相同主题图像之间的多样性度量(DIV)。我们观察到,使用PPL训练的模型具有更高的多样性(稍微降低了主题的准确性),这在图5中也可以从定性上观察到,使用PPL训练的模型对参考图像的环境过度拟合较少,可以生成更多种类的狗的姿势和表达方式。
在这里插入图片描述
类别先验消融实验: 我们在我们的数据集子集(5个主题)上对Imagen进行微调,分别使用没有类别名词的情况、随机抽样的错误类别名词和正确的类别名词进行训练。对于我们的主题,使用正确的类别名词,我们能够忠实地适应主题,并利用类别先验,在各种情境下生成我们的主题。当使用错误的类别名词(例如,对于一个背包使用"can")时,我们的主题与类别先验之间发生冲突,有时会得到圆柱形的背包或形状不正确的主题。如果我们没有使用类别名词进行训练,模型就无法利用类别先验,难以学习主题和收敛,并可能生成错误的样本。主题准确性结果如表4所示,我们提出的方法具有明显更高的主题准确性。

在这里插入图片描述
局限性: 我们在图8中展示了我们方法的一些失败案例。第一个与无法准确生成提示的上下文有关。可能的原因是这些上下文的先验较弱,或者由于在训练集中共现概率较低,无法同时生成主题和指定的概念。第二个是上下文和外观的纠缠,即由于提示的上下文,主题的外观发生变化,图8中用背包颜色的变化作为例子。第三,我们还观察到当提示与主题最初所见的原始设置相似时,会出现对真实图像的过拟合。其他限制包括某些主题比其他主题更容易学习(例如狗和猫)。偶尔,对于较少见的主题,模型无法支持太多的主题变化。最后,主题的准确性也存在差异,一些生成的图像可能包含虚构的主题特征,这取决于模型先验的强度和语义修改的复杂性。

猜你喜欢

转载自blog.csdn.net/qq_43800752/article/details/131057905
今日推荐