一、基本概括
1.1 概念讲解
1. Diffusion Model是一种生成模型,通过连续添加高斯噪声来破坏训练数据,然后学习反转的去噪过程来恢复数据。它分为正向的扩散过程和反向的逆扩散过程。正向扩散过程是往图片上加噪声的过程,即从无到有地添加噪声,直到得到纯噪声图片。反向扩散过程则是通过学习如何从噪声图片恢复到原始图片。
2. 正向过程:首先,对于一张原始图片
X
0
X_0
X0,我们给
X
0
X_0
X0 图片添加高斯噪声,图片由
X
0
X_0
X0 变为
X
1
X_1
X1。接着我们会在
X
1
X_1
X1 的基础上再添加高斯噪声得到
X
2
X_2
X2。重复上述添加高斯噪声步骤,直到图片变成
X
n
X_n
Xn。由于添加了足够多的高斯噪声,现在的
X
n
X_n
Xn 近似服从高斯分布(又称正态分布)。
注意:(1) 这里必须要加高斯噪声,因为高斯噪声服从高斯分布,后面的一些运算需要用到高斯分布的一些特性。(2) 每步添加高斯噪声的量是变化的,且后一步比前一步添加的高斯噪声更多。
3. 逆向过程:首先,我们会随机生成一个服从高斯分布的噪声图片,然后一步一步的减少噪声直到生成预期图片。
1.2 Denoise模块
去噪过程不是说由一张图片生成另一张图片,而是在一张高噪声图片的基础上,减掉一个噪声图片从而得到另一张低噪声图片。
二、Stable Diffusion
2.1 概念讲解
1. 通过上面所述我们可得:当扩散步数和图像很大时,这种纯扩散模型会非常慢。为了解决这个问题,Stable Diffusion 应运而生。Stable Diffusion是一个文本到图像的潜在扩散模型。顾名思义,Stable Diffusion 发生在潜在空间中,这就是它比纯扩散模型更快的原因。
2. Stable Diffusion第一步会将文本转换成向量;第二步会产生一个随机潜在噪声作为输入和文本转换后的向量产生一个 “中间产物”;第三步通过 “中间产物” 还原成原始图片。通常三个模块分开训练,最后组合在一起。
论文中的Stable Diffusion结构图如下图所示:
3. 如下图谷歌的由文本生成图片的模型也是大同小异。
4. 第三步处理的 “中间产物” 可以是小图,也可以是图像潜在表示。
5. Stable Diffusion第二步生成 “中间产物” 过程类似于Diffusion Model中Noise Predicter产生 “中间产物” 的过程。
2.2 FID
在扩散模型中,FID(Frechet Inception Distance)是一种用于评估生成图像质量的度量标准。它衡量的是生成图像与真实图像之间的距离,其值越小代表生成的图像质量越高。FID的计算方法包括提取真实图像和生成图像的特征向量,并计算二者的Frechet距离。
2.3 CLIP
CLIP(Contrastive Language–Image Pre-training)是一种多模态学习框架,旨在将语言和图像信息结合起来进行预训练。CLIP通过对比图像和文本的embedding来衡量两者之间的相似性,从而实现了对图像和文本的匹配。在扩散模型中,CLIP可以作为打通文本和图像的桥梁的核心模块,用于控制图像生成的过程。