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

参考学习资料:扩散模型 - 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. Diffusion Model是如何运作的:

1.1. reverse process:

1.1.1. denoise模块

1.1.1.1. denoise模块介绍:

1.1.1.2. 如何训练noise predictor模块

1.2. Forward Process(Diffusion Process)

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

2.1 基本工作原理

2.2 denoise模块结构

2.3 如何训练

3. DDPM(Denoising Diffusion Probabilistic Models)

4. 常见影像生成模型

4.1. 基本架构

4.1.1. 文字的encoder

4.1.1.1. 指标介绍

4.1.1.2. 实验结果

4.1.2. decoder

4.1.3. generation model

4.1.3.1. forward process

4.1.3.2. 训练noise predicter:

4.1.3.3. reverse process

4.2. stable diffusion

4.3. DALL-E series

4.4. Imagen


1. Diffusion Model是如何运作的:

1.1. reverse process:

输入一张充满噪声的图——denoise——输出一张noise少的图——denoise——输出一张noise更少的图——denoise——……——输出清晰的图片(如图1所示)

图1 REVERSE PROCESS
  • 每张图的大小一致

1.1.1. denoise模块

  • denoise的次数是事先定好的,通常会有一个编号
  • 同一个denoise的model反复使用,但是输入不同,输入是图片+noise的严重程度(数字越大,noise越多),如图2所示
图2 denoise输入和输出
1.1.1.1. denoise模块介绍:
图3 denoise模块结构

如图3所示:

①Noise Predicter:用来预测输入的图片里面的noise长什么样,输出一张Noise的图

输入的图片 - Noise图  = 输出denoise之后的结果

1.1.1.2. 如何训练noise predictor模块

思考:如图4所示,如何搞groundtruth???

图4 noise predicter训练需要的groundtruth从何而来

创造groundtruth:

如图5所示,清晰的图像——加噪声——有噪声的图像——加噪声——噪声更多的图像——加噪声——……——含很多噪声的图像

以上过程称为forward process/diffusion process

图5 创造gt

1.2. Forward Process(Diffusion Process)

图6 Forward Process(Diffusion Process)

常见数据集:

HW6(70k) ImageNet(1M) LAION(5.85B,里面有各种语言的文字描述和图像数据)

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

2.1 基本工作原理

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

图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,把小图生成大图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值