Diffusion Model 笔记

diffusion model起源于 Denoising Diffusion Probabilistic Models (DDPM)文章:

Denoising Diffusion Probabilistic Models

We present high quality image synthesis results using diffusion probabilistic models, a class of latent variable models inspired by considerations from nonequilibrium thermodynamics. Our best...

快速理解Diffusion Model基本思想

Diffusion Model是一种生成模型(Generative Model)。从实用角度来说,比如我们希望找到一个完美的“图像”生成模型FF,那么向这个模型中输入一个随机噪声,便能输出一个非常真实的图像。【生成模型有很多,经典的包括GAN,VAE,详见引用1】

接下来以图像生成举例子:

DDPM的核心思想是找到一个模型FF,向FF输入包含噪声zz的数据xx,它便可以输出/预估出对应的噪声zz。这样当我们需要完成生成任务时,只需要向FF中输入一个相应的噪声xTx_T(这里假设噪声由数据x0x_0和噪声zz'组成,即xT=x0+zx_T = x_0+z'),模型FF便可以预估出噪声zz',那么基于x0=xTzx_0 = x_T-z',我们也就变相实现生成x0x_0的任务。这是理想情况下的一步实现,但是实际很难找到这个理想模型,因此DDPM定义了一个马尔科夫链,也就是说模型FF每次只需要预估出其中的一部分噪声,那么迭代足够多次(所以Diffusion Model这么慢)便可以去除足够多的噪声,进而获得最终的x0x_0。这一想法对应到下图:

图片来源:What are Diffusion Models? Lil'Log

x0xTx_0 \to x_T 的过程称之为“前向扩散过程(Forward diffusion Process)”,简单理解目标在于训练出模型FF

xTx0x_T \to x_0 的过程称之为“逆转扩散过程(Reverse diffusion Process)”,简单理解目标在于使用模型FF生成一张图。

当然以上是最简单的理解,实际上DDPM由严谨的公式推导组成,建议阅读引用1-3

注意:

快速理解Diffusion Model如何训练/推理

图片来源:DDPM原文

前向扩散过程怎么实现:

输入:由 真实图片x0x_0、噪声ϵ\epsilon、迭代次数tt (决定了噪声强度)共同决定的噪声图xx'

图片来源:The Illustrated Stable Diffusion – Jay Alammar – Visualizing machine learning one concept at a time. (jalammar.github.io)

输出:预估噪声ϵ\epsilon '

图片来源:The Illustrated Stable Diffusion – Jay Alammar – Visualizing machine learning one concept at a time. (jalammar.github.io)

如何实现一次逆转扩散过程:

输入:噪声ϵ\epsilon、迭代次数tt (决定了噪声强度)共同决定的噪声图xx's

输出:tt 时刻下的复原图

图片来源:The Illustrated Stable Diffusion – Jay Alammar – Visualizing machine learning one concept at a time. (jalammar.github.io)

为了得到理想的生成图,逆转扩散过程需要进行多次

图片来源:The Illustrated Stable Diffusion – Jay Alammar – Visualizing machine learning one concept at a time. (jalammar.github.io)

stable difussion的实现

Diffusion Model是不可控的,用户不能决定生成什么,因此stable difussion的目标就是实现一个text-to-image model,也就是文本生成图像

普通的diffusion model架构可以理解为:

图片来源:The Illustrated Stable Diffusion – Jay Alammar – Visualizing machine learning one concept at a time. (jalammar.github.io)

首先需要一个预训练模型将文本处理成text embedding,然后将text embedding嵌入到上述模型中(基于注意力机制)

图片来源:The Illustrated Stable Diffusion – Jay Alammar – Visualizing machine learning one concept at a time. (jalammar.github.io)

Stable diffussion来源于latent diffusion model (LDM),如下图(其实就是上图的复杂版本):

High-Resolution Image Synthesis with Latent Diffusion Models

By decomposing the image formation process into a sequential application of denoising autoencoders, diffusion models (DMs) achieve state-of-the-art synthesis results on image data and beyond....

引用

  1. What are Diffusion Models? | Lil'Log (lilianweng.github.io)
  2. 中文公式推导:什么是Diffusion模型? - wrong.wang
  3. 代码step by step:原理+代码:Diffusion Model 直观理解 - 知乎 (zhihu.com)
  4. 由浅入深了解Diffusion Model - 知乎 (zhihu.com)
  5. Diffusion Models:生成扩散模型 - 知乎 (zhihu.com)