【深度学习】Diffusion模型
Diffusion基础理论入门
方向:ddpm ==》 ddim 论文
公式推导:科学空间-苏剑林
Diffusion Models
视频:唐宇迪——Diffusion
1 t时刻,给图片1增加高斯分布噪声为图片2
2 使用噪声预测模型,输入为t时刻,输出为噪声分布,标签为步骤1中产生的高斯分布噪声
3 将时刻t和图片2作为预测模型(UNet)输入,t-1时刻的图片作为预测模型输出
4 推理时,使用随机(h,w,3)的高斯分布和时刻t(=2000)作为输入,输入为t-1时刻的图片;重复上述步骤2000次,即t-0时刻为生成图片
Latent Diffusion ==》Stable diffusion
Latent Diffusion 论文:https://arxiv.org/abs/2112.10752
Stable diffusion由Stability AI 推出,基于Latent Diffusion制作,无论文。
Code: https://github.com/CompVis/latent-diffusion
原理
PPT1_Math_Reading_Group_Stable_Diffusion.pdf
视频讲解(建议看下面的视频讲解,文章中的图片来源于【2】Lightning AI):
【1】试图做一个正常讲解Latent / Stable Diffusion的成年人
【2】Youtube_Lightning AI——Stable Diffusion Explained
总体训练流程
1 使用VAE模型的Encoder部分对图片进行编码,即生成特征图片1(其符合正太分布?)
VAE模型:下图源于VAE(Variational Autoencoder)简单推导及理解
2 在 t 时刻对特征图片1添加噪声
3 使用CLIP模型对条件信息进行处理,特征图片中信息作为q 文本或图片信息(condition)作为k和v
4 将特征图片2与条件信息再进行cross attention处理输入去噪UNet网络,重复本次操作 t-1次
5 将处理后的图片输入VAE模型的Decoder部分,生成原始图片
推理阶段
1 使用CLIP编码条件信息,并生成tN 高斯分布图片A
2 将未加条件信息和加了条件信息的图片输入 UNet网络,输出两张噪声编码图片B C
3 将图片B和C进行信息整合,更新Attention UNet的输入,重复上述2, 3步骤直到 i-1=0
整体架构
详细
UNet网络
1 使用ResNet和Spatial Transformer替换卷积和Relu激活作为layer结构
ResNet模块细节
加噪过程?
Cross Attention机制
QKV来源于不同的特征,Latent Diffusion中Q来源于图片,KV来源于conditions
各模块应用细节
- Number of Resnet+SpatiaTransformers per blockdepends on application.
- Number of downsamplingand upsampling blocksdepends on application.
- Timestep embedding enters all Resnets.
- Context embedding enters all Spatial Transformers.
训练
VAE
VAE – Reparameterization Trick
self-attention
训练VAE
数据集:LAION-5B