【深度学习】FaceChain-SuDe,免训练,AI换脸

https://arxiv.org/abs/2403.06775

FaceChain-SuDe: Building Derived Class to Inherit Category Attributes for One-shot Subject-Driven Generation

摘要

最近,基于主体驱动的生成技术由于其个性化文本到图像生成的能力,受到了广泛关注。典型的研究工作主要集中在学习新主体的私有属性。然而,一个重要的事实没有被认真对待,即主体并不是一个孤立的新概念,而应该是预训练模型中某个类别的特化。这导致主体无法全面继承其类别中的属性,从而导致属性相关生成效果不佳。在本文中,受到面向对象编程的启发,我们将主体建模为派生类,其基类是其语义类别。这种建模使得主体能够从其类别继承公共属性,同时从用户提供的示例中学习其私有属性。具体来说,我们提出了一种即插即用的方法,称为Subject-Derived正则化(SuDe)。它通过约束主体驱动生成的图像在语义上属于主体的类别,构建了基类-派生类的建模。在三个基准和两个骨干网络下进行的广泛实验中,我们的SuDe方法在保持主体忠实度的同时,实现了富有想象力的属性相关生成。代码将很快在FaceChain开源。

1. 介绍

最近,随着文本到图像扩散模型的快速发展【22, 26, 29, 32】,人们可以轻松地使用文本提示生成高质量、照片般逼真且富有想象力的图像。这使得人们对AI绘画在游戏设计、电影拍摄等各个领域有了新的期待。其中,主体驱动的生成是一种有趣的应用,旨在为特定主体定制生成。例如,您感兴趣的东西如宠物、吊坠、动漫角色等。这些主体对于每个自然人(用户)来说是特定的,并不存在于预训练扩散模型的大规模训练中。为了实现这一应用,用户需要提供一些示例图像,以便将主体与一个特殊的标记({S*})绑定,然后可以用来指导进一步的定制。

现有的方法可以分为两种:离线方法和在线方法。前者【31, 41】采用离线训练的编码器直接将主体示例编码为文本嵌入,从而实现高测试效率。但其编码器的训练依赖于额外的大规模图像数据集,甚至还需要像素级的注释以获得更好的性能【41】。后者【13, 14, 18, 30】采用测试时微调策略来获得代表特定主体的文本嵌入。尽管牺牲了测试效率,但这种方法消除了对额外数据的依赖,更便于应用部署。由于其灵活性,本文中我们重点改进在线方法。

在部署中,最用户友好的方式仅需要用户上传一个示例图像,即一次性主体驱动的生成。然而,我们发现现有方法在这一具有挑战性但有价值的场景中,特别是在属性相关提示下,表现并不总是令人满意。如图1(a)所示,基线方法未能使“Spike”奔跑、跳跃或张嘴,这些都是狗的自然属性。有趣的是,预训练模型可以为非定制的“狗”生成这些属性【22, 26, 29, 32】。由此我们推测,图1中的失败是因为单一的示例图像不足以提供定制主体所需的属性,而这些属性无法由预训练模型自动补全。基于上述考虑,我们提出通过使主体(“Spike”)显式继承其语义类别(“狗”)的属性来解决这一问题。具体来说,受到面向对象编程(OOP)中定义的启发,我们将主体建模为其类别的派生类。如图1(b)所示,语义类别(“狗”)被视为基类,包含由预训练模型提供的公共属性。主体(“Spike”)被建模为“狗”的派生类,继承其公共属性,同时从用户提供的示例中学习私有属性。从图1(a)的可视化结果来看,我们的建模显著改善了基线方法在属性相关生成方面的表现。

在这里插入图片描述
图1

(a) 该实验对象是一只名为“Spike”的金毛猎犬,基准模型是 DreamBooth [30]。基准模型的失败是因为示例图像无法提供所需的属性,如“running”。我们的方法通过将“Dog”类别的这些属性继承到“Spike”来解决这一问题。

(b) 我们将“Spike”构建为基类“Dog”的派生类。在本文中,我们将预训练模型的基类的一般属性记录为公共属性,而对象特定的属性记录为私有属性。红色波浪线标记的部分是 C++ 中的“继承”语法 [37]。

从人类理解的角度来看,上述建模,即主体(“Spike”)是其类别(“狗”)的派生类,是一个自然的事实。但对于生成模型(例如扩散模型)来说,这种建模是不自然的,因为它没有“Spike”这一主体的先验概念。因此,为了实现这种建模,我们提出了一种Subject Derivation正则化(SuDe),以约束主体的生成图像可以分类到其对应的语义类别中。以上述例子为例,生成的“Spike的照片”应该有很高的概率属于“狗的照片”。这种正则化不能通过添加分类器轻易实现,因为其语义可能与预训练扩散模型中的语义不一致。因此,我们提出显式揭示扩散模型中的隐式分类器以实现上述分类的正则化。

我们的SuDe是一种即插即用的方法,可以方便地与现有的主体驱动方法结合。我们在三个精心设计的基准上进行了评估,分别是DreamBooth【30】、Custom Diffusion【18】和ViCo【14】。结果表明,我们的方法可以显著改善属性相关生成,同时保持主体忠实度。

我们的主要贡献如下:

  • 我们为主体驱动生成提供了一个新的视角,即将主体建模为其语义类别的派生类,基类。
  • 我们提出了一种主体派生正则化(SuDe),通过隐式扩散分类器构建主体与其类别之间的基类-派生类关系。
  • 我们的SuDe可以方便地与现有基线方法结合,在即插即用的方式下显著改善属性相关生成,同时保持主体忠实度。

相关工作

2.1 面向对象编程

面向对象编程 (Object-Oriented Programming, OOP) 是一种具有对象概念的编程范式【2, 28, 40】,包括四个重要定义:类、属性、派生和继承。类是用于创建包含某些属性的对象的模板,这些属性包括公有属性和私有属性。前者可以在类外部访问,而后者不能。派生是定义一个属于现有类的新类,例如,可以从“Dog”类派生出一个新的“Golden Retriever”类,前者称为派生类,后者称为基类。继承意味着派生类应该继承基类的一些属性,例如,“Golden Retriever”应该继承“Dog”的“running”和“jumping”等属性。在本文中,我们将以主题驱动的生成建模为类派生,其中主题是派生类,其语义类别是相应的基类。为了适应这一任务,我们使用公有属性来表示一般特性,如“running”,使用私有属性来表示具体特性,如主题标识符。基类(类别)包含由预训练扩散模型提供的公有属性,而派生类(主题)从示例图像中学习私有属性,同时继承其类别的公有属性。

2.2 文本到图像生成

文本到图像生成旨在通过输入文本的指导生成高质量的图像,这通过结合生成模型与图像-文本预训练模型(例如,CLIP【24】)来实现。从生成器的角度来看,可以大致分为三类:基于GAN的方法、基于VAE的方法和基于扩散的方法。基于GAN的方法【9, 27, 38, 42, 44】采用生成对抗网络作为生成器,在结构化图像如人脸上表现良好,但在具有多变组件的复杂场景中表现较差。基于VAE的方法【6, 10, 12, 25】使用变分自编码器生成图像,能够合成多样化的图像,但有时无法很好地匹配文本。最近,基于扩散的方法【4, 11, 22, 26, 29, 32】取得了SOTA(State-of-the-Art)表现,能够根据文本提示生成照片级真实感的图像。在本文中,我们专注于将预训练的文本到图像扩散模型应用于主题定制化。

2.3 主题驱动的生成

给定一个特定主题,主题驱动的生成旨在通过文本指导生成该主题的新图像。先驱工作根据训练策略可分为两类:离线方法和在线方法。离线方法【7, 8, 31, 41】直接将主题的示例图像编码为文本嵌入,因此需要训练一个额外的编码器。虽然具有高测试效率,但由于需要大规模数据集进行离线训练,成本较高。在线方法【13, 14, 18, 30, 39】在测试时通过微调预训练模型来学习新主题,用一个特定的token ‘{S*}’表示主题。尽管牺牲了一些测试效率,但不需要额外的数据集和网络。然而,对于最用户友好的单次场景,这些方法无法很好地定制与属性相关的生成。为此,我们提出将主题构建为其类别的派生类,以继承公有属性同时学习私有属性。一些先前的工作【18, 30】通过提示工程部分考虑了这个问题,但我们在第5.4.5节中展示了我们的方法SuDe更为满意。

方法

3.1 预备知识

3.1.1 文本到图像扩散模型

扩散模型【15, 34】通过从高斯噪声中恢复图像来近似真实数据分布。它们使用一个前向过程逐渐在清晰图像(或其潜在代码) x 0 x_0 x0上添加噪声 ϵ ∼ N ( 0 , I ) \epsilon \sim N(0,I) ϵN(0,I),以获得一系列噪声变量 x 1 x_1 x1 x T x_T xT,其中 T T T通常等于1000,如下所示:

x t = α t x 0 + 1 − α t ϵ x_t = \sqrt{\alpha_t} x_0 + \sqrt{1 - \alpha_t} \epsilon xt=αt x0+1αt ϵ

其中 α t \alpha_t αt是控制噪声进程的 t t t相关变量。在文本到图像生成中,生成的图像由文本描述 P P P指导。给定步骤 t t t处的噪声变量 x t x_t xt,模型训练逐渐对 x t x_t xt去噪,如下所示:

E x , c , ϵ , t [ w t ∣ ∣ x t − 1 − x θ ( x t , c , t ) ∣ ∣ 2 ] E_{x,c,\epsilon,t}[w_t ||x_{t-1} - x_\theta(x_t, c, t)||^2] Ex,c,ϵ,t[wt∣∣xt1xθ(xt,c,t)2]

其中 x θ x_\theta xθ是模型预测, w t w_t wt是步骤 t t t的损失权重, c = Γ ( P ) c = \Gamma(P) c=Γ(P)是文本提示的嵌入, Γ ( ⋅ ) \Gamma(·) Γ()是预训练的文本编码器,例如BERT【17】。在我们的实验中,我们使用Stable Diffusion【3】,其基于LDM【29】,并使用CLIP【24】文本编码器作为我们的主干模型。

3.1.2 主题驱动的微调

概述:主题驱动生成的核心是将新主题的概念植入预训练的扩散模型中。现有工作【13, 14, 18, 30, 43】通过微调扩散模型的部分或全部参数、文本嵌入或适配器实现这一点,如下所示:

L s u b = ∣ ∣ x t − 1 − x θ ( x t , c s u b , t ) ∣ ∣ 2 L_{sub} = ||x_{t-1} - x_\theta(x_t, c_{sub}, t)||^2 Lsub=∣∣xt1xθ(xt,csub,t)2

其中这里的 x t − 1 x_{t-1} xt1是步骤 t − 1 t-1 t1处的用户提供的示例的噪声版本, c s u b c_{sub} csub是主题提示的嵌入(例如,“photo of a {S*}”)。‘{S*}’代表主题名称。

动机:使用上述公式3,现有方法可以学习主题的特定属性。然而,用户提供的单个示例中的属性不足以进行富有想象力的定制。现有方法没有设计来解决这个问题,只依赖于预训练的扩散模型自动填充缺失的属性。但我们发现这不够令人满意,例如在图1中,基线未能将‘Spike’狗定制为‘running’和‘jumping’。为此,我们提出将主题建模为其语义类别(基类)的派生类。这有助于主题继承其类别的公有属性,同时学习其私有属性,从而在保持主题一致性的同时改善属性相关的生成。具体而言,如图2(a)所示,通过重构主题示例捕捉私有属性。并且通过鼓励由主题提示({S*})指导的 x t − 1 x_{t-1} xt1语义上属于其类别(例如“Dog”),继承公有属性,如图2(b)所示。

3.2 主题派生正则化

派生类是面向对象编程中的定义,而不是命题。因此,没有可以直接用来约束主题成为其类别的派生类的充分条件。然而,根据派生的定义,自然存在一个必要条件:派生类应该是其基类的子类。我们发现约束这个必要条件对帮助主题继承其类别的属性非常有效。具体而言,我们正则化主题驱动生成的图像,使其属于主题的类别,如下所示:

L s u d e = − log ⁡ [ p ( c c a t e ∣ x θ ( x t , c s u b , t ) ) ] L_{sude} = -\log[p(c_{cate} | x_\theta(x_t, c_{sub}, t))] Lsude=log[p(ccatexθ(xt,csub,t))]

其中 c c a t e c_{cate} ccate c s u b c_{sub} csub是类别和主题的条件。公式4很好地构建了一个派生类主题,原因有二:(1) 类别的属性反映在其嵌入 c c a t e c_{cate} ccate中,其中大部分是应该继承的公有属性。这是因为嵌入是由预训练的大型语言模型(LLM)【17】获得的,其训练主要涉及一般属性。(2) 如第4节分析的那样,优化 L s u d e L_{sude} Lsude结合公式3等同于增加 p ( x t − 1 ∣ x t , c s u b , c c a t e ) p(x_{t-1} | x_t, c_{sub}, c_{cate}) p(xt1xt,csub,ccate),这意味着生成一个同时满足 c s u b c_{sub} csub(私有属性)和 c c a t e c_{cate} ccate(公有属性)条件的样本。尽管形式简单,公式4不能直接优化。在接下来的部分,我们描述如何在3.2.1节中计算它,并在3.2.2节中防止训练崩溃的必要策略。

3.2.1 主题派生损失

公式4中的概率不能通过一个额外的分类器容易获得,因为它的语义可能与预训练的扩散模型不对齐。为了确保语义对齐,我们提出在扩散模型本身中揭示隐式分类器。使用贝叶斯定理【16】:

p ( c c a t e ∣ x θ ( x t , c s u b , t ) ) = C t ⋅ p ( x θ ( x t , c s u b , t ) ∣ x t , c c a t e ) p ( x θ ( x t , c s u b , t ) ∣ x t ) p(c_{cate} | x_\theta(x_t, c_{sub}, t)) = C_t \cdot \frac{p(x_\theta(x_t, c_{sub}, t) | x_t, c_{cate})}{p(x_\theta(x_t, c_{sub}, t) | x_t)} p(ccatexθ(xt,csub,t))=Ctp(xθ(xt,csub,t)xt)p(xθ(xt,csub,t)xt,ccate)

其中 C t = p ( c c a t e ∣ x t ) C_t = p(c_{cate} | x_t) Ct=p(ccatext) t − 1 t-1 t1无关,因此在反向传播中可以忽略。在Stable Diffusion【3】中,相邻步骤(即 t − 1 t-1 t1 t t t)的预测被设计为条件高斯分布:

p ( x t − 1 ∣ x t , c ) ∼ N ( x t − 1 ; x θ ( x t , c , t ) , σ t 2 I ) ∝ exp ⁡ ( − ∣ ∣ x t − 1 − x θ ( x t , c , t ) ∣ ∣ 2 / 2 σ t 2 ) p(x_{t-1} | x_t, c) \sim N(x_{t-1}; x_\theta(x_t, c, t), \sigma^2_t I) \propto \exp(-||x_{t-1} - x_\theta(x_t, c, t)||^2 / 2\sigma^2_t) p(xt1xt,c)N(xt1;xθ(xt,c,t),σt2I)exp(∣∣xt1xθ(xt,c,t)2/2σt2)

其中均值是步骤 t t t处的预测,标准差是 t t t的函数。从公式5和6,我们可以将公式4转换为可计算的形式:

L s u d e = 1 2 σ t 2 [ ∣ ∣ x θ ( x t , c s u b , t ) − x θ ‾ ( x t , c c a t e , t ) ∣ ∣ 2 − ∣ ∣ x θ ( x t , c s u b , t ) − x θ ‾ ( x t , t ) ∣ ∣ 2 ] L_{sude} = \frac{1}{2\sigma^2_t} [||x_\theta(x_t, c_{sub}, t) - \overline{x_\theta}(x_t, c_{cate}, t)||^2 - ||x_\theta(x_t, c_{sub}, t) - \overline{x_\theta}(x_t, t)||^2] Lsude=2σt21[∣∣xθ(xt,csub,t)xθ(xt,ccate,t)2∣∣xθ(xt,csub,t)xθ(xt,t)2]

其中 x θ ‾ ( x t , c c a t e , t ) \overline{x_\theta}(x_t, c_{cate}, t) xθ(xt,ccate,t)是条件 c c a t e c_{cate} ccate的预测, x θ ‾ ( x t , t ) \overline{x_\theta}(x_t, t) xθ(xt,t)是无条件预测。 θ ‾ \overline{\theta} θ表示训练中分离,表明只有 x θ ( x t , c s u b , t ) x_\theta(x_t, c_{sub}, t) xθ(xt,csub,t)是梯度可传递的,而 x θ ‾ ( x t , c c a t e , t ) \overline{x_\theta}(x_t, c_{cate}, t) xθ(xt,ccate,t) x θ ‾ ( x t , t ) \overline{x_\theta}(x_t, t) xθ(xt,t)的梯度被截断。这是因为它们是我们要保留的预训练模型中的先验。

3.2.2 损失截断

优化方程(4)会导致 p ( c c a t e ∣ x θ ( x t − 1 , c s u b , t ) ) p(c_{cate} | x_{\theta}(x_{t-1}, c_{sub}, t)) p(ccatexθ(xt1,csub,t))增加至接近1。然而,这个项表示在步骤 t − 1 t-1 t1时噪声图像的分类概率。由于噪声的影响,它不应接近1。因此,我们提出提供一个阈值来截断 L s u d e L_{sude} Lsude。具体来说,对于基于 c c a t e c_{cate} ccate生成的图像,其属于 c c a t e c_{cate} ccate的概率可以用作参考。这表示在步骤 t − 1 t-1 t1时噪声图像的适当分类概率。因此,我们使用该概率的负对数似然作为阈值 τ \tau τ,它可以通过将 c s u b c_{sub} csub替换为 c c a t e c_{cate} ccate来计算,如公式(7)所示:

τ t = − log ⁡ [ p ( c c a t e ∣ x θ ( x t , c c a t e , t ) ) ] = − 1 2 σ t 2 ∣ ∣ x θ ‾ ( x t , c c a t e , t ) − x θ ‾ ( x t , t ) ∣ ∣ 2 \tau_t = -\log[p(c_{cate} | x_{\theta}(x_t, c_{cate}, t))] = -\frac{1}{2\sigma_t^2} ||\overline{x_{\theta}}(x_t, c_{cate}, t) - \overline{x_{\theta}}(x_t, t)||^2 τt=log[p(ccatexθ(xt,ccate,t))]=2σt21∣∣xθ(xt,ccate,t)xθ(xt,t)2
(8)

公式(8)表示在步骤 t t t L s u d e L_{sude} Lsude的下界。当损失值小于或等于 L s u d e L_{sude} Lsude时,优化应停止。因此,我们截断 L s u d e L_{sude} Lsude如下:

L s u d e = λ τ ⋅ L s u d e , λ τ = { 0 , 如果 L s u d e ≤ τ t 1 , 否则 L_{sude} = \lambda_{\tau} \cdot L_{sude}, \quad \lambda_{\tau} = \begin{cases} 0, & \text{如果} \, L_{sude} \leq \tau_t \\ 1, & \text{否则} \end{cases} Lsude=λτLsude,λτ={0,1,如果Lsudeτt否则
(9)

在实践中,这种截断对于保持训练稳定性非常重要。详细信息见第5.4.2节。

3.3 总体优化目标

我们的方法仅引入了一个新的损失函数 L s u d e L_{sude} Lsude,因此可以方便地以即插即用的方式嵌入现有的流程中:

L = E x , c , ϵ , t [ L s u b + w s L s u d e + w r L r e g ] L = \mathbb{E}_{x, c, \epsilon, t} [L_{sub} + w_s L_{sude} + w_r L_{reg}] L=Ex,c,ϵ,t[Lsub+wsLsude+wrLreg]
(10)

其中, L s u b L_{sub} Lsub是用于学习主体私有属性的重构损失,如公式(3)所述。 L r e g L_{reg} Lreg是通常用于防止模型过拟合主体示例的正则化损失。通常,它与 c s u b c_{sub} csub无关,并在各种基线中有灵活的定义【14, 30】。 w s w_s ws w r w_r wr用于控制损失权重。在实践中,我们保持 L s u b L_{sub} Lsub L r e g L_{reg} Lreg与基线一致,仅通过添加我们的 L s u d e L_{sude} Lsude来改变训练过程。

4. 理论分析

这里我们分析SuDe的有效性,因为它建模了 p ( x t − 1 ∣ x t , c s u b , c c a t e ) p(x_{t-1} | x_t, c_{sub}, c_{cate}) p(xt1xt,csub,ccate)。根据公式(3),(4)和DDPM【15】,我们可以表达 L s u b L_{sub} Lsub L s u d e L_{sude} Lsude如下:

L s u b = − log ⁡ [ p ( x t − 1 ∣ x t , c s u b ) ] L s u d e = − log ⁡ [ p ( c c a t e ∣ x t − 1 , c s u b ) ] L_{sub} = -\log[p(x_{t-1} | x_t, c_{sub})] \\ L_{sude} = -\log[p(c_{cate} | x_{t-1}, c_{sub})] Lsub=log[p(xt1xt,csub)]Lsude=log[p(ccatext1,csub)]
(11)

这里我们首先简化 w s w_s ws为1以便于理解:

L s u b + L s u d e = − log ⁡ [ p ( x t − 1 ∣ x t , c s u b ) ⋅ p ( c c a t e ∣ x t − 1 , c s u b ) ] = − log ⁡ [ p ( x t − 1 ∣ x t , c s u b , c c a t e ) ⋅ p ( c c a t e ∣ x t , c s u b ) ] = − log ⁡ [ p ( x t − 1 ∣ x t , c s u b , c c a t e ) ] + S t L_{sub} + L_{sude} = -\log[p(x_{t-1} | x_t, c_{sub}) \cdot p(c_{cate} | x_{t-1}, c_{sub})] = -\log[p(x_{t-1} | x_t, c_{sub}, c_{cate}) \cdot p(c_{cate} | x_t, c_{sub})] = -\log[p(x_{t-1} | x_t, c_{sub}, c_{cate})] + S_t Lsub+Lsude=log[p(xt1xt,csub)p(ccatext1,csub)]=log[p(xt1xt,csub,ccate)p(ccatext,csub)]=log[p(xt1xt,csub,ccate)]+St
(12)

其中, S t = − log ⁡ [ p ( c c a t e ∣ x t , c s u b ) ] S_t = -\log[p(c_{cate} | x_t, c_{sub})] St=log[p(ccatext,csub)] t − 1 t-1 t1无关。从公式(12)可以看出,我们的方法建模了 p ( x t − 1 ∣ x t , c s u b , c c a t e ) p(x_{t-1} | x_t, c_{sub}, c_{cate}) p(xt1xt,csub,ccate)的分布,该分布同时以 c s u b c_{sub} csub c c a t e c_{cate} ccate为条件,因此可以生成具有来自 c s u b c_{sub} csub的私有属性和来自 c c a t e c_{cate} ccate的公共属性的图像。

在实践中, w s w_s ws是各种基线上的变化超参数。这不会改变上述结论,因为:

w s ⋅ L s u d e = − log ⁡ [ p w s ( c c a t e ∣ x t − 1 , c s u b ) ] p w s ( c c a t e ∣ x t − 1 , c s u b ) ∝ p ( c c a t e ∣ x t − 1 , c s u b ) w_s \cdot L_{sude} = -\log[p_{w_s}(c_{cate} | x_{t-1}, c_{sub})] \\ p_{w_s}(c_{cate} | x_{t-1}, c_{sub}) \propto p(c_{cate} | x_{t-1}, c_{sub}) wsLsude=log[pws(ccatext1,csub)]pws(ccatext1,csub)p(ccatext1,csub)
(13)

其中 a ∝ b a \propto b ab表示 a a a b b b正相关。基于公式(13),我们可以看出 L s u b + w s L s u d e L_{sub} + w_s L_{sude} Lsub+wsLsude − log ⁡ [ p ( x t − 1 ∣ x t , c s u b , c c a t e ) ] -\log[p(x_{t-1} | x_t, c_{sub}, c_{cate})] log[p(xt1xt,csub,ccate)]正相关。这意味着,当 w s w_s ws不等于1时,优化我们的 L s u d e L_{sude} Lsude L s u b L_{sub} Lsub仍然可以增加 p ( x t − 1 ∣ x t , c s u b , c c a t e ) p(x_{t-1} | x_t, c_{sub}, c_{cate}) p(xt1xt,csub,ccate)

5. 实验

5.1 实现细节

框架:我们在三个精心设计的框架上评估了SuDe的即插即用效果:DreamBooth【30】、Custom Diffusion【18】和ViCo【14】,使用了两个主干网络,Stable-diffusion v1.4(SD-v1.4)和Stable-diffusion v1.5(SD-v1.5)【3】。在实践中,我们保持所有基线的设计和超参数不变,仅在训练损失中添加我们的 L s u d e L_{sude} Lsude。对于超参数 w s w_s ws,由于这些基线有不同的训练范式(如可优化参数、学习率等),很难找到适用于所有基线的固定 w s w_s ws。我们在DreamBooth上设定为0.4,在ViCo上设定为1.5,在Custom Diffusion上设定为2.0。需要注意的是,用户可以根据不同的主体在实际应用中调整 w s w_s ws。这只需付出很小的代价,因为我们的SuDe是一个测试时调优基线的插件,具有高效性(如在单个3090 GPU上对ViCo的调优约7分钟)。

数据集:在定量实验中,我们使用了DreamBooth【30】提供的DreamBench数据集,该数据集包含来自15个类别的30个主体,每个主体有5个示例图像。由于我们专注于单次定制,这里我们在所有实验中只使用一个示例图像(编号为’00.jpg’)。在先前的工作中,他们收集的大多数提示与属性无关,如‘在沙滩/雪/森林中的{S*}照片’,仅改变图像背景。为了更好地研究我们方法的有效性,我们为每个主体收集了5个与属性相关的提示。示例如‘奔跑的{S*}照片’(对于狗),‘燃烧的{S*}照片’(对于蜡烛)。此外,各种基线有其独特的提示模板。具体来说,对于ViCo,其模板是‘{S*}的照片’,而对于DreamBooth和Custom Diffusion,模板是‘{S*} [类别]的照片’。在实践中,我们使用各种基线的默认模板。在本文中,为了方便书写,我们统一记录{S*}和{S*} [类别]为{S*}。此外,我们还在附录中展示了其他定性示例,这些示例收集自Unsplash【1】。

指标:对于主体驱动的生成任务,有两个重要方面是主体保真度和文本对齐度。对于第一个方面,我们参考先前的工作,使用DINO-I和CLIP-I作为指标。它们是生成图像和真实图像的DINO【5】(或CLIP【24】)嵌入的平均成对余弦相似度。如【14, 30】所述,DINO-I比CLIP-I更能反映保真度,因为DINO可以捕捉同一类别中主体的差异。对于第二个方面,我们参考先前的工作,使用CLIP-T作为指标,这是提示和生成图像的CLIP【24】嵌入的平均余弦相似度。此外,我们提出了一个新指标来评估属性的文本对齐度,简称为属性对齐度。这不能通过CLIP-T反映,因为CLIP仅在分类级别上粗略训练,对动作和材料等属性不敏感。具体来说,我们

使用BLIP-T,这是提示和生成图像的BLIP【19】嵌入的平均余弦相似度。由于BLIP被训练用于处理图像描述任务,因此它能更好地衡量属性对齐度。

在这里插入图片描述
在这里插入图片描述

5.2. 定性结果

这里,我们在图3中可视化了在三种基线上有无我们方法生成的图像。

属性对齐

定性上,我们看到使用我们的SuDe方法生成的图像在属性相关文本上对齐得更好。例如,在第1行,Custom Diffusion不能让狗玩球;在第2行,DreamBooth不能让卡通人物跑步;在第3行,ViCo不能给茶壶一个金色的材质。相比之下,结合了我们的SuDe后,他们的生成可以很好地反映这些属性。这是因为我们的SuDe帮助每个主体继承了其语义类别中的公共属性。

图像保真度

此外,我们的方法在生成富含属性的图像时仍能保持主体的保真度。例如,在第1行,使用SuDe生成的狗的姿势与示例图像非常不同,但我们仍然可以确定它们是同一只狗,因为它们具有私有属性,例如金色的毛发、面部特征等。

5.3. 定量结果

这里我们定量验证了第5.2节中的结论。如表1所示,我们的SuDe在属性对齐上取得了稳定的提升,即在SD-v1.4和SD-v1.5下,BLIP-T在ViCo上分别提高了4.2%和2.6%,在Custom Diffusion上提高了0.9%和2.0%,在DreamBooth上提高了1.2%和1.5%。此外,我们还展示了一个灵活的 w s w_s ws (在[0.5, 1.0, 2.0] · w s w_s ws中选取的最佳结果)标记的性能。我们看到这种低成本调整可以进一步扩大提升,即在SD-v1.4和SD-v1.5下,BLIP-T在ViCo上分别提高了5.3%和3.9%,在Custom Diffusion上提高了1.1%和2.3%,在DreamBooth上提高了3.2%和2.0%。关于 w s w_s ws 的更多分析在第5.4.1节中。对于主体保真度,SuDe只对基线的DINO-I带来了轻微波动,表明我们的方法不会牺牲主体保真度。

5.4. 经验研究

5.4.1 训练权重 w s w_s ws

w s w_s ws 影响 L s u d e L_{sude} Lsude 的权重比例。我们在图4中可视化了不同 w s w_s ws 下生成的图像,通过这些图像我们可以总结出:1)随着 w s w_s ws 的增加,主体(例如,茶壶)可以更全面地继承公共属性(例如,清晰)。在适当范围内(例如,茶壶的[0.5, 2] · w s w_s ws),可以很好地保持主体的保真度。但 w s w_s ws 过大导致我们的模型失去主体保真度(例如,碗的4 · w s w_s ws),因为它稀释了学习私有属性的 L s u b L_{sub} Lsub。2)对于属性简单的主体(例如,碗),较小的 w s w_s ws 更合适,而对于属性复杂的主体(例如,狗),较大的 w s w_s ws 更合适。另一个有趣的现象是,图4第1行中,基线生成的图像中有浆果,而我们的SuDe没有。这是因为尽管浆果出现在示例中,但它不是碗的属性,因此没有被我们派生的类别建模捕获。此外,在第5.4.3节中,我们展示了我们的方法还可以通过提示结合属性相关和属性无关的生成,用户可以进行诸如“带有樱桃的金属{S∗}照片”这样的定制。

5.4.2 损失截断消融

在第3.2.2节中,设计损失截断是为了防止 p ( c c a t e ∣ x θ ( x t , c s u b , t ) ) p(c_{cate}|x_{\theta}(x_t,c_{sub},t)) p(ccatexθ(xt,csub,t)) 过度优化。这里我们验证了这种截断对于防止训练崩溃的重要性。如图5所示,没有截断的情况下,生成在第2轮展示出失真,并在第3轮完全崩溃。这是因为过度优化 p ( c c a t e ∣ x θ ( x t , c s u b , t ) ) p(c_{cate}|x_{\theta}(x_t,c_{sub},t)) p(ccatexθ(xt,csub,t)) 使噪声图像具有过高的分类概率。一个极端的例子是将纯噪声分类为某一类别的概率为1。这破坏了预训练扩散模型的语义空间,导致生成崩溃。

5.4.3 结合属性无关的提示

在以上章节中,我们主要展示了我们SuDe在属性相关生成方面的优势。这里我们展示了我们的方法的优势也可以结合属性无关的提示进行更具创意的定制。如图6所示,我们的方法可以和谐地生成图像,例如,在各种背景下跑步的{S ∗ }(狗)、在各种背景下燃烧的{S ∗ }(蜡烛)、以及带有各种水果的{S ∗ }金属(碗)。

5.4.4 与类别图像正则化的比较

在现有的主体驱动生成方法中【14, 18, 30】,如公式10所述,通常使用一个正则化项 L r e g L_{reg} Lreg 来防止模型过拟合到主体示例。这里我们讨论 L r e g L_{reg} Lreg 和我们的 L s u d e L_{sude} Lsude 的角色差异。以DreamBooth中的类别图像正则化为例,定义如下:
L r e g = ∣ ∣ x θ ˉ p r ( x t , c c a t e , t ) − x θ ( x t , c c a t e , t ) ∣ ∣ 2 , L_{reg} = ||x_{\bar{\theta}_{pr}}(x_t,c_{cate},t) - x_{\theta}(x_t,c_{cate},t)||^2, Lreg=∣∣xθˉpr(xt,ccate,t)xθ(xt,ccate,t)2,
其中 x θ ˉ p r x_{\bar{\theta}_{pr}} xθˉpr 是冻结的预训练扩散模型。可以看出,公式14在主体驱动微调前后,通过 c c a t e c_{cate} ccate 条件生成保持一致。视觉上,根据图8,我们发现 L r e g L_{reg} Lreg 主要有利于背景编辑。但它只使用‘类别提示’( c c a t e c_{cate} ccate)单独进行,忽略了 c s u b c_{sub} csub c c a t e c_{cate} ccate 之间的联系建模。因此,它不能像我们的SuDe那样有利于属性编辑。

5.4.5 与修改提示的比较

本质上,我们的SuDe通过其类别的公共属性丰富了主体的概念。一种简单的替代方法是同时在文本提示中提供主体标记和类别标记,例如“{S ∗ }[category]的照片”,这已经在DreamBooth【30】和Custom Diffusion【18】基线中使用了。上述对这两个基线的比较表明,这种提示无法很好地解决属性缺失问题。这里我们进一步在ViCo基线上评估其他提示模板的性能,因为其默认提示仅包含主体标记。具体来说,我们验证了三个提示模板:P1:“[attribute] {S ∗ } [category]的照片”;P2:“[attribute] {S ∗ }的照片,并且是[category]”;P3:“{S ∗ }的照片,并且是[attribute] [category]”。参考提示学习中的工作【20, 23, 33, 35】,我们在这些模板中保留了触发词结构,即在主体驱动微调中使用的“{S ∗ }的照片”形式。

如表2所示,一个好的提示模板可以部分缓解这个问题,例如,P3的BLIP-T为41.2。但是,仍然有一些属性无法通过修改提示来补充,例如在图7中,P1到P3无法让狗“张开嘴”。这是因为它们只是在提示中放入了主体和类别,但忽略了像我们SuDe一样建模它们的关系。此外,我们的方法也可以在这些提示模板上工作,如表2所示,SuDe进一步改善了所有提示模板超过1.5%。

6. 结论

本文创造性地将主体驱动生成建模为构建一个派生类。具体来说,我们提出了主体派生正则化(SuDe),使主体从其语义类别中继承公共属性,同时从主体示例中学习其私有属性。作为一个即插即用的方法,我们的SuDe可以方便地结合现有基线并改进属性相关的生成。我们的SuDe面对最具挑战性但也是最有价值的一次性场景,可以生成富有想象力的定制,展示了有吸引力的应用前景。

更广泛的影响

主体驱动生成是一个新兴应用,目前的大多数工作集中在使用属性无关提示进行图像定制。但可以预见且有价值的场景是进行用户提供图像的多模式定制,其中属性相关生成将被广泛需要。本文提出的建模方法将主体构建为其语义类别的派生类,能够进行良好的属性相关生成,从而为未来的主体驱动应用提供了一个有前途的解决方案。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/47192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习入门——神经网络

前言 神经网络可以帮助自动化设定权重 具体地讲,神经网络的一个重要性质是它可以自动地从数据中学习到合适的权重参数 从感知机到神经网络 神经网络的例子 中间层aka隐藏层 复习感知机 偏置b 并没有被画出来。如果要明确地表示出b,可以像图3-3那样做…

Large Language Model系列之一:语言模型与表征学习(Language Models and Representation Learning)

语言模型与表征学习(Language Models and Representation Learning) 1 语言模型 N-Gram模型 from collections import defaultdictsentences [The swift fox jumps over the lazy dog.,The swift river flows under the ancient bridge.,The swift br…

华为1000人校园实验记录

在这里插入代码片1000人校园区网设计 1、配置Eth-trunk实现链路冗余 vlan 900 管理WLAN #接入SW8 操作:sys undo in en sysname JR-SW8 int Eth-Trunk 1 mode lacp-static trunkport g0/0/1 0/0/2 port link-type trunk port trunk allow-pass vlan 200 900 qu vla…

模拟器小程序/APP抓包(Reqable+MUMU模拟器)

一、使用adb连接上MUMU模拟器 打开多开器点击ADB图标 连接模拟器端口: adb connect 127.0.0.1:16384列出已连接的设备: adb devices正常会显示MuMu的设备已连接 二、下载Reqable 1.下载链接:客户端下载 | Reqable 2.文档链接:…

redis基本类型和订阅

redis-cli -h <host> -p <port> -a <password> 其中&#xff0c;< host>是Redis服务器的主机名或IP地址&#xff0c;< port>是Redis服务器的端口号&#xff0c;< password>是Redis服务器的密码&#xff08;如果有的话&#xff09;。 set …

LLM基础模型系列:Prompt-Tuning

------->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<------ 大型预训练语言模型的规模不断扩大&#xff0c;在许多自然语言处理 &#xff08;NLP&#xff09; 基准测试中取得了最先进的结果。自GPT和BERT开发以来&#xff0c;标准做法一直是在下游…

数字化教育资源如何适应人工智能时代

01 教育资源应动态适应一线教学需求 用好数字化教育资源是一项系统工程&#xff0c;涉及教育教学的各个方面&#xff0c;包括教师和学生的教育观念与技术观念、信息技术素养&#xff0c;以及课程教学改革、教师培训等。还涉及数字化教育资源提供方的服务&#xff0c;如技术支持…

【STM32嵌入式系统设计与开发---拓展】——1_9_1上拉输入和下拉输入

在使用GPIO引脚时&#xff0c;上拉输入和下拉输入的选择取决于外部电路的特性和应用需求。以下是它们各自的应用场景&#xff1a; 1、上拉输入&#xff08;Pull-up Input&#xff09; 用途: 当默认状态需要为高电平时。 避免引脚悬空&#xff08;floating&#xff09;导致的…

计算机网络——网络层(路由选择协议、路由器工作原理、IP多播、虚拟专用网和网络地址转换)

目录 路由选择协议 因特网的路由选择协议特点 路由信息协议RIP RIP衡量目的网络距离 RIP选择路由器的方式 RIP具有以下三个重要特点 RIP的基本工作流程 RIP的距离向量算法 ​编辑 ​编辑 RIP存在的问题——“坏消息传播得慢” RIP的封装 开放最短路径优先协议OSPF…

昇思25天学习打卡营第23天|基于MindSpore的Pix2Pix实现图像转换

Pix2Pix实现图像转换 Pix2Pix概述 Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks &#xff09;实现的一种深度学习图像转换模型&#xff0c;该模型是由Phillip Isola等作者在2017年CVPR上提出的&#xff0c;可以实现语义/标签到…

【贪心算法】贪心算法30题

一、贪心算法简介 证明贪心策略正确性的常用方法&#xff1a;直接证明、交换论证法、反证法、分类讨论… 二、相关编程题 2.1 柠檬水找零 题目链接 860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 题目描述 算法原理 提示&#xff1a;最优解和贪心解唯一可能不同…

《昇思25天学习打卡营第19天|Diffusion扩散模型》

什么是Diffusion Model&#xff1f; 什么是Diffusion Model? 如果将Diffusion与其他生成模型&#xff08;如Normalizing Flows、GAN或VAE&#xff09;进行比较&#xff0c;它并没有那么复杂&#xff0c;它们都将噪声从一些简单分布转换为数据样本&#xff0c;Diffusion也是从…

共建特色基地 协同互促育人

作为芯片和集成电路、人工智能、智能网联车等临港重点产业布局的知识密集型相关企业&#xff0c;核心技术人才和技术骨干是公司参与全球竞争的重要核心竞争力之一。 知从科技通过不断的创新和规范&#xff0c;在深化产教融合、校企合作、“双师型”、联合办学协同育人、产业人…

git回退分支版本git reset --hard HEAD

git回退分支版本git reset --hard HEAD git reset --hard HEAD 上面命令清除本地所有修改&#xff0c;与下面相似&#xff1a; git reset --hard origin/master 等同于&#xff1a; git reset --hard HEAD~0 说明&#xff1a; HEAD 当前版本 HEAD^ 上一个版本 HEAD^^ 上上…

Linux - 冯-诺依曼体系结构、初始操作系统

目录 冯•诺依曼体系 结构推导 内存提高效率的方法 数据的流动过程 体系结构相关知识 初始操作系统 定位 设计目的 操作系统之上之下分别有什么 管理精髓&#xff1a;先描述&#xff0c;再组织 冯•诺依曼体系 结构推导 计算机基本工作流程图大致如下&#xff1a; 输入设备&a…

支付宝低代码搭建电商小程序,无需编程,可视化操作

大家好&#xff0c;我是小悟 在数字化浪潮的推动下&#xff0c;为了更快速、高效地搭建电商小程序&#xff0c;支付宝低代码平台凭借其独特优势&#xff0c;为商家提供了便捷的解决方案。 支付宝低代码平台犹如一座精心打造的智慧工坊&#xff0c;让电商小程序的搭建变得轻而易…

Excel办公技巧:制作二级联动下拉菜单

分享制作二级联动下拉菜单的方法&#xff0c;即使数据有增删&#xff0c;菜单也能自动更新&#xff01; 可以通过先定义名称&#xff0c;再结合数据验证&#xff0c;来做二级联动下拉菜单。 1. 准备数据 首先&#xff0c;我们需要准备好要进行二级联动下拉菜单的数据&#xff…

在 Linux 系统中安装MySQL 8.x(Ubuntu和CentOS)

文章目录 0. 前言1. 查看 Linux 的发行版本2. 在 Ubuntu 中安装MySQL 8.x2.1 更新包索引2.1.1 更改 Ubuntu 的镜像源2.1.2 更新软件包、升级软件包&#xff08;耗时可能较长&#xff09;2.1.3 可能遇到的问题 2.2 安装MySQL2.3 安全配置2.3.1 密码安全级别2.3.2 删除匿名用户2.…

6.Dockerfile及Dockerfile常用指令

Dockerfile是构建docker镜像的脚本文件 Dockerfile有很多的指令构成&#xff0c;指令由上到下依次运行。 每一条指令就是一层镜像&#xff0c;层越多&#xff0c;体积就越大&#xff0c;启动速度也越慢 井号开头的行是注释行。指令写大写写小写都行&#xff0c;但一般都写为…

介绍 Elasticsearch 中的 Learning to Tank - 学习排名

作者&#xff1a;来自 Elastic Aurlien Foucret 从 Elasticsearch 8.13 开始&#xff0c;我们提供了原生集成到 Elasticsearch 中的学习排名 (learning to rank - LTR) 实现。LTR 使用经过训练的机器学习 (ML) 模型为你的搜索引擎构建排名功能。通常&#xff0c;该模型用作第二…