Diffusion Model

Diffusion Model如何运作(DDPM)?

Reversed Process

第一步是生成一个和目标图片一模一样的噪声图像. 之后, 不断通过Denoise的模块(编号逐渐变小, 同一个Denoise model重复)去噪, 以得到图像.

请添加图片描述
上述过程称为Reversed Process, 类似雕塑的过程.

请添加图片描述

为了重复使用Denoise Model解决不同程度的去噪, 额外输入一些数据(严重程度,步骤代号).

请添加图片描述

监督信号

那么如何训练Noise Predictor? 即如何创建监督信号?

请添加图片描述
对原图不断加噪声得到噪声图像.

请添加图片描述

添加文本

请添加图片描述

请添加图片描述

关键算法

请添加图片描述

目前的Diffusion Model的结构

目前DM的基本结构

请添加图片描述
中间产物是小图或者Latent Representation.

目前常用的有DALL-E, Stable Diffusion, Imagen.

Text Encoder

请添加图片描述
对于文本编码器, 规模越大, 效果越好. Diffusion Model的规模对生成图像效果的影响不大.

FID

请添加图片描述
生成 生成图像和真实图像 的两组表征, 假设它们都符合高斯分布, 计算它们之间的Frechet Distance.

CLIP Score

请添加图片描述
计算 输入文本和生成图像的相似度.

Decoder

Decoder的训练不需要文本资料.

请添加图片描述
训练一个AutoEncoder.
请添加图片描述
做下采样, 得到训练数据.

DALL-E, Stable Diffusion是前者, Imagen是后者.

Generation Model

原本的DDPM中, Generation Model生成的是一张图像, 所以可以对图像加噪声制作训练数据. 但此时其生成的是中间产物, 那么又该作何处理?

自然而然的想法是把噪声加载中间产物上. 中间产物通过下采样或者Encoder得到.

之后和一般的Diffusion Model是完全一样的.

请添加图片描述

推理过程为:

请添加图片描述

Midjourney的生成过程是由模糊到清晰, 这是因为每一个Denoise的输出都被Decoder解码呈现.

一些疑问

  1. 为什么之前的Diffusion Model没有解码器?
  2. 之前的文本是以何种形式输入给Noise Predictor的?
  3. 去噪的Mask是如何得到的?

Diffusion Model背后的数学原理

关键算法解析

训练Noise Predictor

请添加图片描述

t越大, a ˉ t \bar{a}_t aˉt越小, 即增加的噪声越大, 这些数据是预定义的.

请添加图片描述
根据有噪声的图预测混入的噪声是什么样(这边噪声符号写错了).

请添加图片描述
实际上是直接混入噪声, 噪声大小有区分, 并不是一点一点加入噪声的.

关键问题:为什么是一步到位生成训练数据而不是逐步的?

产生图的过程

请添加图片描述

关键问题: 为什么还要在降噪的图像上增加噪声?

影像生成模型本质上的共同目标

请添加图片描述
原始分布通过生成模型得到目标分布, 目标分布应该与真实分布类似.

目前的生成模型往往要求文字的影响:

请添加图片描述

加上文字的condition本质上没有改变什么, 所以后续的推导不包括文本.

如何保证目标分布和真实分布一致呢?

请添加图片描述

  1. 从真实分布采样一些样本;
  2. 计算这些样本在目标分布中的概率;
  3. 训练目标是找到一组参数, 让这一概率大.

请添加图片描述
最大化似然等价于最小化KL散度.

最大化似然函数

VAE是如何计算的?

请添加图片描述

请添加图片描述
VAE实际上算出的是 P ( x ) P(x) P(x)的下界.

DDPM是如何计算的?

请添加图片描述
对每一个变量做积分.

请添加图片描述
q q q的分布在VAE中时Encoder的输出的分布, 在Diffusion Model中是Forward Process, 即由原图生成噪声图像的分布.

如何最大化DDPM的下界?

请添加图片描述

通过上述的计算, 得到我们真正要优化的目标.

请添加图片描述
中间项和模型的参数无关, 可以直接无视. 因此, 我们只考虑第一项和第三项.

如何最小化第三部分中的KL散度?

计算前者分布的均值和方差:
请添加图片描述

请添加图片描述
仍然是一个高斯分布, 均值和方差如上.

请添加图片描述
P P P的均值是可调整的, 方差是不可以的. 所以为了让这两个分布接近, 调整两个分布的均值即可.

请添加图片描述
请添加图片描述

我们对目标进行化简:

请添加图片描述

请添加图片描述
最大化似然函数 -> 最大化下界函数 - > 最小化KL散度 -> 最小化范数(每一时间步的输出和分布q的均值接近) -> 最小化范数(预测噪声和真实噪声接近)

请添加图片描述

请添加图片描述

在文本生成, 语言合成都需要加入一点noise才会得到比较好的效果.

怎么计算 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1)(为什么生成训练数据是一步到位的)?

我们已经知道输出的计算公式, 其中噪声是通过denoise模块得到的, 那么我们如何训练denoise模块呢?

公式中 α \alpha α的产生也与该分布有关.

请添加图片描述
q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0)看似是渐进的过程, 实际上是可以直接算出来的.

上图中的 β t \beta_t βt是预定义的参数. 控制不同时间步的噪声和图像的加权. t t t的值越大, 噪声的权重会越大.
请添加图片描述

请添加图片描述

采样两次得到的分布等同于采样一次, 这是根据独立的正态分布的可加性.

此时, x 0 x_0 x0的系数已经确定, 为了控制噪声和输入图像的权重, 因此才得到如此的噪声系数.

请添加图片描述

如此一来, 采样一次即可.

Stable Diffusion

Motivation

扩散过程在像素空间上进行, 这会带来极大地计算开销. 本文的目的是将扩散过程带到隐空间进行, 在降低计算开销的同时维护模型的性能.

Method

Diffusion Models: L D M = E x , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( x t , t ) ∥ 2 2 ] L_{DM}=\mathbb{E}_{x,\epsilon\sim N(0,1),t}[\|\epsilon-\epsilon_\theta(x_t, t)\|^2_2] LDM=Ex,ϵN(0,1),t[ϵϵθ(xt,t)22]

Latent Diffusion Model: L L D M = E ε ( x ) , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( z t , t ) ∥ 2 2 ] L_{LDM}=\mathbb{E}_{\varepsilon(x),\epsilon\sim N(0,1),t}[\|\epsilon-\epsilon_\theta(z_t, t)\|^2_2] LLDM=Eε(x),ϵN(0,1),t[ϵϵθ(zt,t)22]

请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

右边是我女神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值