Stable Diffusion原理

181 阅读10分钟

此篇文章,通过自己理解的逻辑,梳理出Stable Diffusion原理。

我的话术Stable Diffusion原理:

1、用户输入一段文字提示词,通过CLIP转化为向量
2、通过随机种子生成噪声图并转换为向量送入潜空间 (原图像压缩成的潜在空间矩阵,使用的是VAE技术,如果是文生图,随机潜在空间就是随机生成的,Stable Diffusion模型对512*512的RGB图像的潜空间为4x64x64,比图像像素空间小48倍。)
3、噪声预测器U-Net将噪声图像和文本提示词作为输入,并预测噪声值
4、从噪声图像中减去预测的噪声,得到新的噪声图像
5、重复步骤 3 和 4 直至特定采样次数。(这个特定采样次数就是设置的采样次数)
6、最后, VAE的解码器将潜空间的预测图像转回像素空间,得到最终图像。(VAE解码器过程)

1和2步骤是生成潜空间,也是噪声图,可以说成前向扩散后的图,但是压缩过的。3、4、5、6是反向扩散步骤。

引出Stable Diffusion

前向扩散(forward diffusion) :将噪声添加到训练图像中,逐渐转化为没有特点的噪声图像。(就像一滴墨水掉进了一杯水里。墨滴在水中扩散。几分钟后,它会随机分布在整个水中。你再也分不清它最初是落在中心还是边缘附近。)

反向扩散:将噪声图像恢复图像,从图像中连续减去预测的噪声。

为了将扩散过程逆过来,需要知道一张图被添加了多少噪声。这可以通过训练一个模型预测图上的噪声程度来实现noise predictor在SD中是由一个U-Net模型(一种全卷积神经网络)实现的。

U-Net模型如何进行训练如下:

  1. 选择一个训练图像,例如猫的照片。
  2. 生成随机噪声图像。
  3. 通过将此噪声图像添加到一定数量的步骤来损坏训练图像。
  4. 训练噪声预测器告诉我们添加了多少噪声。这是通过调整其权重并向其显示正确答案来完成的(底层原理需要再深究,我觉得没必要了)

噪声在每一步按顺序添加。噪声预测器估计每个步骤的总噪声加起来。训练后,我们有一个噪声预测器,能够估计添加到图像中的噪声。

怎么知道图像中添加了多少噪声。噪声预测器告诉我们添加了多少噪声,它是一个U-Net模型,它被称为Stable Diffusion中的噪声预测因子(noise predictor)。

前向扩散和反向扩散是在像素空间中的,仅仅做前向扩散和反向扩散,在计算上非常非常慢,尽管谷歌的Imagen和Open AI的DALL-E这样的扩散模型都在像素空间中,他们使用了一些技巧来使模型更快,但仍然不够,所以发展出了Stable Diffusion潜在空间扩散。 (我的理解是U-Net模型是Stable Diffusion潜在空间扩散模型的一个模型)

Stable Diffusion model(使用VAE技术压缩为潜在空间中的低维)

Stable Diffusion model:目的是解决速度,也是潜在扩散模型(Latent diffusion model)

潜在扩散模型(Latent diffusion model): 方法如下:将原图像压缩到潜空间,对比原像素空间,潜空间(latent space)小了 48 倍,所以计算快得多。它用的是变分自编码器(VAE)的技术实现图像潜空间压缩,这正是我们在使用Stable Diffusion时设置的VAE文件的内容

变分自编码器(Variational Autoencoder) :变分自编码器(VAE:Variational Autoencoder)神经网络由两部分组成:(1)编码器和(2)解码器。编码器将图像压缩为潜在空间中的低维表示。解码器从潜在空间恢复图像。

Stable Diffusion模型的潜空间为4x64x64,比图像像素空间小48倍。我们谈到的所有正向和反向扩散实际上是在潜在空间中完成的。因此,在训练过程中,它不会生成噪声图像,而是在潜在空间中生成随机张量(潜在噪声)。它不是用噪声破坏图像,而是用潜在噪声破坏图像在潜在空间中的表示。这样做的原因是它的速度要快得多,因为潜在空间更小。

Stable Diffusion是一种开源的深度学习模型。使用潜在扩散模型(Latent diffusion model) 来解决速度问题,在将原图像压缩到潜空间,用的是VAE技术。

通过Stable Diffusion model引出AI绘画程序Stable Diffusion 的原理。前向传播不涉及到噪声预测,只是加入噪声,然后再压缩。

什么是VAE文件?

VAE file用于Stable Diffusion v1中,以改善眼睛和面部。它们是经过进一步微调的VAE decoder,该模型可以绘制更精细的细节。

将图像压缩到潜在空间中确实会丢失信息,因为原始VAE无法恢复精细细节。取而代之的是,VAE解码器负责在解码的时候绘制精细的细节。

条件控制(Conditioning)

通过文本提示来控制出图,其目的是引导noise predictor,以便预测的噪声从图像中减掉后能得出我们想要的东西。

为什么潜在空间是可能的?

您可能想知道为什么VAE可以将图像压缩到更小的潜在空间而不会丢失信息。原因是,自然图像不是随机的。它们具有很高的规律性:面部遵循眼睛、鼻子、脸颊和嘴巴之间的特定空间关系。狗有 4 条腿,是一种特殊的形状。

换句话说,图像的高维性是伪影。自然图像可以很容易地压缩到更小的潜在空间中,而不会丢失任何信息。这在机器学习中被称为流形假设(manifold hypothesis)。

以下是Stable Diffusion中潜在反向扩散的工作原理。

  1. 生成随机潜在空间矩阵。(原图像压缩成的潜在空间矩阵,使用的是VAE技术,如果是文生图,随机潜在空间就是随机生成的,Stable Diffusion模型对512*512的RGB图像的潜空间为4x64x64,比图像像素空间小48倍。)

  2. 噪声预测器估计潜在矩阵的噪声。(噪声预测器 U-Net 将潜在噪声图像和文本提示作为输入,并预测潜在空间(4x64x64 张量)中的噪声。)

  3. 然后从原始潜空间矩阵中减去估计的噪声。 (通过噪音时间表来减去)

  4. 重复步骤 2 和 3 直至特定采样步骤。(需要设置采样步骤)

  5. VAE的解码器将潜空间矩阵转换为最终图像。(VAE解码器过程)

生成随机潜在空间矩阵:它不会生成噪声图像,而是在潜在空间中生成随机张量(潜在噪声)

几种生成图片的步骤

文生图 (Text-to-image)

第 1 步。Stable Diffusion在潜空间中生成随机张量。您可以通过设置随机数生成器的种子来控制此张量。如果将种子设置为某个值,您将始终获得相同的随机张量。这是你在潜在空间中的图像。但现在都是噪音。

第 2 步。噪声预测器 U-Net 将潜在噪声图像和文本提示作为输入,并预测噪声,也在潜在空间(4x64x64 张量)中。(通过提示词,比如狗,能得到特征,预测噪声)

第 3 步。从潜在图像中减去潜在噪声。这将成为您的新潜在图像。

步骤 2 和 3 重复一定数量的采样步骤,例如 20 次。 第 4 步。最后,VAE的解码器将潜在图像转换回像素空间。这是运行Stable Diffusion后获得的图像。

根据prompt随机生成一张图,就变成了图生图,举要根据提示词来控制输出图片,这就是条件。

Tokenizer先把提示中的每个词切分出来作为token。每个token会被转化为一个768维的embedding。随后embedding被送入噪声预测器

图生图 (Image-to-image)

第 1 步。输入图像被编码为潜在空间。

第 2 步。噪点被添加到潜在图像中。降噪强度控制添加的噪声量。如果为 0,则不添加噪声。如果为 1,则添加最大噪声量,以便潜在图像成为完整的随机张量。

第 3 步。噪声预测器 U-Net 将潜在噪声图像和文本提示作为输入,并预测潜在空间(4x64x64 张量)中的噪声。

第 4 步。从潜在图像中减去潜在噪声。这将成为您的新潜在图像。

步骤 3 和 4 重复一定数量的采样步骤,例如 20 次。 第5步。最后,VAE的解码器将潜在图像转换回像素空间。这是运行映像到映像后获得的图像。

图片修复(Depth-to-image)

第 1 步。输入图像被编码为潜在状态 (把图像转化为向量)

第 2 步。MiDaS(AI深度模型)估计输入图像的深度图。(生成的深度图是去掉颜色的图轮廓)

第 3 步。噪点被添加到潜在图像中。降噪强度控制添加的噪声量。如果降噪强度为 0,则不添加噪声。如果去噪强度为 1,则添加最大噪声,使潜在图像成为随机张量。

第 4 步。噪声预测器估计潜在空间的噪声,由文本提示和深度图调节。

第5 步 . 从潜在图像中减去潜在噪声。这将成为您的新潜在图像。

对采样步骤数重复步骤 4 和 5。 第 6 步。VAE的解码器对潜在图像进行解码。现在,您可以获得从深度到图像的最终图像。

文生图、图生图、图片修复生成区别

文生图 (Text-to-image) :潜在噪声图像是随机的张量;噪声预测器估计潜在空间的噪声,由文本提示调节。

图生图 (Image-to-image) :潜在噪声图像是输入图像加入噪声;噪声预测器估计潜在空间的噪声,由文本提示调节。

图片修复(Depth-to-image) :比图生图多了一步,潜在噪声图像是输入图像加入噪声;噪声预测器估计潜在空间的噪声,由文本提示和深度图调节。

估算出了噪声,就开始减去噪声,得到新的潜在图像(是矩阵),最后面对潜在图像解码得到最终图像。

其他

Hypernetwork是一种微调Stable Diffusion的技术,它通过干预交叉注意力网络来插入样式。

LoRA 模型修改交叉注意力模块的权重以更改样式。仅修改此模块就可以微调 Stabe Diffusion模型这一事实说明了该模块的重要性。

ControlNet 通过检测到的轮廓、人体姿势等来调节噪声预测器,并实现对图像生成的出色控制。

参考链接

全网最全讲解Stable Diffusion原理,小白也能看懂!速来!!!-CSDN博客