参考学习资料:扩散模型 - Diffusion Model【李宏毅2023】_哔哩哔哩_bilibili
相关论文&论文链接:
Denoising Diffusion Probabilistic Models (DDPM):https://arxiv.org/abs/2006.11239
Stable Diffusion:https://arxiv.org/abs/2112.10752
DALL-E series:https//arxiv.org/abs/2204.06125、https//arxiv.org/abs/2102.12092
Imagen:https://imagen.research.google/、https://arxiv.prg/abs/2205.11487
目录
1.1.1.2. 如何训练noise predictor模块
1.2. Forward Process(Diffusion Process)
2. 文字引导生成图片的diffusion model(Text-to-Image)
3. DDPM(Denoising Diffusion Probabilistic Models)
1. Diffusion Model是如何运作的:
1.1. reverse process:
输入一张充满噪声的图——denoise——输出一张noise少的图——denoise——输出一张noise更少的图——denoise——……——输出清晰的图片(如图1所示)
- 每张图的大小一致
1.1.1. denoise模块
- denoise的次数是事先定好的,通常会有一个编号
- 同一个denoise的model反复使用,但是输入不同,输入是图片+noise的严重程度(数字越大,noise越多),如图2所示
1.1.1.1. denoise模块介绍:
如图3所示:
①Noise Predicter:用来预测输入的图片里面的noise长什么样,输出一张Noise的图
②输入的图片 - Noise图 = 输出denoise之后的结果
1.1.1.2. 如何训练noise predictor模块
思考:如图4所示,如何搞groundtruth???
创造groundtruth:
如图5所示,清晰的图像——加噪声——有噪声的图像——加噪声——噪声更多的图像——加噪声——……——含很多噪声的图像
以上过程称为forward process/diffusion process
1.2. Forward Process(Diffusion Process)
常见数据集:
HW6(70k) ImageNet(1M) LAION(5.85B,里面有各种语言的文字描述和图像数据)
2. 文字引导生成图片的diffusion model(Text-to-Image)
2.1 基本工作原理
如图7所示,输入的图片+文字叙述不断去除噪声得到最终清晰的图片
2.2 denoise模块结构
如图8所示,多了一个额外的文字输入
2.3 如何训练
如图9所示,加了一个描述
3. DDPM(Denoising Diffusion Probabilistic Models)
原理如1.和2.所述
4. 常见影像生成模型
4.1. 基本架构
如图10所示,stable diffusion由三个基本模块组成:
①text encoder:把文字叙述变为向量
②generation Model:通常用diffusion model作为generation model(用别的也可以),输入一个noise+文字生成的向量 产生一个 中间产物(是图片被压缩的版本,可以是人看得懂的小的、模糊的图片,也可以是人根本看不到的东西)
③decoder:从中间产物得到清晰的图片
通常三个模块分开训练,然后再组合起来
4.1.1. 文字的encoder
输入:文字
输出:文字的向量
4.1.1.1. 指标介绍
FID越小越好,CLIP越大越好
Frechet Inception Distance(FID),如图15所示:
- https://arxiv.org/abs/1706.08500
- CNN是一个用来分类的训练好的网络
- 计算生成的图(蓝点)和真实的图(红点)距离,距离越小,FID越小,说明效果越好
- 需要大量的图片才能算出比较准确的FID
Contrastive Language-Image Pre-Training(CLIP),如图16所示:
- https://arxiv.org/abs/2103.00020
- 是400个million的image-text pairs训练出来的模型
- text encoder:读取文字作为输入产生一个向量
- image encoder:读取一张图片作为输入产生一个向量
- 如果图片和文字是成对的,两个向量越近越好;如果不是成对的,向量距离越远越好
4.1.1.2. 实验结果
encoder对结果的影响很大,可以看出encoder越大,图片的品质越好
diffusion model的大小对模型结果影响不大
4.1.2. decoder
输入:中间产物
输出:最终清晰的图片
训练数据不需要是成对的文字-图片对数据,只需要大量的影像就可以训练出来
decoder的输入是中间产物
如图17所示,中间产物是小图时,可以通过对groundtruth进行downsampling处理的到的小图作为中间产物
如图18所示,如果中间产物是latent representation,
- 可以训练一个auto-encoder将图片进行encoder得到latent representation,
- 然后把latent representation作为输入经过一个decoder得到一张输出的图片,
- 要让输入encoder的图片和decoder输出的图片越接近越好
- 训练完成后直接把decoder拿出来用
h和w分别是H和W做downsampling的结果,c是channel
4.1.3. generation model
输入:文字的向量+噪声
输出:中间产物
4.1.3.1. forward process
如图19所示,不同于前面的介绍(前面是在图片上直接加噪),这里是:
- 用encoder处理图片得到中间产物
- 多次将noise加载中间产物上(小图/latent representation)
4.1.3.2. 训练noise predicter:
- 如图20所示,输入是加了noise的中间产物、噪声程度和文字的向量
- 输出是noise
4.1.3.3. reverse process
如图21所示,对充满random noise的中间产物逐步进行denoise得到干净的中间产物作为decoder的输入
4.2. stable diffusion
①encoder
②generation model采用diffusion model架构,x(T-1)部分生成中间产物z,中间产物是latent representation。
③decoder
4.3. DALL-E series
①encoder
②generation model:可以使用autoregressive model,也可以使用diffusion model,中间产物是latent representation
③decoder
4.4. Imagen
①encoder:用的是T5的encoder,如图14所示
②generation model:生成小图(中间产物是小图)
③decoder:也是diffusion的model,把小图生成大图