DDPM Diffusion模型训练和采样过程细节汇总

    • 算法回顾
    • 框架理解
      • DDPM
        • 训练过程
        • 采样过程
      • Text-guiled DDPM
        • 训练过程
        • 采样过程
      • Null-text guiled DDPM
        • 训练过程
        • 采样过程
    • 项目代码
      • 训练过程![在这里插入图片描述](https://img-blog.csdnimg.cn/f6213f8e584b4142b0c5a016cd23b63a.png)
      • 采样过程

算法回顾

DDPM的算法概述

我们从 Classifier-Free Diffusion Guidance 这篇文章开始。
classifier-free 引导的条件采样过程

在《Null-text Inversion for Editing Real Images using Guided Diffusion Models》 中,对Classifier-free guidance 形式化为:

简单的推断一下:
= ω ∗ ϵ θ ( z t , t , C ) + ϵ θ ( z t , t , ⊘ ) − ω ∗ ϵ θ ( z t , t , ⊘ ) \omega * \epsilon_{\theta}(z_t,t,C)+\epsilon_{\theta}(z_t,t,\oslash )-\omega * \epsilon_{\theta}(z_t,t,\oslash ) ωϵθ(zt,t,C)+ϵθ(zt,t,)ωϵθ(zt,t,)
= ω ∗ ( ϵ θ ( z t , t , C ) − ϵ θ ( z t , t , ⊘ ) ) + ϵ θ ( z t , t , ⊘ ) \omega *( \epsilon_{\theta}(z_t,t,C)-\epsilon_{\theta}(z_t,t,\oslash ))+\epsilon_{\theta}(z_t,t,\oslash ) ω(ϵθ(zt,t,C)ϵθ(zt,t,))+ϵθ(zt,t,)

相当于是在 ϵ θ ( z t , t , ⊘ ) \epsilon_{\theta}(z_t,t,\oslash ) ϵθ(zt,t,)的基础上,加强了在 ϵ θ ( z t , t , C ) − ϵ θ ( z t , t , ⊘ ) \epsilon_{\theta}(z_t,t,C)-\epsilon_{\theta}(z_t,t,\oslash ) ϵθ(zt,t,C)ϵθ(zt,t,)方向上的引导,可以结合下图来进行理解:

Classifier-Free Diffusion Guidance 中的这张图也表达相同的意思,模型增加分类器指导强度时发生的Inception score增加和样本多样性减少的简化表现。

框架理解

下面画图理解一下Diffuion Model 发展各个阶段的方法

DDPM

训练过程

采样过程

Text-guiled DDPM

训练过程

采样过程

Null-text guiled DDPM

训练过程

和 text guiled DDPM一致。

采样过程

项目代码

下面是论文《GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models》的代码逻辑进行梳理,code 链接:https://github.com/openai/glide-text2im/

训练过程

采样过程