DDPM(Denoising Diffusion Probabilistic Models)是一种用于生成图像的深度学习模型。该算法通过一个逐步去噪的过程来生成高质量的图像。以下是DDPM算法的主要步骤和特点:
在前向过程中,原始图像 $x_0$ 经过一系列的扩散步骤,最终变成一个纯噪声的图像 $x_T$。这个过程中,每一步都会加入一定量的噪声,使得图像逐步退化。
具体来说,在前向过程中,图像 $x_t$ 在时间步 $t$ 上的分布是通过以下公式定义的:
$$ q(x_t | x_{t-1}) = \mathcal{N}(\sqrt{1 - \beta_t} x_{t-1}, \beta_t \mathbf{I}) $$
其中,$\beta_t$ 是一个预定义的超参数,控制着每一步的噪声量。
在后向过程中,模型从纯噪声的图像 $x_T$ 开始,逐步去噪,最终生成原始图像 $x_0$。这个过程也是通过马尔科夫链实现的,每一步都基于前一步的结果和噪声预测。
具体来说,后向过程是通过以下公式定义的:
$$ q(x_{t-1} | x_t, x_0) = \mathcal{N}(\mu_t(x_t, x_0), \sigma_t^2 \mathbf{I}) $$
其中,$\mu_t(x_t, x_0)$ 和 $\sigma_t^2$ 可以通过前向过程中的信息计算得到。
在训练过程中,模型学习如何从噪声图像 $x_T$ 预测出真实的噪声 $\epsilon$,从而能够逐步去噪,生成高质量的图像。训练目标是最小化预测噪声和真实噪声之间的差异。
具体来说,训练过程中会随机选择一个时间步 $t$,然后从标准正态分布中采样一个噪声 $\epsilon$,并使用以下公式计算损失:
$$ \mathcal{L} = \mathbb{E}{t, x_0, \epsilon} \left[ || \epsilon - \epsilon\theta(\sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, t) ||^2 \right] $$
其中,$\epsilon_\theta$ 是模型预测噪声的函数,$\theta$ 是模型的参数。
在采样过程中,模型从纯噪声的图像 $x_T$ 开始,逐步去噪,最终生成一个高质量的图像 $x_0$。这个过程也是通过马尔科夫链实现的,每一步都基于前一步的结果和噪声预测。
具体来说,采样过程中会随机选择一个时间步 $t$,然后从标准正态分布中采样一个噪声 $\epsilon$,并使用以下公式计算去噪后的图像:
$$ x_{t-1} = \frac{1}{\sqrt{\alpha_t}}(x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}t}} \epsilon\theta(x_t, t)) + \frac{\epsilon}{\sqrt{1 - \bar{\alpha}_t}} $$
其中,$\alpha_t$ 和 $\bar{\alpha}_t$ 可以通过前向过程中的信息计算得到。