10分钟读懂Diffusion:图解Diffusion扩散模型
10分钟读懂Diffusion:图解Diffusion扩散模型
Diffusion模型是当前图像生成领域的重要技术之一,其通过在图像中逐步添加噪声并学习去除噪声的过程来生成高质量的图像。本文将从整体结构、CLIP模型生成文字embedding、UNet网络使用文字embedding等多个维度详细解析Diffusion模型的工作机制,并通过图解方式帮助读者理解复杂的技术概念。
1 Diffusion文字生成图片——整体结构
1.1 整个生成过程
Diffusion模型在生成图像时,主要通过文字生成图片。其输入包括随机高斯噪声、时间步长(time step)以及文字对应的embedding。文字embedding是通过CLIP模型生成的,与随机噪声embedding和time step embedding一起作为Diffusion模型的输入,最终生成理想的图片。
1.2 使用CLIP模型生成输入文字embedding
CLIP模型在图像及其描述的数据集上进行训练。通过分别使用图像和文本编码器对它们进行编码,并使用余弦相似度来衡量匹配程度。在训练过程中,通过计算loss并更新模型参数,最终得到文字的embedding和图片的embedding。
1.3 UNet网络中如何使用文字embedding
在UNet网络中,文字embedding是通过在每个ResNet之间添加Attention机制来使用的。具体来说,Attention机制的一端输入便是文字embedding。
2 扩散模型Diffusion
2.1 扩散模型Duffison的训练过程
Diffusion模型的训练可以分为两个部分:前向扩散过程(Forward Diffusion Process)和反向扩散过程(Reverse Diffusion Process)。
2.2 前向扩散过程
前向扩散过程是不断往输入图片中添加高斯噪声。
2.3 反向扩散过程
反向扩散过程是将噪声不断还原为原始图片。
2.4 训练过程
在每一轮的训练过程中,主要包括以下步骤:
- 每一个训练样本选择一个随机时间步长 t
- 将 time step t 对应的高斯噪声应用到图片中
- 将 time step 转化为对应 embedding
2.5 从高斯噪声中生成原始图片(反向扩散过程)
通过反向扩散过程,可以从高斯噪声逐步生成清晰的图片。
补充说明
补充1:UNet模型结构
UNet模型结构包含Downsample、Middle block和Upsample三个部分,其中都包含了ResNet残差网络。
补充2:Diffusion模型的缺点及改进版——Stable Diffusion
Diffusion模型的缺点是在反向扩散过程中需要把完整尺寸的图片输入到U-Net,这使得当图片尺寸以及time step t足够大时,Diffusion会变得非常慢。Stable Diffusion就是为了解决这一问题而提出的改进版本。
补充3:UNet网络同时输入文字embedding
在Diffusion原理介绍中,为了简化说明,通常只使用time embedding和随机高斯噪声,但实际应用中还需要加入文字embedding,具体方法可以参考前面的1.3节。
补充4:DDPM为什么要引入时间步长t
引入时间步长t是为了模拟一个随时间逐渐增强的扰动过程。每个时间步长t代表一个扰动过程,从初始状态开始,通过多次应用噪声来逐渐改变图像的分布。此外,由于UNet都是共享参数的,time embedding可以帮助模型在不同阶段学习到不同层次的特征信息。
补充5:为什么训练过程中每一次引入的是随机时间步长t
在训练过程中,如果时间步长是递增的,会导致模型过多关注较早的时间步长而忽略较晚的时间步长信息。因此,采用随机时间步长可以更均衡地优化模型在各个时间步长的表现。
参考文献
[1] https://medium.com/@steinsfu/stable-diffusion-clearly-explained-ed008044e07e
[2] http://jalammar.github.io/illustrated-stable-diffusion/
[3] https://pub.towardsai.net/getting-started-with-stable-diffusion-f343639e4931
[4] https://zhuanlan.zhihu.com/p/597924053
[5] https://zhuanlan.zhihu.com/p/590840909?
[6] https://arxiv.org/abs/2103.00020