Re4读论文 Denoising Diffusion Probabilistic Models

Denoising Diffusion Probabilistic Models
NeurlPS2020

Background

Markov Chain
  1. 离散时间
    • X n X_n Xn表示马尔可夫链在此时的状态
  2. 状态空间
    • 马尔科夫链所有的状态会构成一个集合 S = { 1 , . . . , m } S=\{1,...,m\} S={1,...,m}
  3. 转移概率
    • p i j = P ( X n + 1 = j ∣ X n = i ) p_{ij}= P(X_{n+1}=j|X_n=i) pij=P(Xn+1=jXn=i) ——条件概率
      P { X n + 1 = j ∣ X n = i , X n − 1 , . . . , X 0 = i 0 } = P ( X n + 1 = j ∣ X n = i ) = p i j P\{X_{n+1}=j|X_n=i,X_{n-1},...,X_0=i_0\}= P(X_{n+1}=j|X_n=i)=p_{ij} P{Xn+1=jXn=i,Xn1,...,X0=i0}=P(Xn+1=jXn=i)=pij
  • 下一个状态的概率分布只依赖于前一个状态
    状态转移图
    [ 0.2 0.2 0.6 0.2 0.1 0.7 0.1 0.3 0.6 ] \begin{bmatrix} 0.2&0.2&0.6\\ 0.2&0.1&0.7\\ 0.1&0.3&0.6\\ \end{bmatrix} 0.20.20.10.20.10.30.60.70.6
  • 阶级流动的例子:状态1是处于贫困水平,状态2是中产阶级,状态3是财富自由
    [ 0.7 0.2 0.1 0.3 0.5 0.2 0.2 0.4 0.4 ] \begin{bmatrix} 0.7&0.2&0.1\\ 0.3&0.5&0.2\\ 0.2&0.4&0.4\\ \end{bmatrix} 0.70.30.20.20.50.40.10.20.4
    • 假设爷爷处于贫困水平(状态1),那么父亲处于中产阶级(状态2),而你处于财富自由水平(状态3)的概率有多大?
      在这里插入图片描述
      P ( A ∣ B ) = P ( A B ) P ( B ) P(A|B)=\frac{P(AB)}{P(B)} P(AB)=P(B)P(AB)
    • 这是一个马尔科夫链,因此满足:
      在这里插入图片描述
    • 因此
      在这里插入图片描述
      p 12 p 23 = 0.2 ∗ 0.2 = 0.04 p_{12}p_{23}=0.2*0.2=0.04 p12p23=0.20.2=0.04
Diffusion Model
  • 白噪音经过逐步去噪变为清晰图片
    在这里插入图片描述
  • Diffusion model就是引用马尔可夫链,用于在扩散中缓慢加入随机噪声,然后通过学习逆扩散过程从噪声中构建所需的数据样本,引入噪声导致信息衰减,再通过去噪尝试还原原始数据,通过多次迭代,使模型在给定噪声输入的情况下学习生成新的图像
    在这里插入图片描述
  • 就像米开朗基罗的石头,图片已经在噪声之中,要做的是讲其分解掉
    在这里插入图片描述
  • Denoise内部通过输入噪音图片和步骤step,产生一张噪音图,即预测这张照片中噪音应该的样子,再用输入图片减去噪音图片,生成输出图
  • 一句话概括diffusion model,即存在一系列高斯噪声(T轮),将输入图片 x 0 x_0 x0 变为纯高斯噪声 x T x_T xT,而我们的模型则负责将
    x T x_T xT复原回图片 x 0 x_0 x0
Text-to-image
  • 通常整个框架包含三个部分:
    • Text Encoder
    • Generation Model:输入噪音和文字生成产物喂进,生成中间产物
    • Decoder:将图片压缩版本还原成照片
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

Forward Process

在这里插入图片描述

  • 前向过程为向图片加噪声,使得最后图片变为一个白噪音。
  • 反向过程为对高斯噪声进行去噪过程,通过去噪生成图片。
    在这里插入图片描述
  • 对图片进行逐步加噪声,从 x 0 x_0 x0逐渐变为 x T x_T xT
  • 公式表示:
    x t = a t x t − 1 + 1 − a t ϵ t − 1 x_t =\sqrt[]{a_t}x_{t-1}+\sqrt[]{1-a_t}\epsilon_{t-1} xt=at xt1+1at ϵt1
    • { a t } \{a_t\} {at}为很小的超参数,称为Noise schedule,逐渐减小
    • ϵ t − 1 ∼ N ( 0 , 1 ) \epsilon_{t-1}\sim N(0,1) ϵt1N(0,1)
  • 逐步进行迭代

Reverse Process

  • 反向过程就是通过估测噪声,多次迭代逐渐将被破坏的 x t x_t xt恢复成 x 0 x_0 x0
    x t − 1 = 1 a t − 1 − a t a t ϵ θ ( x t , t ) + σ t x_{t-1}=\frac{1}{\sqrt[]{a_t}}-\frac{\sqrt[]{1-a_t}}{\sqrt[]{a_t}}\epsilon_\theta(x_t,t)+\sigma_t xt1=at 1at 1at ϵθ(xt,t)+σt
    在这里插入图片描述
  • 去噪

Training(获得噪声估计模型)

在这里插入图片描述

  • Training:
    1:循环执行2-5
    2:sample一张干净的图片(一般用 x 0 x_0 x0表示一张干净的图,就是资料库里的图)
    3:从1到T中取一个整数作为t
    4:从平均值(mean)=0,方差(variance)=1的normal distribution中sample出ε,大小与image一致,是一张全是噪音的图片
    5: 红框内为干净图片和噪音图片混合生成的噪音,结合t,进行逼近 ϵ \epsilon ϵ,作为损失,进行梯度下降使其最小,以求得 a t ⃗ \vec{a_t} at
    在这里插入图片描述
    DDPM的关键就是训练噪声估计模型 ϵ θ ( x t , t ) \epsilon_\theta(x_t,t ) ϵθ(xt,t) ,用于估计真实的噪声 ϵ \epsilon ϵ

在这里插入图片描述

Sampling(生成图片)

在这里插入图片描述

  • Sampling:
    1:先从normal distribution中sample一张全是噪音的图像 x T x_T xT
    2:循环T次,Denoise
    3:从normal distribution中sample一张噪音图像z
    4:带入计算得到下一次循环的图像 x t − 1 x_{t-1} xt1 ε θ ε_θ εθ(…):预测生成的噪音图片; x t x_t xt:上一张图像
    5: 最后还要加入一个z

参考资料

  1. 如何理解马尔可夫链?
  2. Denoising Diffusion-based Generative Modeling:Foundations and Applications
  3. 怎么理解今年 CV 比较火的扩散模型(DDPM)?
  4. DDPM原理与代码剖析
  5. 扩散模型 - Diffusion Model【李宏毅2023】学习笔记 Part 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值