参考学习资料:
相关论文&论文链接:
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
输入一张充满噪声的图——denoise——输出一张noise少的图——denoise——输出一张noise更少的图——denoise——……——输出清晰的图片(如图1所示)
如图3所示:
①Noise Predicter:用来预测输入的图片里面的noise长什么样,输出一张Noise的图
②输入的图片 - Noise图 = 输出denoise之后的结果
思考:如图4所示,如何搞groundtruth???
创造groundtruth:
如图5所示,清晰的图像——加噪声——有噪声的图像——加噪声——噪声更多的图像——加噪声——……——含很多噪声的图像
以上过程称为forward process/diffusion process
如图7所示,输入的图片+文字叙述不断去除噪声得到最终清晰的图片
如图8所示,多了一个额外的文字输入
如图9所示,加了一个描述
原理如1.和2.所述
如图10所示,stable diffusion由三个基本模块组成:
①text encoder:把文字叙述变为向量
②generation Model:通常用diffusion model作为generation model(用别的也可以),输入一个noise+文字生成的向量 产生一个 中间产物(是图片被压缩的版本,可以是人看得懂的小的、模糊的图片,也可以是人根本看不到的东西)
③decoder:从中间产物得到清晰的图片
通常三个模块分开训练,然后再组合起来
输入:文字
输出:文字的向量
FID越小越好,CLIP越大越好
Frechet Inception Distance(FID),如图15所示:
Contrastive Language-Image Pre-Training(CLIP),如图16所示:
encoder对结果的影响很大,可以看出encoder越大,图片的品质越好
diffusion model的大小对模型结果影响不大
输入:中间产物
输出:最终清晰的图片
训练数据不需要是成对的文字-图片对数据,只需要大量的影像就可以训练出来
decoder的输入是中间产物
如图17所示,中间产物是小图时,可以通过对groundtruth进行downsampling处理的到的小图作为中间产物
如图18所示,如果中间产物是latent representation,
h和w分别是H和W做downsampling的结果,c是channel
输入:文字的向量+噪声
输出:中间产物
如图19所示,不同于前面的介绍(前面是在图片上直接加噪),这里是:
如图21所示,对充满random noise的中间产物逐步进行denoise得到干净的中间产物作为decoder的输入
①encoder
②generation model采用diffusion model架构,x(T-1)部分生成中间产物z,中间产物是latent representation。
③decoder
①encoder
②generation model:可以使用autoregressive model,也可以使用diffusion model,中间产物是latent representation
③decoder
①encoder:用的是T5的encoder,如图14所示
②generation model:生成小图(中间产物是小图)
③decoder:也是diffusion的model,把小图生成大图