Diffusion Models 详解:从噪声到图像的生成过程

生成模型Diffusion Models 详解openstarry.com

Diffusion Models 详解:从噪声到图像的生成过程

Diffusion Models 通过模拟"加噪"和"去噪"的物理过程来学习数据分布,已成为当前图像生成领域的主流方法。

Diffusion Models 的核心直觉

想象一下:你把一滴墨水滴入清水中,墨水会逐渐扩散,最终均匀分布——这就是扩散(Diffusion)。Diffusion Models 借用了这个物理过程的数学框架。

核心思想:
  前向过程(加噪):清晰图像 → 逐步加入噪声 → 纯噪声
  反向过程(去噪):纯噪声 → 逐步去除噪声 → 清晰图像

类比:
  前向 = 把一幅画慢慢揉成纸团(信息逐步丢失)
  反向 = 把纸团慢慢展开还原成画(信息逐步恢复)

关键洞察:如果我们能学会"去噪"这个逆过程,就能从纯噪声中生成任意图像


前向扩散过程

前向过程是一个固定的马尔可夫链,每一步向数据中添加少量高斯噪声:

# 前向扩散过程
# x_0: 原始清晰图像
# x_t: 第 t 步加噪后的图像
# β_t: 第 t 步的噪声调度(noise schedule)

# 逐步加噪
x_t = √(1 - β_t) * x_{t-1} + √β_t * ε,  ε ~ N(0, I)

# 经过 T 步后,x_T 近似于标准正态分布 N(0, I)

噪声调度(Noise Schedule)

β_t 控制每一步加噪的强度,常见的调度方式:

线性调度(DDPM 原始论文):
  β_1 = 0.0001, β_T = 0.02(T=1000)
  β_t 线性增长

余弦调度(改进版):
  β_t = 1 - cos²(πt/2T) / cos²(π(t-1)/2T)
  噪声增加更平滑,避免线性调度的突变问题

闭式解:一步到位

由于前向过程是马尔可夫链,我们可以直接计算任意时刻 t 的加噪结果,无需逐步迭代:

# 定义 α_t = 1 - β_t, α̅_t = α_1 × α_2 × ... × α_t
# 则有闭式解:

x_t = √α̅_t * x_0 + √(1 - α̅_t) * ε

# 直接从 x_0 跳到 x_t,加速训练

反向去噪过程

反向过程是学习的目标:训练一个神经网络来预测每一步的噪声,然后去除它。

# 训练目标:预测每一步添加的噪声
# 损失函数(简化版):

noise = randn_like(x_0)          # 采样随机噪声
t = randint(1, T)                 # 随机选择时间步
x_t = √α̅_t * x_0 + √(1-α̅_t) * noise  # 加噪

predicted_noise = model(x_t, t)   # 模型预测噪声

loss = MSE(noise, predicted_noise)  # 最小化预测误差

模型通常使用 U-Net 架构,它能够同时利用高层语义信息和低层细节信息。


DDPM:里程碑式的工作

DDPM(Denoising Diffusion Probabilistic Models)是 2020 年 Ho 等人提出的经典工作,将 Diffusion Models 提升到了实用水平。

DDPM 的训练算法

Repeat:
  1. 从数据集采样 x_0
  2. 随机采样时间步 t ~ Uniform(1, T)
  3. 随机采样噪声 ε ~ N(0, I)
  4. 计算加噪样本 x_t = √α̅_t * x_0 + √(1-α̅_t) * ε
  5. 前向传播:ε_θ = model(x_t, t)
  6. 计算损失:loss = ||ε - ε_θ||²
  7. 反向传播,更新模型参数

DDPM 的采样算法

从纯噪声生成图像:
  x_T ~ N(0, I)          # 从纯噪声开始
  For t = T down to 1:
    z ~ N(0, I)          # 采样新噪声(最后一步除外)
    x_{t-1} = (1/√α_t)(x_t - (1-α_t)/√(1-α̅_t) * model(x_t, t)) + σ_t * z
  
  返回 x_0               # 最终生成的图像

从 DDPM 到 Stable Diffusion

DDPM 的问题是计算量巨大——每次生成需要数百步去噪,每步都要处理整张图像。Stable Diffusion 通过潜空间扩散解决了这个问题。

潜空间扩散(Latent Diffusion)

传统 DDPM(像素空间):
  在高分辨率图像上直接加噪/去噪
  计算量:巨大(512×512×3 = 786,432 维)

Stable Diffusion(潜空间):
  1. 用 VAE 编码器将图像压缩到低维潜空间
  2. 在潜空间中进行扩散和去噪
  3. 用 VAE 解码器将结果还原为图像
  计算量:大幅降低(64×64×4 = 16,384 维)

  压缩比:约 48 倍

Cross Attention 引导

Stable Diffusion 使用 Cross Attention 将文本条件注入生成过程:

文本 → CLIP 文本编码器 → 文本嵌入
                                    ↓
图像特征(UNet)← Cross Attention ← 文本嵌入

效果:文本中的"红色"会影响对应区域生成红色

Diffusion Models 的优势

优势 说明
训练稳定简单的 MSE 损失,无对抗训练的不稳定性
生成质量高在 FID 等指标上超越 GAN
多样性好不易出现模式崩塌
理论优雅有坚实的概率论基础(变分推断)
可控性强通过 Classifier-Free Guidance 等方法灵活控制生成

主要应用

1. 文本生成图像

DALL-E 2/3、Stable Diffusion、Midjourney 等工具已经能够根据文字描述生成令人惊叹的图像。

2. 图像编辑与修复

Inpainting(修复图像缺失部分)、Outpainting(扩展图像边界)、图像上色等。

3. 视频生成

从文本描述生成视频片段,如 Sora、Runway Gen-2 等。

4. 3D 生成

生成 3D 模型、NeRF 场景等。


总结

Diffusion Models 通过优雅的"加噪-去噪"框架,为生成模型提供了一条稳定且高质量的路径。从 DDPM 到 Stable Diffusion 的演进,展示了潜空间压缩和条件引导如何让这一理论变得实用。理解 Diffusion Models 的原理,是理解当前 AI 绘画、视频生成等技术的关键。

延伸阅读变分自编码器(VAE)详解 了解 Stable Diffusion 中 VAE 编码器的工作原理。

以 AI 之力,筑未来之境

现在注册,立即免费获赠 200 次大模型调用权益

免费注册 →