您的当前位置:首页正文

【扩散模型学习1】Diffusion Model概念讲解

2024-11-23 来源:个人技术集锦

参考学习资料:

相关论文&论文链接:

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. 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)

2. 文字引导生成图片的diffusion model(Text-to-Image)

2.1 基本工作原理

如图7所示,输入的图片+文字叙述不断去除噪声得到最终清晰的图片

2.2 denoise模块结构

如图8所示,多了一个额外的文字输入

图8 denoise模块

2.3 如何训练

如图9所示,加了一个描述

图9 训练noise predicter

3. DDPM(Denoising Diffusion Probabilistic Models)

原理如1.和2.所述

4. 常见影像生成模型

4.1. 基本架构

图10 Stable Diffusion 的三个模块
​​​​​​

如图10所示,stable diffusion由三个基本模块组成:

①text encoder:把文字叙述变为向量

②generation Model:通常用diffusion model作为generation model(用别的也可以),输入一个noise+文字生成的向量 产生一个 中间产物(是图片被压缩的版本,可以是人看得懂的小的、模糊的图片,也可以是人根本看不到的东西)

③decoder:从中间产物得到清晰的图片

通常三个模块分开训练,然后再组合起来

4.1.1. 文字的encoder

输入:文字

输出:文字的向量

图14(a) Imagen中的encoder实验结果
(b) Imagen中的diffusion model的实验结果
T5是encoder,用两个指标来验证好坏

4.1.1.1. 指标介绍

FID越小越好,CLIP越大越好

Frechet Inception Distance(FID),如图15所示:

  • https://arxiv.org/abs/1706.08500
  • CNN是一个用来分类的训练好的网络
  • 计算生成的图(蓝点)和真实的图(红点)距离,距离越小,FID越小,说明效果越好
  • 需要大量的图片才能算出比较准确的FID
图15 FID原理

Contrastive Language-Image Pre-Training(CLIP),如图16所示:

  • https://arxiv.org/abs/2103.00020
  • 是400个million的image-text pairs训练出来的模型
  • text encoder:读取文字作为输入产生一个向量
  • image encoder:读取一张图片作为输入产生一个向量
  • 如果图片和文字是成对的,两个向量越近越好;如果不是成对的,向量距离越远越好
图16 CLIP原理

4.1.1.2. 实验结果

encoder对结果的影响很大,可以看出encoder越大,图片的品质越好

diffusion model的大小对模型结果影响不大

4.1.2. decoder

输入:中间产物

输出:最终清晰的图片

训练数据不需要是成对的文字-图片对数据,只需要大量的影像就可以训练出来

decoder的输入是中间产物

如图17所示,中间产物是小图时,可以通过对groundtruth进行downsampling处理的到的小图作为中间产物

图17 中间产物为小图

如图18所示,如果中间产物是latent representation

  • 可以训练一个auto-encoder将图片进行encoder得到latent representation,
  • 然后把latent representation作为输入经过一个decoder得到一张输出的图片,
  • 要让输入encoder的图片和decoder输出的图片越接近越好
  • 训练完成后直接把decoder拿出来用
图18 中间产物是latent representation

h和w分别是H和W做downsampling的结果,c是channel

4.1.3. generation model

输入:文字的向量+噪声

输出:中间产物

4.1.3.1. forward process

 如图19所示,不同于前面的介绍(前面是在图片上直接加噪),这里是:

  • 用encoder处理图片得到中间产物
  • 多次将noise加载中间产物上(小图/latent representation)
图19 再中间产物上逐步加噪
4.1.3.2. 训练noise predicter:
  • 如图20所示,输入是加了noise的中间产物、噪声程度和文字的向量
  • 输出是noise
图20 训练noise predicter的输入和输出
4.1.3.3. reverse process

如图21所示,对充满random noise的中间产物逐步进行denoise得到干净的中间产物作为decoder的输入

图21 reverse process

4.2. stable diffusion

图11 stable diffusion。

①encoder

②generation model采用diffusion model架构,x(T-1)部分生成中间产物z,中间产物是latent representation。

③decoder

4.3. DALL-E series

图12 dall-e系列模型

①encoder

②generation model:可以使用autoregressive model,也可以使用diffusion model,中间产物是latent representation

③decoder

4.4. Imagen

图13 Imagen架构

①encoder:用的是T5的encoder,如图14所示

②generation model:生成小图(中间产物是小图)

③decoder:也是diffusion的model,把小图生成大图

显示全文