扩散模型原理推导 | 豆包 MarsCode AI 刷题

133 阅读3分钟

能够以无条件或输入条件的方式合成视觉内容

参考视频:www.bilibili.com/video/BV18s…

  • 核心思想:学习逆转逐渐向图像添加噪声的过程,从而能够从复杂分布中生成高质量的样本

Framework

Text Encoder

  • input:一段自然语言描述 text
  • output:向量表示 [...]

评估指标

  • FID

Fréchet Inception Distance,是评估生成模型性能的指标。通过比较生成样本的特征分布与真实样本的特征分布之间的差异来衡量模型的质量。FID 的核心思想是将图像映射到一个特征空间,然后在该特征空间中对样本进行高斯分布的拟合,最后通过计算两个分布(一个针对真实样本,一个针对生成样本)之间的 Fréchet 距离来评估模型

论文:arxiv.org/abs/1706.08…

  • CLIP 评估

通过训练一个图像编码器和一个文本编码器,使得模型能够将图像和相关联的文本映射到同一个特征空间,并通过对比损失函数(contrastive loss)来优化模型参数,使得正样本(即匹配的图像-文本对)的特征表示更接近,而负样本(即不匹配的图像-文本对)的特征表示更远离。

论文:arxiv.org/abs/2103.00…

Extra Decoder

Decoder 可以独立于 Text Encoder 进行训练,因为他的训练数据只需要图片,而不需要文本信息。

  • input:图片的潜在表示 Latent Representation
  • output:还原后的图像 generation image

实际训练过程需要训练一个 VAE(Encoder + Decoder)

评估指标

Generation Module/Multi Denoise Module

思想来源

通过一个 Noise Predicter 网络找到当前图片的 noise,在用原图片删去当前图片的 noise,获得一个新图片

  • input:文字描述、原始图片、剩余扩散次数
  • output:去噪后的图片

Noise Predicter

  • 实际训练/推理过程:Reverse Process
    • input:图片、剩余扩散次数
    • output/label:该图片的噪声图片
  • label 制作过程:Forward Process/Diffusion Process

注:最常用的训练数据集:laion.ai/blog/

实际结构

image.png

Noise Predicter

  • 实际训练/推理过程:Reverse Process
    • input:图片的潜在表示(Latent Representation)、图片经过 encoder 后得到的向量、剩余扩散次数
    • output:去噪后图片的潜在表示(Latent Representation)

  • label 制作过程

训练数学原理

假设 x0x_0 代表干净的图片(实际是要生成的图片)、ϵ(0,I)\epsilon\in{(0,I)}代表噪音(大小与 x0x_0 相同,t{1,...,T}t\in\{1,...,T\}是剩余扩散的次数,则

θϵϵθ(αtx0+1αtϵ,t)2\triangledown_{\theta}||\epsilon-\epsilon_{\theta}(\sqrt{\overline{\alpha}_t}x_0+\sqrt{1-\overline{\alpha}}_t\epsilon,t)||^2

  1. A=αx0+1αtϵA=\sqrt{\overline{\alpha}}x_0+\sqrt{1-\overline{\alpha}_t}\epsilon:Noise Image,通过 Forward Process 方法生成的

  1. B=ϵθ(A,t)B=\epsilon_{\theta}(A,t):Noise Predictor,根据原始图像、扩散次数和一组超参数α\alpha识别出该图片中的的噪音图像
  2. ϵB2||\epsilon-B||^2:Denoise Module,原始图像去除噪音后的图像

生成推理部分数学原理

假设 xT(0,I)x_T\in{(0,I)}代表完全随机生产的初始图像,t{T,...,1}t\in\{T,...,1\}是剩余扩散的次数,则

xt1=1αt(xt1αt1αtϵθ(xt,t))+σtzx_{t-1}=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\overline{\alpha_t}}}\epsilon_{\theta}(x_t,t))+\sigma_t{z}

  1. A=ϵθ(xt,t))A=\epsilon_{\theta}(x_t,t)):Noise Predictor 生成找出的噪音
  2. B=1αt(xt1αt1αtC)B=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\overline{\alpha_t}}}C):Denoise Module 经过第 t 轮扩散还原出的图片
  3. xt1=B+σtzx_{t-1}=B+\sigma_t{z},又加了一个噪音???暗藏玄机!

评估指标

  • 共同目标:让生成的图像和真实的图像接近

  • Maximum Likelihood Estimation == Minimize KL Divergence

假设输入条件 x,经过模型生成的图像为 Pθ(x)P_{\theta}(x),实际收集到对应的图像为Pdata(x)P_{data}(x),则

经典应用

Stable Diffusion

arxiv.org/abs/2112.10…

DALLE series

version1:arxiv.org/abs/2102.12…

version2:arxiv.org/abs/2204.06…

Imagen

官网:imagen.research.google/

论文:arxiv.org/abs/2205.11…

VAE vs Diffusion

VAE vs DDPM low bound