【深度学习】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
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ENDPGoh0-1678769503337)(diffusion.assets/image-20230308123930650.png)]](https://images2.imgbox.com/0c/48/5y5psPLe_o.png)
训练VAE
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s5e2SF2f-1678769503337)(diffusion.assets/image-20230308124113687.png)]](https://images2.imgbox.com/39/cf/lYIRyRYl_o.png)
数据集:LAION-5B