(ICCV-2023)SVDiff:用于扩散微调的紧凑参数空间
SVDiff:用于扩散微调的紧凑参数空间
Paper是Rutgers University发表在ICCV 2023的工作
Paper Title:SVDiff: Compact Parameter Space for Diffusion Fine-Tuning
Code地址
Abstract
扩散模型在文本到图像生成方面取得了显著成功,能够根据文本提示或其他模态创建高质量图像。然而,现有的定制这些模型的方法受到处理多个个性化主题和过度拟合风险的限制。此外,它们的大量参数对于模型存储来说效率低下。在本文中,我们提出了一种新方法来解决现有文本到图像扩散模型在个性化方面的这些限制。我们的方法涉及微调权重矩阵的奇异值,从而产生一个紧凑而高效的参数空间,降低了过度拟合和语言漂移的风险。 我们还提出了一种 Cut-Mix-Unmix 数据增强技术来提高多主题图像生成的质量和一个简单的基于文本的图像编辑框架。与现有方法相比,我们提出的 SVDiff 方法的模型大小明显较小(与 vanilla DreamBooth 相比,参数减少了约 2,200 倍),使其更适合实际应用。
图 1. SVDiff 的应用。风格混合:混合个性化对象的风格并创建新颖的渲染;多主题:在同一场景中生成多个主题;单图像编辑:从单个图像进行基于文本的编辑。
1. Introduction
近年来,基于扩散的文本到图像生成模型 [19, 53, 20, 47, 51] 取得了快速发展,这些模型使得人们能够通过简单的文本提示生成高质量的图像。这些模型能够生成各种物体、风格和场景,具有非凡的真实感和多样性。这些模型以其出色的效果,激发了研究人员研究各种方法来利用它们的力量进行图像编辑 [31, 37, 79]。
在模型个性化和定制化的追求中,最近的一些研究,如 Textual-Inversion [16]、DreamBooth [52] 和 Custom Diffusion [32] 进一步释放了大规模文本到图像扩散模型的潜力。通过微调预训练模型的参数,这些方法使扩散模型能够适应特定任务或个人用户偏好。
尽管取得了令人鼓舞的结果,但对大规模文本到图像扩散模型进行微调仍然存在一些限制。一个限制是参数空间很大,这可能导致过度拟合或偏离原始泛化能力 [52]。另一个挑战是难以学习多个个性化概念,尤其是当它们属于相似类别时 [32]。
为了缓解过度拟合,我们从 GAN 文献 [50] 中的高效参数空间中汲取灵感,并通过仅微调模型权重矩阵的奇异值,为扩散模型提出了一个紧凑而高效的参数空间,即谱移。这种方法的灵感来自 GAN 自适应中的先前工作,该工作表明,限制可训练参数的空间可以提高目标域的性能 [48, 36, 41, 64]。 与另一种流行的低秩约束 [22] 相比,谱移充分利用了权重矩阵的全部表示能力,同时更加紧凑(例如,StableDiffusion 为 1.7MB [51, 15, 69],全权重检查点消耗 3.66GB 的存储空间)。紧凑的参数空间使我们能够对抗过度拟合和语言漂移问题,尤其是在先验保留损失 [52] 不适用的情况下。我们通过展示一个简单的基于 DreamBooth 的单图像编辑框架来演示此用例。
为了进一步增强模型学习多个个性化概念的能力,我们提出了一种简单的 Cut-MixUnmix 数据增强技术。该技术与我们提出的谱移参数空间相结合,使我们能够学习多个个性化概念,即使对于语义相似的类别(例如“猫”和“狗”)。
综上所述,我们的主要贡献是:
- 我们提出了一个紧凑(与 vanilla DreamBooth [52] 相比,参数减少了约 2,200 倍,在 StableDiffusion [51] 上测量)但高效的参数空间,用于基于权重核奇异值分解的扩散模型微调。
- 我们提出了一个基于文本的单图像编辑框架,并使用我们提出的光谱移位参数空间演示了其用例。
- 我们提出了一种通用的 Cut-Mix-Unmix 数据增强方法,以增强模型学习多个个性化概念的能力。
这项工作为高效、有效地微调大规模文本到图像扩散模型以实现个性化和定制开辟了新途径。我们提出的方法为进一步研究该方向提供了一个有希望的起点。
2. Related Work
文本到图像的扩散模型 扩散模型 [58、61、19、62、40、59、18、60、10] 已被证明在学习数据分布方面非常有效,并在图像合成中表现出令人印象深刻的结果,从而产生了各种应用 [74、45、9、49、26、23、34、56、28、24、29]。最近的进展还探索了基于 Transformer 的架构 [67、44、6、7]。特别是,随着扩散模型的引入,文本引导的图像合成领域取得了显着增长,在大规模文本到图像合成任务中取得了最先进的成果 [39、47、53、51、4]。 我们的主要实验是使用 StableDiffusion [51] 进行的,它是潜在扩散模型 (LDM) [51] 的一种流行变体,它在预训练自动编码器的潜在空间上运行以降低数据样本的维数,从而使扩散模型能够利用编码器学习到的压缩良好的语义特征和视觉模式。
为个性化而对生成模型进行微调最近的研究主要集中在定制和个性化文本到图像的扩散模型,通过使用一些个性化图像对文本嵌入 [16]、全权重 [52]、交叉注意层 [32] 或适配器 [77, 38] 进行微调。其他研究也研究了无需训练的方法以实现快速适应 [17, 73, 11, 27, 55]。仅对权重矩阵的奇异值进行微调的想法是由 FSGAN [50] 在 GAN 文献中引入的,后来由 NaviGAN [13] 进一步推进,采用无监督方法在这个紧凑的参数空间中发现语义方向。我们的方法 SVDiff 将这个概念引入到扩散模型的微调中,并且专为少样本适应而设计。类似的方法 LoRA [14] 探索了文本到图像扩散微调的低秩自适应,而我们提出的 SVDiff 优化了权重矩阵的所有奇异值,从而得到了更小的模型检查点。在小样本分割中也探索了类似的想法 [64]。
基于扩散的图像编辑扩散模型也显示出语义编辑的巨大潜力[33、3、2、31、79、37、72、68、63、42、43、5、71]。这些方法通常侧重于反转[59]和重构,方法是优化空文本嵌入或对给定图像的过度拟合[79]。我们提出的方法 SVDiff 提出了一个简单的基于 DreamBooth 的 [52] 单图像编辑框架,展示了 SVDiff 在单图像编辑和缓解过度拟合方面的潜力。
3. Method
3.1. Preliminary
扩散模型 StableDiffusion [51]
我们实验使用的模型是扩散模型的一种变体——潜变量扩散模型(Latent Diffusion Models,LDMs)[51]。LDMs 通过编码器
E
\mathcal{E}
E 将输入图像
x
\mathbf{x}
x 转换为潜变量编码
z
\mathbf{z}
z,其中
z
=
E
(
x
)
\mathbf{z}=\mathcal{E}(\mathbf{x})
z=E(x),并在潜变量空间
Z
\mathcal{Z}
Z 中执行去噪过程。简要来说,
LDM
\operatorname{LDM}
LDM 模型
ϵ
^
θ
\hat{\boldsymbol{\epsilon}}_\theta
ϵ^θ 使用以下去噪目标进行训练:
E z , c , ϵ , t [ ∥ ϵ ^ θ ( z t ∣ c , t ) − ϵ ∥ 2 2 ] \mathbb{E}_{\mathbf{z}, \mathbf{c}, \boldsymbol{\epsilon}, t}\left[\left\|\hat{\boldsymbol{\epsilon}}_\theta\left(\mathbf{z}_t \mid \mathbf{c}, t\right)-\boldsymbol{\epsilon}\right\|_2^2\right] Ez,c,ϵ,t[∥ϵ^θ(zt∣c,t)−ϵ∥22]
其中 ( z , c ) (\mathbf{z}, \mathbf{c}) (z,c) 是数据-条件对(图像潜变量和文本嵌入), ϵ ∼ N ( 0 , I ) \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) ϵ∼N(0,I), t ∼ Uniform ( 1 , T ) t \sim \operatorname{Uniform}(1, T) t∼Uniform(1,T), θ \theta θ 表示模型参数。为简洁起见,以下省略 t t t。
少样本情况下,GAN 的紧凑参数空间适配
FSGAN 方法 [50] 基于奇异值分解(Singular Value Decomposition,SVD)技术,提出了一种在少样本场景下适配 GAN 的有效方法。它利用 SVD 在 GAN 的参数空间中学习一个紧凑的更新,以实现领域适配。具体来说,FSGAN 将 GAN 的卷积核(形状为
W
tensor
∈
R
c
out
×
c
in
×
h
×
w
W_{\text {tensor }} \in \mathbb{R}^{c_{\text {out }} \times c_{\text {in }} \times h \times w}
Wtensor ∈Rcout ×cin ×h×w)重塑为 2D 矩阵
W
W
W,其形式为:
W = reshape ( W tensor ) ∈ R c out × ( c in × h × w ) W = \text {reshape} \left(W_{\text {tensor }}\right) \in \mathbb{R}^{c_{\text {out }} \times\left(c_{\text {in }} \times h \times w\right)} W=reshape(Wtensor )∈Rcout ×(cin ×h×w)
随后,FSGAN 对预训练 GAN 的生成器和判别器的这些重塑权重矩阵执行 SVD,并通过标准 GAN 训练目标更新其奇异值以适配到新的领域。
3.2. Compact Parameter Space for Diffusion Finetuning
图 2. 对权重矩阵执行奇异值分解 (SVD)。 在模型的中间层中,(a) 卷积权重 W tensor W_{\text {tensor }} Wtensor (b) 被用作联想记忆 [8]。 © 对重塑后的二维矩阵 W W W 执行 SVD 操作。
谱偏移 (Spectral Shifts)
我们的方法核心是将 FSGAN [50] 中的谱偏移概念引入到扩散模型的参数空间中。具体而言,我们首先对预训练扩散模型的权重矩阵执行奇异值分解 (SVD)。权重矩阵(通过与 FSGAN [50] 类似的重塑操作获得)记为
W
W
W,其 SVD 表示为
W
=
U
Σ
V
⊤
W=U \Sigma V^{\top}
W=UΣV⊤,其中
Σ
=
diag
(
σ
)
\Sigma=\operatorname{diag}(\boldsymbol{\sigma})
Σ=diag(σ),
σ
=
[
σ
1
,
σ
2
,
…
]
\boldsymbol{\sigma}=\left[\sigma_1, \sigma_2, \ldots\right]
σ=[σ1,σ2,…] 是按降序排列的奇异值。需要注意的是,SVD 是一次性计算的结果,并且可以缓存,如 Fig. 2 所示。
这种卷积核的重塑方式受到将它们视为线性联想记忆(Linear Associative Memories)的启发 [8]。补丁级卷积可以表示为矩阵乘法:
f
out
=
W
f
i
n
\mathbf{f}_{\text {out }}=W \mathbf{f}_{i n}
fout =Wfin
其中
f
i
n
∈
R
(
c
in
×
h
×
w
)
×
1
\mathbf{f}_{i n} \in \mathbb{R}^{\left(c_{\text {in }} \times h \times w\right) \times 1}
fin∈R(cin ×h×w)×1 是展平的补丁特征,
f
out
∈
R
c
out
\mathbf{f}_{\text {out }} \in \mathbb{R}^{c_{\text {out }}}
fout ∈Rcout 是对应给定补丁的输出预激活特征。直观上,谱偏移的优化利用了奇异向量与特征值问题的闭式解之间的关系 [54]:
max
n
∥
W
n
∥
2
2
s.t.
∥
n
∥
=
1.
\max _{\mathbf{n}}\|W \mathbf{n}\|_2^2 \quad \text { s.t. } \|\mathbf{n}\|=1.
nmax∥Wn∥22 s.t. ∥n∥=1.
权重更新的谱偏移
与微调整个权重矩阵不同,我们仅通过优化谱偏移
δ
\delta
δ 更新权重矩阵,
δ
\delta
δ 定义为更新后的权重矩阵和原始权重矩阵之间的奇异值差值。更新后的权重矩阵通过以下公式重新组装:
W
δ
=
U
Σ
δ
V
⊤
其中
Σ
δ
=
diag
(
ReLU
(
σ
+
δ
)
)
.
W_\delta=U \Sigma_\delta V^{\top} \quad \text { 其中 } \Sigma_\delta=\operatorname{diag}(\operatorname{ReLU}(\boldsymbol{\sigma}+\boldsymbol{\delta})).
Wδ=UΣδV⊤ 其中 Σδ=diag(ReLU(σ+δ)).
训练损失
微调采用与训练扩散模型相同的损失函数,外加一个加权的先验保留损失 [52,8]:
L
(
δ
)
=
E
z
∗
,
c
∗
,
ϵ
,
t
[
∥
ϵ
^
θ
δ
(
z
t
∗
∣
c
∗
)
−
ϵ
∥
2
2
]
+
λ
L
pr
(
δ
)
其中
L
pr
(
δ
)
=
E
z
pr
,
c
pr
,
ϵ
,
t
[
∥
ϵ
^
θ
δ
(
z
t
pr
∣
c
pr
)
−
ϵ
∥
2
2
]
.
\begin{aligned} \mathcal{L}(\boldsymbol{\delta}) & =\mathbb{E}_{\mathbf{z}^*, \mathbf{c}^*, \epsilon, t}\left[\left\|\hat{\boldsymbol{\epsilon}}_{\theta_{\boldsymbol{\delta}}}\left(\mathbf{z}_t^* \mid \mathbf{c}^*\right)-\boldsymbol{\epsilon}\right\|_2^2\right]+\lambda \mathcal{L}_{\text {pr}}(\boldsymbol{\delta}) \quad \text { 其中 } \\ \mathcal{L}_{\text {pr}}(\boldsymbol{\delta}) & =\mathbb{E}_{\mathbf{z}^{\text {pr}}, \mathbf{c}^{\text {pr}}, \epsilon, t}\left[\left\|\hat{\boldsymbol{\epsilon}}_{\theta_{\delta}}\left(\mathbf{z}_t^{\text {pr}} \mid \mathbf{c}^{\text {pr}}\right)-\boldsymbol{\epsilon}\right\|_2^2\right]. \end{aligned}
L(δ)Lpr(δ)=Ez∗,c∗,ϵ,t[∥ϵ^θδ(zt∗∣c∗)−ϵ∥22]+λLpr(δ) 其中 =Ezpr,cpr,ϵ,t[∥ϵ^θδ(ztpr∣cpr)−ϵ∥22].
在这里, ( z ∗ , c ∗ ) \left(\mathbf{z}^*, \mathbf{c}^*\right) (z∗,c∗) 表示模型正在适配的目标数据-条件对, ( z pr , c pr ) \left(\mathbf{z}^{\text {pr}}, \mathbf{c}^{\text {pr}}\right) (zpr,cpr) 表示由预训练模型生成的先验数据-条件对。此损失函数将 Model Rewriting [8] 在 GAN 中提出的损失扩展到了扩散模型的上下文中,其中先验保留损失充当平滑项。对于单张图像编辑,我们设置 λ = 0 \lambda=0 λ=0。
结合谱偏移
此外,单独训练的谱偏移可以组合到一个新模型中,以创建新的渲染效果。这可以启用包括插值、风格混合或多主体生成(如 Fig. 8)在内的应用。我们考虑两种常见策略:加法和插值。
(1) 加法:
对于两个谱偏移
δ
1
\boldsymbol{\delta}_1
δ1 和
δ
2
\boldsymbol{\delta}_2
δ2 的加法组合
δ
′
\boldsymbol{\delta}'
δ′:
Σ
δ
′
=
diag
(
ReLU
(
σ
+
δ
1
+
δ
2
)
)
.
\Sigma_{\delta^{\prime}}=\operatorname{diag}\left(\operatorname{ReLU}\left(\boldsymbol{\sigma}+\boldsymbol{\delta}_1+\boldsymbol{\delta}_2\right)\right).
Σδ′=diag(ReLU(σ+δ1+δ2)).
(2) 插值:
对于两个模型之间的插值(
0
≤
α
≤
1
0 \leq \alpha \leq 1
0≤α≤1):
Σ
δ
′
=
diag
(
ReLU
(
σ
+
α
δ
1
+
(
1
−
α
)
δ
2
)
)
.
\Sigma_{\boldsymbol{\delta}^{\prime}}=\operatorname{diag}\left(\operatorname{ReLU}\left(\boldsymbol{\sigma}+\alpha \boldsymbol{\delta}_1+(1-\alpha) \boldsymbol{\delta}_2\right)\right).
Σδ′=diag(ReLU(σ+αδ1+(1−α)δ2)).
这种方法允许在不同模型之间平滑过渡,并能够在不同图像风格之间进行插值。
3.3. Cut-Mix-Unmix for Multi-Subject Generation
我们发现,当同时使用多个概念训练 StableDiffusion [51] 模型(在每次数据采样迭代中随机选择一个概念)时,对于困难的构图或类似类别的主题 [32],该模型在将多个概念渲染到一张图像中时往往会混合它们的风格(如图 6 所示)。为了明确指导模型不要混合个性化风格,我们提出了一种称为 Cut-Mix-Unmix 的简单技术。通过构建和向模型呈现“正确”剪切和混合的图像样本(如图 3 所示),我们指示模型分离风格。
在该方法中,我们手动创建类似于 CutMix [76] 的图像样本及对应的提示词(例如,“左侧是一只 [ V 1 ] \left[V_1\right] [V1] 狗,右侧是一个 [ V 2 ] \left[V_2\right] [V2] 雕塑” 或 “一个 [ V 2 ] \left[V_2\right] [V2] 雕塑和一个 [ V 1 ] \left[V_1\right] [V1] 狗”,如图 3 所示)。先验损失样本也以类似方式生成。在训练过程中,以预定义的概率(通常设置为 0.6)应用 Cut-Mix-Unmix 数据增强。该概率并未设置为 1,因为这样做会使模型难以区分不同的主体。在推理阶段,我们使用与训练时不同的提示词,例如“一只 [ V 1 ] \left[V_1\right] [V1] 狗坐在一个 [ V 2 ] \left[V_2\right] [V2] 雕塑旁边”。然而,如果模型对 Cut-Mix-Unmix 样本过拟合,即使使用不同的提示词,模型也可能生成带有拼接伪影的样本。我们发现,使用负面提示词有时可以缓解这些伪影问题,具体细节详见附录。
图 3. Cut-Mix-Unmix 数据增强用于多主题生成。该图显示了 Cut-Mix-Unmix 数据增强用于训练模型处理多个概念的过程。 该方法涉及手动构建图像提示对,其中使用类似 CutMix 的数据增强 [76] 创建图像,相应的提示写为例如“[V2] 雕塑和 [V1] 狗的照片”。先前保存的图像提示对以类似的方式创建。目标是通过向模型呈现明确的混合样本来训练模型分离不同的概念。在推理过程中,可以使用不同的提示,例如“[V1] 狗坐在 [V2] 雕塑旁边的照片”。
我们进一步扩展了我们的微调方法,在交叉注意图上加入了“unmix”正则化。这是因为我们观察到,在微调模型中,狗的特殊标记主要关注熊猫的区域。为了加强两个主体之间的分离,我们在交叉注意图的非对应区域上使用 MSE。这种损失鼓励狗的特殊标记只关注狗,反之亦然。此扩展的结果显示拼接伪影显著减少。附录中提供了交叉注意正则化的详细信息。
3.4. Single-Image Editing
在本节中,我们通过使用图像提示对微调扩散模型,提出了一个单幅图像编辑框架。该过程如图 4 所示。通过修改提示,可以在推理时获得所需的编辑。例如,我们使用输入图像和文本描述“带有蓝色钻石和金色老鹰的皇冠照片”对模型进行微调,在推理时,如果我们想删除老鹰,我们只需从微调后的模型中采样文本“带有蓝色钻石的皇冠照片”。为了减轻微调过程中的过度拟合,我们使用光谱偏移参数空间而不是全权重,从而降低过度拟合和语言漂移的风险。如 [35] 中所述,忠实重建和可编辑性之间的权衡是公认的,在这里使用 SVDiff 的目的是允许更灵活的编辑,而不是精确的重建。
图 4. 使用文本到图像扩散模型进行单幅图像编辑的流程。(a)该模型使用单个图像提示对进行微调,其中提示描述输入图像,没有特殊标记。(b)在推理过程中,通过修改提示进行所需的编辑。对于没有显著结构变化的编辑,使用 DDIM 反转 [59] 已被证明可以提高编辑质量。
对于不需要大结构变化的编辑(例如改变姿势,“站立” → \rightarrow → “躺下” 或 “放大”),可以通过 DDIM 反演 [59] 提高结果质量。在采样之前,我们使用分类器无关引导(classifier-free guidance)[21],以目标文本提示 c \mathbf{c} c 为条件,设置引导比例为 1,运行 DDIM 反演,将输入图像 z ∗ \mathbf{z}^* z∗ 编码为潜变量噪声图:
z T = DDIMInvert ( z ∗ , c ; θ ′ ) \mathbf{z}_T=\operatorname{DDIMInvert}\left(\mathbf{z}^*, \mathbf{c} ; \theta^{\prime}\right) zT=DDIMInvert(z∗,c;θ′)
其中, θ ′ \theta^{\prime} θ′ 表示微调后的模型参数,此潜变量噪声图 z T \mathbf{z}_T zT 作为推理流程的起点。如预期,较大的结构变化可能仍然需要在去噪过程中注入更多的噪声。对此,我们考虑两种噪声注入方式:
- 设置 η > 0 \eta>0 η>0(如 DDIM [59] 定义的);
- 对 z T \mathbf{z}_T zT 进行扰动,通过球面线性插值(spherical linear interpolation, slerp)[57, 59] 在 z T \mathbf{z}_T zT 和随机噪声 ϵ ∼ N ( 0 , I ) \boldsymbol{\epsilon} \sim \mathcal{N}(0, \mathbf{I}) ϵ∼N(0,I) 之间插值:
z ~ T = slerp ( α , z T , ϵ ) = sin ( ( 1 − α ) ϕ ) sin ( ϕ ) z T + sin ( α ϕ ) sin ( ϕ ) ϵ \tilde{\mathbf{z}}_T=\operatorname{slerp}\left(\alpha, \mathbf{z}_T, \boldsymbol{\epsilon}\right)=\frac{\sin ((1-\alpha) \phi)}{\sin (\phi)} \mathbf{z}_T+\frac{\sin (\alpha \phi)}{\sin (\phi)} \boldsymbol{\epsilon} z~T=slerp(α,zT,ϵ)=sin(ϕ)sin((1−α)ϕ)zT+sin(ϕ)sin(αϕ)ϵ
其中, ϕ = arccos ( cos ( z T , ϵ ) ) \phi=\arccos \left(\cos \left(\mathbf{z}_T, \boldsymbol{\epsilon}\right)\right) ϕ=arccos(cos(zT,ϵ))。更多结果和分析,请参见实验部分。
其他方法,例如 Imagic [31],也被提出用于解决基于微调的单图像编辑中出现的过拟合和语言漂移问题。Imagic 首先对输入图像和目标文本描述微调扩散模型,然后在优化的文本嵌入与目标文本嵌入之间插值以避免过拟合。然而,Imagic 在测试时需要对每个目标文本提示进行微调。