Denoising Diffusion Probabilistic Models

扩散定义

假设原图为$x_0$,每次从高斯噪声分布中采样出噪声添加到图片上,得到$x_t$。

  1. 高斯分布的性质:如果$x\sim\mathcal{N}(\mu_X,\sigma_X^2),y\sim\mathcal{N}(\mu_Y,\sigma_Y^2),Z=X+Y$,则有$Z\sim\mathcal{N}(\mu_X+\mu_Y,\sigma_X^2+\sigma_Y^2)$

  2. 重参数化:要对高斯分布$\mathcal{N}(\mu,\sigma^2I)$进行采样,可以将一个正态分布引导上去,即

此处$\epsilon_{t}\sim\mathcal{N}(0,1)$,加噪过程满足马尔可夫过程,所以使用递归推导可得

而去噪的分布$q(x_{t-1}|x_t)$是无法直接计算的,因此目标为:训练一个模型$\theta$,拟合对应的分布$p_{\theta}(x_{t-1}|x_t)$。

目标函数

训练过程

$q(x_{t-1}|x_t,x_0)$

训练步骤:

  1. 随机选取时间步$t\in\{0, 1,\dots,1000\}$并进行编码为嵌入向量$e(t)$。
  2. 将噪声添加到图片上,得到$x_{t}$。
  3. 将加噪后的图片$x_t$与时间步的embedding作为UNet的输入,UNet输出预测的噪声,使用L2Loss计算损失函数。

采样过程(Sampling)

采样步骤:

  1. 将$x_{t}$和时间步$t$对应的嵌入向量$e(t)$输入到UNet,得到预测噪声$\epsilon_{\theta}(x_t,t)$。
  2. 根据去噪公式得到$x_{t-1}$。
  3. 重复上述步骤,最终得到$x_0$。