Skip to content

指南

基于 DDIM(Song 2020)/LDM(Stable Diffusion, Rombach 2022)/CFG(Ho & Salimans 2022)/LCM 论文 + Lilian Weng 博客编写

速查

  • DDIM 核心:非马尔可夫确定性采样,η=0 时完全确定,可用 20-50 步达到 DDPM 上千步的质量
  • DDIM 关键:训练好的 DDPM 模型无需重训,直接换采样器即加速,且支持隐空间语义插值
  • LDM(Stable Diffusion)核心:扩散不在像素空间而在 VAE 潜空间进行,算力降几十倍
  • LDM 两阶段:感知压缩(VAE 编码器/解码器,把图像压成潜向量)+ 潜在扩散(U-Net 在潜空间去噪)
  • CFG 公式ε̃ = (1+w)·ε_θ(x_t,t|c) - w·ε_θ(x_t,t|∅),w 是引导强度,联合训练条件与无条件模型
  • CFG 训练:训练时以一定概率(如 10%)丢弃条件 c(置 ∅),同一网络同时学条件和无条件
  • CFG 效果:w 增大→更贴合条件、质量更高但多样性下降(类似 GAN 截断技巧的质量-多样性权衡)
  • 分数模型等价∇_x log p(x_t) ≈ -ε_θ(x_t,t)/√(1-ᾱ_t),DDPM 预测噪声即估计分数
  • 朗之万动力学x_t = x_{t-1} + (δ/2)·∇log p(x_{t-1}) + √δ·ε,用分数梯度迭代采样
  • 连续时间 SDE:扩散可写成随机微分方程 dx = f(x,t)dt + g(t)dw,DDPM/DDIM/分数模型统一其中
  • LCM 核心:把多步扩散蒸馏成 1-4 步的一致性模型,结合 CFG 实现极速生成
  • 采样加速:DDIM(少步确定性)、DPM-Solver(高阶 ODE 求解)、LCM(蒸馏)是三大方向

采样加速:DDIM

标准 DDPM 采样需 T=1000 步迭代,慢得难以实用。DDIM(Denoising Diffusion Implicit Models,Song et al. 2020) 给出了关键加速:

text
DDIM 思路:保持前向边缘分布 q(x_t|x_0) 不变,但定义一个【非马尔可夫】的前向过程
         → 推导出的反向采样步数可大幅减少,且模型无需重训(用训好的 DDPM 直接换采样器)

引入随机性控制参数 η ≥ 0:
  η = 0  → 完全确定性(给定初始噪声,输出固定)—— 这是 DDIM 常用模式
  η = 1  → 退化为标准 DDPM(随机性最大)

DDIM 采样:从 x_T 出发,用 η=0 的确定性更新,跳跃式取子序列 {t_1 < t_2 < ... < t_T}
         20-50 步即可达到 DDPM 1000 步的质量

DDIM 的两大收益

  1. 加速:采样步数从上千降到几十,速度提升 20-50 倍
  2. 确定性插值:η=0 时给定初始噪声 x_T 输出固定,于是可以在隐空间做「语义插值」——两个噪声 x_T^(1)、x_T^(2) 线性插值,生成的两张图之间平滑过渡(DDPM 因随机性做不到)

DDIM 的「训练好的模型直接换采样器」特性极重要——所有加速采样方法(DPM-Solver、PNDM 等)都基于这一思路:模型不变,改采样器。

潜空间扩散:Stable Diffusion(LDM)

Stable Diffusion / Latent Diffusion Model(Rombach et al. 2022) 解决了扩散模型的算力瓶颈——把扩散从像素空间搬到 VAE 的潜空间:

text
像素空间扩散的问题:
  一张 512×512×3 图像有 ~78 万维,U-Net 每步都要处理这么大的张量,T 步算力爆炸

LDM 方案(两阶段):
  阶段 1(感知压缩):训练一个自编码器(VAE 风格)
    编码器 E:图像 x → 潜向量 z = E(x)(如 64×64×4,压缩 ~48 倍)
    解码器 D:潜向量 z → 图像 x̂ = D(z)(重建)
    这一步固定后不再训练

  阶段 2(潜在扩散):在潜空间跑扩散
    前向加噪作用于 z 而非 x
    U-Net ε_θ(z_t, t) 在 64×64×4 的潜空间去噪(而非 512×512×3)
    采样得到 z_0 后,用解码器 D 还原成图像

效果:算力消耗降低几十倍,让扩散能在消费级 GPU(如 8GB 显存)上运行

为什么潜空间可行:图像的感知信息(人眼能看到的结构)远低于像素冗余,VAE 编码器把图像压到低维潜空间而几乎不丢感知信息。在潜空间做扩散等于「在压缩表示上生成」,再解码还原。

条件机制:交叉注意力

LDM 如何接受文本条件?通过在 U-Net 中插入交叉注意力层

text
文本 prompt → CLIP 文本编码器 → token 序列特征 τ (如 77×768)
U-Net 每个分辨率层加入交叉注意力:
  Q 来自潜特征 z_t,K/V 来自文本特征 τ
  CrossAttention(Q, K, V) = softmax(Q·K^T/√d) · V
这样 U-Net 在去噪时能「看到」文本条件

「cross-attention turns the model into ... a flexible generator for general conditioning inputs such as text or bounding boxes」——LDM 论文。交叉注意力让扩散模型能接受任意条件(文本、布局、掩码、参考图)。

Classifier-Free Guidance(CFG)

CFG(Ho & Salimans 2022) 是现代文生图的标配,用单一网络同时实现条件与无条件生成,并在推理时外插放大条件信号:

text
训练:对条件扩散模型 ε_θ(x_t, t | c),训练时以一定概率(如 10%)把条件 c 替换为空 ∅
     → 同一个网络既学会 ε_θ(x_t, t | c)(条件噪声预测),又学会 ε_θ(x_t, t | ∅)(无条件噪声预测)

推理(引导采样):
  ε̃_θ = (1 + w) · ε_θ(x_t, t | c)  -  w · ε_θ(x_t, t | ∅)
         ↑↑↑ 条件项放大                  ↑↑↑ 减去无条件项

  w:引导强度(guidance scale),通常 1-15
    w=0    → 纯条件模型(ε̃ = ε_θ(·|c))
    w=1    → 标准条件采样
    w>1    → 放大条件影响(实际常用 w=7.5)

效果:w 越大,生成越贴合条件(如文本描述更精确)、视觉质量越高,但多样性下降、可能出现过饱和。这本质是把「条件方向」沿「条件 - 无条件」向量外推,类似 GAN 截断技巧,直观体现质量-多样性权衡。

CFG 优势:无需训练额外的分类器(对比 Classifier Guidance 需要一个预训练分类器算梯度),只需一个网络、一次前向算两次(带条件和不带条件),简单高效,成为 Stable Diffusion 等的默认配置。

与分数模型、朗之万动力学统一

扩散模型并非孤立,它与**基于分数的生成模型(score-based generative models)朗之万动力学(Langevin dynamics)**数学等价:

text
分数函数:s(x) = ∇_x log p(x)  (对数概率密度的梯度)

朗之万动力学采样(用分数梯度迭代):
  x_t = x_{t-1} + (δ/2) · ∇_x log p(x_{t-1}) + √δ · ε ,  ε~N(0,I)
  → 只要有分数函数就能从分布采样

DDPM 预测噪声 ε_θ 与分数的关系(Lilian Weng 博客推导):
  s_θ(x_t, t) ≈ ∇_{x_t} log q(x_t) = - ε_θ(x_t, t) / √(1 - ᾱ_t)
  即:预测噪声 ε_θ 等价于估计扰动分布的分数(差一个缩放因子)

统一视角:Song et al. 2021(Score-Based Generative Modeling through SDEs)把 DDPM、分数模型、朗之万动力学统一到一个连续时间随机微分方程(SDE)框架:

text
扩散前向写成 SDE:dx = f(x,t)dt + g(t)dw  (w 是布朗运动)
反向生成对应反向 SDE(需分数函数)
不同离散化 → 不同模型(DDPM/分数模型/概率流 ODE)

这个统一框架的意义:让 DDIM、概率流 ODE、各种加速采样器都能在同一理论下推导,是现代扩散模型研究的数学基石。

Latent Consistency Models(LCM)

LCM(Luo et al. 2023) 把扩散蒸馏成几步生成的一致性模型,进一步逼近 GAN 的速度:

text
核心思想:训练一个「一致性函数」f_θ(z_t, t) → z_0
         要求:沿同一条扩散轨迹(即从同一 z_0 加噪得到的不同 z_t),f_θ 输出一致
         即 f_θ(z_t, t) = f_θ(z_{t'}, t') (对同一轨迹的任意两点)

Latent Consistency Models(LCM)= 在 LDM 潜空间上做一致性蒸馏
  用 Stable Diffusion 作教师,蒸馏出 1-4 步即可生成的学生
  结合 CFG,实现 1-4 步高质量文生图(vs 标准 SD 的 20-50 步)

意义:LCM 让扩散模型在「质量-速度」权衡上逼近 GAN,同时保留扩散的训练稳定性与可控性,是 2023 年扩散加速的里程碑。后续 LCM-LoRA 等进一步让加速可插拔复用。

反模式(生产坑)

  1. 像素空间训大图扩散:512×512 像素扩散算力爆炸,应用 LDM 在潜空间做,显存占用降一个数量级
  2. 采样不用加速器:直接跑 DDPM 1000 步慢得不可用,生产必须用 DDIM/DPM-Solver/LCM 等
  3. CFG 引导强度设错:w=0 生成与条件无关,w 过大(如 30)图像过饱和、怪异;文生图默认 7-9
  4. 方差调度选错:β_t 不递增或 ᾱ_T 不趋于 0,导致 x_T 不是纯高斯,采样失败
  5. 混淆预测目标:网络应预测噪声 ε(DDPM)而非直接预测 x_0 或均值,参数化不同效果差异大
  6. 忽视时间嵌入:U-Net 不注入时间步 t,网络无法区分不同去噪阶段,质量崩塌

下一步

  • 参考:核心公式表 + 变体对比 + 经典论文资源