扩散模型原理

扩散模型(Diffusion Model)是当前AI图像生成的核心技术,通过逐步添加和去除噪声来生成高质量图像。本文将深入讲解其工作原理。

预计阅读时间:45分钟·难度:中级

基本原理

扩散模型的核心思想源于非平衡热力学。其灵感来自于气体分子的扩散过程——分子从高浓度区域向低浓度区域扩散,直到达到平衡状态。

在图像生成领域,扩散模型将图像生成过程分为两个阶段:

核心概念

  • 前向扩散过程(Forward Process):逐步向图像添加高斯噪声,直到图像变成纯噪声。这个过程是确定性的,不需要学习。
  • 反向去噪过程(Reverse Process):学习如何从噪声逐步恢复到清晰图像。这个过程需要训练神经网络来预测噪声。

这种设计的优势在于:前向过程提供了清晰的训练目标,而反向过程则允许我们从任意噪声生成图像。

💡 关键洞察

扩散模型本质上是在学习"如何从混乱中恢复秩序"。这种渐进式的生成方式比一次性生成更加稳定和可控。

前向扩散

前向扩散过程是扩散模型的"破坏"阶段。我们从一张清晰的图像开始,逐步添加噪声,直到图像变成完全的随机噪声。

过程详解

假设我们有一张原始图像 x_0,前向过程会在 T 个时间步内逐步添加噪声:

数学表示:

q(x_t | x_{t-1}) = N(x_t; √(1-β_t)·x_{t-1}, β_t·I)

其中 β_t 是噪声调度参数,控制每一步添加的噪声量

噪声调度

噪声调度决定了每一步添加多少噪声。常见的调度策略包括:

  • 线性调度(Linear):β 值从 β_1 线性增长到 β_T。简单但可能导致早期信息损失过快。
  • 余弦调度(Cosine):使用余弦函数控制 β 值。更加平滑,信息保留更好,是当前主流选择。
  • 平方根调度(Sqrt):介于线性和余弦之间的折中方案。

⚠️ 注意事项

在实际应用中,我们不需要逐步计算前向过程。利用重参数化技巧,可以直接从 x_0 计算任意时刻 x_t,这大大提高了训练效率。

反向去噪

反向去噪是扩散模型的"创造"阶段。我们需要训练一个神经网络来预测每一步添加的噪声,然后减去它来恢复图像。

网络架构

扩散模型通常使用 UNet 架构作为噪声预测网络:

编码器

逐步下采样,提取图像特征,捕获全局信息

瓶颈层

最深层特征表示,包含图像的语义信息

解码器

逐步上采样,恢复空间细节,生成清晰图像

跳跃连接

连接编码器和解码器的对应层,保留细节信息

时间嵌入

为了让网络知道当前处于哪个去噪步骤,需要注入时间步信息:

  • 正弦位置编码:将时间步编码为高维向量
  • 自适应归一化:AdaGN 将时间信息注入到网络中
  • 注意力机制:Cross-Attention 将条件信息融入生成过程

采样策略

采样策略决定了从噪声到图像的路径,直接影响生成质量和速度。

常用采样器对比

采样器步数速度质量特点
DDPM1000优秀原始方法,稳定可靠
DDIM10-100良好确定性采样,可复现
Euler a20-30很快良好简单高效,常用默认
DPM++ 2M20-30很快优秀当前最佳选择
UniPC10-20极快优秀最新方法,极少步数

💡 实用建议

  • • 日常使用推荐 DPM++ 2M Karras,20-30步即可获得良好效果
  • • 需要确定性结果时使用 DDIM
  • • 快速预览可用 Euler a 或 UniPC
  • • 追求最高质量可增加步数到 50+

训练过程

扩散模型的训练目标是让网络学会预测噪声。

训练步骤

  1. 采样图像:从训练集中随机采样一张图像 x_0
  2. 采样时间步:随机选择一个时间步 t ∈ [1, T]
  3. 添加噪声:根据噪声调度向图像添加噪声得到 x_t
  4. 预测噪声:将 x_t 和 t 输入网络,预测添加的噪声
  5. 计算损失:计算预测噪声与真实噪声的 MSE 损失
  6. 反向传播:更新网络参数

条件生成

对于文本到图像生成,还需要将条件信息(如文本提示词)融入模型:

  • Classifier-Free Guidance:同时训练有条件和无条件模型,推理时混合输出
  • Cross-Attention:通过注意力机制注入文本嵌入
  • CFG Scale:控制条件引导强度,通常设置为 7-12

优势与局限

✅ 优势

  • 生成质量高:图像细节丰富,纹理自然
  • 训练稳定:不易出现模式崩溃
  • 可控性强:支持多种条件控制方式
  • 多样性好:同提示词可生成不同变体
  • 可解释性:去噪过程可视化,易于理解

❌ 局限

  • 生成速度慢:需要多步迭代,比 GAN 慢
  • 计算成本高:训练需要大量算力
  • 文本渲染弱:难以准确生成图像中的文字
  • 细节控制难:精确控制特定区域仍有挑战
  • 长宽比受限:偏离训练比例时质量下降

🔮 发展趋势

最新的研究方向包括:一致性模型(Consistency Models)实现少步生成、潜在扩散(Latent Diffusion)降低计算成本、以及改进的文本渲染和细节控制能力。

数学原理深入

深入理解扩散模型背后的数学原理,帮助你更好地调整参数和优化效果。

前向过程数学推导

核心公式:

x_t = √(ᾱ_t)·x_0 + √(1-ᾱ_t)·ε

其中:

  • • x_0:原始清晰图像
  • • x_t:第t步的噪声图像
  • • ε:标准高斯噪声
  • • ᾱ_t = ∏(1-β_i):累积乘积,控制信号保留比例

反向过程推导

去噪公式:

x_{t-1} = (1/√α_t)(x_t - (1-α_t)/√(1-ᾱ_t)·ε_θ(x_t,t)) + σ_t·z

关键变量:

  • • ε_θ(x_t,t):神经网络预测的噪声
  • • σ_t:噪声的标准差,控制随机性
  • • z:随机噪声(可选,影响确定性)

训练目标

简化损失函数:

L = E_t,x_0,ε[||ε - ε_θ(x_t,t)||²]

训练目标是让网络预测的噪声尽可能接近真实添加的噪声。这是一个简单的均方误差损失。

💡 数学原理的实际意义

  • 噪声调度:β_t的选择影响信息保留和生成质量
  • 采样步数:更多步数意味着更精细的去噪过程
  • CFG Scale:控制条件引导的强度,影响提示词遵循程度

扩散模型架构对比

了解不同扩散模型架构的特点和适用场景。

像素空间 vs 潜在空间

像素空间扩散
  • • 直接在像素空间操作
  • • 计算量大,显存占用高
  • • 细节保留更好
  • • 代表:DALL-E 2, Imagen
潜在空间扩散(LDM)
  • • 在压缩的潜在空间操作
  • • 计算效率高,显存友好
  • • 略有信息损失
  • • 代表:Stable Diffusion

UNet vs DiT架构

特性UNetDiT (Diffusion Transformer)
架构类型卷积网络Transformer
感受野局部感受野全局感受野
扩展性有限优秀
训练效率较高需要更多数据
代表模型SD 1.5, SDXLSD3, Sora

主流模型架构对比

模型架构参数量特点
SD 1.5UNet + LDM~1B生态最丰富
SDXLUNet + 双编码器~3.5B高质量,1024分辨率
SD3DiT + MMDiT2B-8B最新架构,文本理解强
DALL-E 3未公开未公开文本理解优秀
FluxDiT12B开源最强之一

🔮 架构演进趋势

从UNet到DiT的转变代表了扩散模型的发展方向。DiT架构具有更好的扩展性,随着模型规模增大,性能提升更明显。未来更多的模型将采用Transformer架构。

生成优化技巧

掌握这些技巧,提升生成质量和效率。

采样优化

高级采样器详解:

  • DPM++ 系列
    • - DPM++ 2M:二阶多步方法,速度快质量好
    • - DPM++ SDE:随机微分方程方法,细节更丰富
    • - DPM++ 2M SDE:结合两者优点
  • Karras 调度:特殊的噪声调度,配合DPM++效果更佳
  • UniPC:统一预测校正框架,极少步数也能获得好效果

CFG优化策略

Classifier-Free Guidance调优:

  • 低CFG(5-7):创意性强,但可能偏离提示词
  • 中等CFG(7-12):平衡选择,适合大多数场景
  • 高CFG(12-20):严格遵循提示词,但可能过饱和
  • Dynamic CFG:在采样过程中动态调整CFG值

高分辨率生成策略

Hires.fix 高清修复
  • • 先用低分辨率生成主体结构
  • • 再用图生图放大并添加细节
  • • 推荐设置:放大倍数1.5-2x,重绘幅度0.3-0.5
Tile ControlNet 放大
  • • 使用Tile ControlNet保持结构
  • • 可以添加更多细节而不破坏整体
  • • 适合大幅面打印或高清展示

💡 优化建议总结

  • • 日常生成:DPM++ 2M Karras + 20-30步 + CFG 7-8
  • • 高质量生成:DPM++ SDE Karras + 40-50步 + CFG 9-12
  • • 快速预览:UniPC + 10-15步 + CFG 5-7
  • • 高分辨率:基础生成 + Hires.fix + Tile ControlNet
----