ARCHITECTURE OVERVIEW

Latent Diffusion
Model

基于感知压缩的潜在空间扩散模型 —— 在低维潜在空间中执行扩散过程, 显著降低计算成本的同时保持高质量图像生成能力

Rombach et al. 2022 CVPR 2022 Stable Diffusion 技术基础

通用架构图

flowchart TB
    classDef pixel fill:#f97316,stroke:#ea580c,color:#fff,stroke-width:2px
    classDef latent fill:#10b981,stroke:#059669,color:#fff,stroke-width:2px
    classDef encdec fill:#8b5cf6,stroke:#7c3aed,color:#fff,stroke-width:2px
    classDef denoise fill:#ec4899,stroke:#db2777,color:#fff,stroke-width:2px
    classDef cond fill:#f59e0b,stroke:#d97706,color:#1e1b4b,stroke-width:2px
    classDef loss fill:#ef4444,stroke:#dc2626,color:#fff,stroke-width:2px

    subgraph PX ["Pixel Space 像素空间"]
        direction LR
        X["输入图像 x"]:::pixel
        XHat["生成图像 x̂"]:::pixel
    end

    E["Encoder E 编码器
感知压缩 · VQGAN/KL-Reg"]:::encdec D["Decoder D 解码器
感知重建 · VQGAN/KL-Reg"]:::encdec subgraph LS ["Latent Space 潜在空间"] Z0["z₀ = E 开始潜在表示"]:::latent ZT["zₜ 加噪潜在表示"]:::latent Z0D["ẑ₀ 去噪结果"]:::latent end Noise["ε ~ N 0, I
随机高斯噪声"]:::loss Fwd["前向扩散 Forward
q zₜ | z₀
逐步添加噪声"]:::latent Rev["反向去噪 Reverse
pθ zₜ₋₁ | zₜ
逐步去除噪声"]:::latent subgraph DN ["Denoising Network 去噪网络"] UNet["U-Net εθ
ResBlock + Self-Attention + Cross-Attention
预测噪声 ε̂θ"]:::denoise TEmb["时间步嵌入 t
Sinusoidal Position Embedding"]:::denoise end subgraph CM ["Conditioning 条件机制"] C["条件输入 c
文本 / 类别 / 图像"]:::cond Tau["条件编码器 τθ
CLIP Text / BERT"]:::cond CA["Cross-Attention
条件注入层"]:::cond end Loss["LDM 损失函数
L = E ‖ε − εθ zₜ, t, c ‖²"]:::loss X --> E --> Z0 Z0 --> Fwd --> ZT Noise --> Fwd ZT --> Rev --> Z0D Z0D --> D --> XHat TEmb --> UNet UNet --> Rev C --> Tau --> CA --> UNet UNet -. "ε̂θ 预测噪声" .-> Loss Noise -. "ε 目标噪声" .-> Loss
像素空间 编解码器 潜在空间/扩散 去噪网络 条件机制 损失/噪声 梯度/监督信号

双阶段数据流

TRAINING

训练阶段

1 输入图像 x 经 Encoder E 压缩为潜在表示 z₀
2 z₀ 执行前向扩散,采样随机噪声 ε,得到 zₜ
3 条件 c 经编码器 τθ 后通过 Cross-Attention 注入 U-Net
4 U-Net 以 zₜ, t, c 为输入,预测噪声 ε̂θ
5 计算简单 MSE 损失 L = ‖ε − ε̂θ‖²,仅优化 U-Net 和 τθ
# 训练伪代码
z0 = E(x) # 编码到潜在空间
t = uniform_sample(0, T)
eps = randn_like(z0) # 采样噪声
zt = sqrt(αbar_t) * z0 + sqrt(1-αbar_t) * eps
eps_hat = UNet(zt, t, τθ(c))
loss = MSE(eps, eps_hat)
INFERENCE

推理阶段

1 从标准正态分布采样 z_T ~ N(0, I)
2 条件 c 经编码器 τθ 得到条件嵌入向量
3 迭代去噪:U-Net 从 z_T 逐步去噪到 ẑ₀
4 去噪结果 ẑ₀ 经 Decoder D 解码为生成图像
5 可选:使用 DDIM / PLMS 等加速采样器减少迭代步数
# 推理伪代码 (DDPM)
zT = randn(shape) # 采样纯噪声
for t = T, T-1, ..., 1:
  eps_hat = UNet(zt, t, τθ(c))
  zt = ddpm_step(zt, eps_hat, t)
x_hat = D(z0) # 解码到像素空间

核心组件详解

Encoder E

感知压缩

将高维像素空间图像 x ∈ ℝʰˣʷˣ³ 压缩到低维潜在空间 z ∈ ℝʰ/⁴ˣʷ/⁴ˣᶜ,下采样因子通常为 4~8。使用 VQ-正则化或 KL-正则化约束潜在空间分布,确保 z 空间平滑连续。

z₀ = E(x),空间维度降低 4×~8×

Decoder D

感知重建

将潜在表示 z 解码回像素空间。与 Encoder 对称设计,确保重建质量。训练时使用感知损失 + patch-level 判别器对抗损失 + 重建损失联合优化。

x̂ = D(ẑ₀),高质量像素级重建

U-Net εθ

核心去噪网络

基于时序条件 U-Net 的噪声预测网络,由下采样、瓶颈、上采样三部分组成。核心模块包括 ResBlock(残差块)、Self-Attention(自注意力)和 Cross-Attention(交叉注意力),通过时间步嵌入调节每一层的特征变换。

ε̂θ = UNet(zₜ, t, τθ(c))

前向扩散

加噪过程

预定义的马尔可夫链过程,向潜在表示逐步添加高斯噪声。方差调度 β₁,...,β_T 控制噪声强度。可直接从 z₀ 一步采样到任意时间步 zₜ,无需逐步迭代,这使得训练极其高效。

q(zₜ|z₀) = N(√ᾱₜz₀, (1-ᾱₜ)I)

反向去噪

生成过程

学习逆转扩散过程,从纯噪声 z_T 逐步去噪恢复数据分布。每步由 U-Net 预测噪声并移除。支持 DDPM(随机采样)和 DDIM(确定性采样)等多种采样策略。

pθ(zₜ₋₁|zₜ) = N(μθ(zₜ,t), Σθ(zₜ,t))

条件机制

可控生成

通过 Cross-Attention 将条件信号注入 U-Net。条件编码器 τθ 将文本/类别/图像等条件映射为特征向量,在 U-Net 的 Cross-Attention 层与空间特征交互。这是 LDM 实现可控生成的核心机制,也支持无条件生成(引导分类器自由策略)。

Attn(Q=F, K=V=τθ(c)) → 条件融合

LDM 核心优势

4~64×
计算效率提升
在潜在空间操作,维度远低于像素空间
解耦
压缩与生成分离
自编码器只训练一次,扩散模型可反复微调
灵活
通用条件机制
Cross-Attention 支持任意模态条件输入