近年来,AI生成艺术领域取得了长足的进步,其中Diffusion Model的兴起可以说是一个重要的里程碑。Diffusion Model是一种生成模型,它使用了一个深度神经网络来建模图像的像素级别分布。相较于传统的生成模型,Diffusion Model不需要计算任何显式的概率分布,而是采用一个简单的随机游走过程来生成图像。这种方法能够处理高维度、复杂的数据,并且可以产生高质量的图像。因此,Diffusion Model已经成为生成艺术领域最受欢迎的技术之一。通过使用Diffusion Model,人们能够生成逼真的图像、视频、音频等内容,进一步推动了AI在艺术创作中的应用。在本文中,我将解释它如何使用说明。
1.Diffusion Model 扩散模型
概述
扩散模型概述
Diffusion Model的训练可以分为两部分:
Forward Diffusion Process 正向扩散过程
Forward diffusion process 正向扩散过程
前向扩散过程逐步对输入图像 x₀ 逐渐加入高斯噪声,一共有 T 步。该过程将产生一系列噪声图像样本 x₁, …, x_T。当 T → ∞ 时,最终的结果将变成一张完全有噪声的图像,就好像它是从各向同性高斯分布中采样的一样。但是我们可以使用一个封闭形式的公式在特定的时间步长 t 直接对有噪声的图像进行采样,而不是设计一种算法来迭代地向图像添加噪声。
Closed-Form Formula 闭式公式
可以使用重新参数化技巧导出封闭形式的采样公式。
我们可以将采样图像 xₜ 表示如下:
然后我们可以递归展开它得到闭式公式:
闭式公式的推导
所有 ε 都是独立同分布的。(独立同分布)标准正态随机变量。使用不同的符号和下标区分它们很重要,因为它们是独立的并且它们的值在采样后可能不同。
但是我们如何从第 4 行跳到第 5 行呢?
有些人觉得这一步很难理解。在这里我将向您展示它是如何工作的:
第4行到第5行的详细推导
让我们用 X 和 Y 来表示这两项。它们可以被视为来自两个不同正态分布的样本。即 X ~ N(0, αₜ(1-αₜ₋₁)I) 和 Y ~ N(0, (1-αₜ)I)。回想一下,两个正态分布(独立)随机变量的总和也是正态分布的。即如果 Z = X + Y,则 Z ~ N(0, σ²ₓ+σ²ᵧ)。
因此我们可以将它们合并在一起并以重新参数化的形式表示合并后的正态分布。这就是我们将这两个术语结合起来的方式。
重复这些步骤将为我们提供以下仅取决于输入图像 x₀ 的公式:
The closed-form formula 闭式公式
现在我们可以使用这个公式在任何时间步直接对 xₜ 进行采样,这使得前向过程更快。
Reverse Diffusion Process 逆扩散过程
Reverse diffusion process 反向扩散过程
与正向过程不同,我们不能使用 q(xₜ₋₁|xₜ) 来反转噪声,因为它很难处理(无法计算)。
因此,我们需要训练神经网络 pθ(xₜ₋₁|xₜ) 来近似 q(xₜ₋₁|xₜ)。近似值 pθ(xₜ₋₁|xₜ) 服从正态分布,其均值和方差设置如下:
pθ 的均值和方差
损失函数
我们可以将损失定义为负对数似然:
负对数似然
此设置与 VAE 中的设置非常相似。我们可以优化变分下界,而不是优化棘手的损失函数本身
变分下界
通过优化可计算的下界,我们可以间接优化棘手的损失函数。
变分下界的推导和展开
通过展开变分下界,我们发现可以用以下三项来表示:
1. L_T:常数项
由于 q 没有可学习的参数,p 只是一个高斯噪声概率,因此这一项在训练期间将是一个常数,因此可以忽略。
2. Lₜ₋₁:逐步去噪项
这一项比较目标去噪步骤 q 和近似去噪步骤 pθ。
请注意,通过以 x₀ 为条件,q(xₜ₋₁|xₜ, x₀) 变得易于处理。
逐步去噪项的细节
经过一系列的推导,q(xₜ₋₁|xₜ, x₀)的均值μ̃ₜ如上所示。为了逼近目标去噪步骤 q,我们只需要使用神经网络来逼近其均值。因此,我们将近似均值 μθ 设置为与目标均值 μ̃ₜ 相同的形式(使用可学习的神经网络 εθ):
近似平均值
目标均值和近似均值之间的比较可以使用均方误差 (MSE) 来完成:
简化的逐步去噪损失的推导
在实验上,通过忽略加权项并简单地将目标噪声和预测噪声与 MSE 进行比较,可以获得更好的结果。因此,事实证明,为了逼近所需的去噪步骤 q,我们只需要使用神经网络 εθ 来逼近噪声 εₜ。
3. L₀:重构项
这是最后一步去噪的重建损失,在训练过程中可以忽略,原因如下:
简化损失
所以最终简化后的训练目标如下:
简化的培训目标
我们发现,正如预期的那样,在真正的变分边界上训练我们的模型比在简化目标上训练产生更好的代码长度,但后者产生最好的样本质量。
U-Net 模型
Dataset
训练数据集
训练算法
训练算法
官方的训练算法如上,下图说明了一个训练步骤是如何工作的:
训练步骤图解
Sampling 采样
采样算法
采样意味着从高斯噪声绘制图像。下图显示了我们如何使用经过训练的 U-Net 生成图像:
抽样说明
扩散速度问题
扩散(采样)过程迭代地将全尺寸图像提供给 U-Net 以获得最终结果。当总扩散步数 T 和图像大小时,这使得纯扩散模型非常慢。因此,Stable Diffusion 旨在解决这个问题。
2.Stable Diffusion 稳定扩散
稳定扩散的原始名称是“潜在扩散模型”(LDM)。顾名思义,扩散过程发生在潜在空间中。这就是它比纯扩散模型更快的原因。
前往潜在空间
Autoencoder 自编码器
我们将首先训练一个自动编码器来学习将图像数据压缩成低维表示。通过使用经过训练的编码器 E,我们可以将全尺寸图像编码为低维潜在数据(压缩数据)。通过使用经过训练的解码器 D,我们可以将潜在数据解码回图像。
潜扩散
稳定扩散模型概述
调节
调节机制概述
Stable Diffusion 模型的真正强大之处在于它可以根据文本提示生成图像。这是通过修改内部扩散模型以接受调节输入来完成的。
调节机制细节
通过使用交叉注意机制增强其去噪 U-Net,将内部扩散模型转变为条件图像生成器。
上图中的开关用于在不同类型的调节输入之间进行控制:
训练
稳定扩散模型的训练目标
训练目标(损失函数)与纯扩散模型中的目标非常相似。唯一的变化是:
Sampling 采样
稳定的扩散采样过程(去噪)
由于潜在数据的大小比原始图像小得多,因此去噪过程会快得多。
架构比较
最后,让我们比较一下纯扩散模型和稳定扩散模型(潜在扩散模型)的整体架构。
纯扩散模型
纯扩散模型架构
Stable Diffusion 稳定扩散
稳定的扩散架构