枢纽
数据集LAION-5B

Latent Diffusion:把扩散模型从「像素空间」搬到「压缩潜空间」,算力砍掉一个数量级

Robin Rombach, Andreas Blattmann, Dominik Lorenz, Björn Ommer(LMU Munich + Heidelberg University)+ Patrick Esser(Runway ML)。arXiv:2112.10752v2 (2022-04-13);CVPR 2022(High-Resolution Image Synthesis with Latent Diffusion Models)。 代码 · 后续成为 Stable Diffusion 的奠基论文 · foundation_models扩散生成 线索 T05

🧠 一句话心智模型:扩散模型画图的天才不在「画 1024×1024 像素的每一个细节」,而在「构图和语义」——可它偏偏要把算力浪费在每个像素的高频细节上(大部分还都是人眼分辨不出的「冗余比特」)。LDM 的解法:先训一个 autoencoder 把图像压成 64×64×4 的潜向量(从 512×512×3 压缩 48×),让扩散模型只在潜空间里去噪——画完再解码回像素。算力砍一个数量级,质量不掉。后来加上 cross-attention 注入文本,就是 Stable Diffusion。

🎯 为什么重要:扩散模型好是好,就是太烧钱

2021 年底,扩散模型(DDPM/ADM)已经在图像生成上刷新 SOTA,但论文开篇就甩出两个吓人的数字:

Pixel-space DM 的算力代价(论文 §1 原文引用)
· 训练:150–1000 V100 天(指 ADM [15])
· 采样:50k 张图需要 5 天 on 单卡 A100
原因:扩散模型在像素空间反复去噪(25-1000 步),每步都要把整个 U-Net 跑一遍,每步都在 1024×1024×3 ≈ 300 万维空间里算

作者敏锐地意识到:这些算力大部分浪费在「人眼根本看不出区别的高频细节」上。论文 §1 把生成拆成两个阶段(Fig.2 的 rate-distortion 图):

阶段负责谁来做
感知压缩(perceptual compression)去掉高频不可感知细节autoencoder(一次训练,多次复用)
语义压缩(semantic compression)建模对象、布局、关系的语义结构扩散模型(这次在潜空间做)

把这两个阶段解耦,扩散模型就能「专注做它最擅长的事」——建模语义结构,而把「保留高频细节」交给轻量 autoencoder 的解码器。结果:同样的语义质量,算力大幅下降。这是扩散模型从「大厂专属」走向「人人可跑」的关键一步。

💡 核心思想:先 autoencoder 压维,再潜空间扩散,cross-attention 通用条件化

阶段 ① 感知压缩(训练一次,复用) 图像 x H×W×3 512²×3 像素 Encoder E 下采样 f=4 或 8 + L1 + LPIPS + PatchGAN 潜向量 z h×w×c 64²×4 ≈ 16K 维 阶段 ② 潜空间扩散(多次训练,专注语义) 噪声 z_T 去噪 U-Net ε_θ 潜空间内反复去噪 干净 z_0 Decoder D → 图像 x̂ 通用条件化 cross-attention 注入 U-Net 文本 CLIP/transformer 类别 embedding 语义图 CNN bbox/图像 domain-specific τ_θ(y) → K,V U-Net 中间特征 → Q Attention = Softmax(QK^T/√d) V 「同一套机制」吃任意模态条件
图 1:LDM 双阶段架构(论文 Fig.3 简化)。阶段①训练一个 autoencoder(KL 或 VQ 正则),把图像压成潜向量;阶段②在潜空间训扩散 U-Net。条件通过 cross-attention 通用注入(§3.3)。

两个关键设计:

  • 下采样因子 f 的甜蜜点是 4–8:太小(f=1,纯像素)→ 算力浪费在高频细节;太大(f=32)→ 感知信息丢太多,质量崩。论文 §4.1 实验确定 f∈{4,8} 是质量/效率最优区间(Fig.6)。
  • Cross-attention 作为「万能条件接口」:以前做文本条件扩散要改架构,做语义图条件又要改架构——LDM 把所有条件(文本、类别、bbox、语义图、图像)都用同一个 cross-attention 接口喂入 U-Net 中间层。条件 $y$ 先经领域编码器 $\tau_\theta$ 编码成 token,再与 U-Net 特征做 attention。这一抽象让 LDM 成了真正的「通用条件生成器」。

🛠️ 三个让 LDM 真正落地的关键设计

设计心智为什么必要
① 感知损失 + 对抗损失训 autoencoderL1 重建 + LPIPS 感知 + PatchGAN 判别器,确保 z → x̂ 锐利不糊纯 L2 重建会出模糊图(像素平均);对抗损失把重建拉回「图像流形」上,让潜空间保留高频纹理
② KL-reg 或 VQ-reg 正则潜空间两种方案:KL 正则(VAE 风格,连续 z)或 VQ 量化(离散 z)避免潜空间方差爆炸 / 训练发散;论文报告两者效果相近(VQ 略胜)——后续 Stable Diffusion 选了 KL-reg
③ Cross-attention 统一条件接口$\tau_\theta(y)$ 把条件编码为 token,U-Net 中间层做 Attention(Q=u, K=V=τ_θ(y))同一架构可吃文本/类别/语义图/图像——以前每加一种条件都要改 backbone,现在只换 $\tau_\theta$
🔮 直觉:为什么「解耦感知/语义压缩」如此有效?
传统 DM 的 U-Net 既要学「这里有一只猫」(语义)又要学「猫毛纹理应该长这样」(高频细节)——两个目标竞争同一份算力。LDM 把高频细节交给一个小 autoencoder(一次性训好),扩散模型只学语义结构。结果是:相同的语义质量,扩散要拟合的维度从 300 万降到约 6 万(48× 砍,对应 f=8 推荐配置),算力 / 显存都同步下降。

📊 关键结果:训练/采样 2.7× 提速,FID 1.6× 改善,多任务 SOTA

Table 6:训练/采样效率(inpainting 任务,同算力对比)

模型训练吞吐 (samples/s)采样吞吐 @256 (samples/s)采样吞吐 @512训练时 / epochFID@2k
LDM-1(纯像素基线)0.110.260.0720.66 h24.74
LDM-4(KL,w/ attn)0.320.970.347.66 h15.21

结论(论文原话):latent vs pixel 至少 2.7× 训练/采样提速,同时 FID 改善至少 1.6×。@256 采样吞吐 0.26→0.97 ≈ 3.7×

Table 1:无条件生成 FID(多个数据集 SOTA)

数据集之前 SOTALDM
CelebA-HQ 256²LSGM 7.22 / UDM 7.16(likelihood-based SOTA)5.11(likelihood-based 新 SOTA)
FFHQ 256²StyleGAN 4.164.98
LSUN-ChurchesStyleGAN2 3.86 / DDPM 7.894.02(LDM-8,逼近 StyleGAN2)
LSUN-BedroomsADM 1.902.95(LDM-4,接近 ADM,参数仅其一半

Table 3:ImageNet 256² 类条件生成

方法FID ↓IS ↑Precision ↑Recall ↑参数量
BigGAN-deep6.95203.60.870.28340M
ADM10.94100.980.690.63554M
ADM-G(引导)4.59186.70.820.52608M
LDM-4(class-cond)10.56103.490.710.62400M
LDM-4-G(引导)3.60247.670.870.48400M

Table 2:文本→图像(MS-COCO 256²):LDM-KL-8-G FID 12.63 / IS 30.29,参数 1.45B(与 GLIDE 等同期扩散/自回归模型持平,显著更少参数)。

Table 7:Places Inpainting(512²):LDM-4 (big, w/ finetune) FID 9.39,超过 LaMa 12.0、CoModGAN 10.4 等专门设计的 inpainting 模型。

Table 4:用户研究:SR 任务 30.4% 偏好 LDM-SR vs 16.0% 偏好 pixel-DM;Inpainting 任务 21.0% LDM vs 13.6% LaMa。

关键洞察:LDM 的贡献不是「在某一指标上赢了一点」,而是把扩散模型从「百 GPU 日级训练 + 单卡 5 天采样」拉低到「消费级显卡可跑」。这使得扩散模型从大厂专属技术变成开源社区能玩的工具——直接催生了后来的 Stable Diffusion(同作者团队,把 LDM 套上 LAION-5B 文本数据训练)。

🌐 在领域中的位置

GAN(StyleGAN2) Pixel-space DM(DDPM / ADM:质量强但烧钱) LDM(潜空间扩散 + cross-attention 通用条件)⭐ Stable Diffusion v1/v2/SDXL(开源文生图革命) DiT / Flux(Transformer 替换 U-Net)

LDM 是「扩散模型民主化」的分水岭。它把「先压缩、再生成」的两阶段思路注入主流,cross-attention 也成了后续所有条件扩散模型的标准接口(ControlNet、DiT、视频扩散、3D 扩散全部沿用)。关联线索:T05 扩散策略谱系(动作扩散也常借鉴潜空间思想)。

❓ 常见误区

「潜空间扩散」和「VAE 生成」是一回事吗?

不是。VAE 直接从高斯采样 z 然后解码,潜空间没有结构化的生成过程,所以 VAE 出图模糊。LDM 在 VAE 的潜空间里训一个扩散模型——扩散模型负责「把噪声 z_T 一步步变成有意义的 z_0」,VAE 只负责「像素 ↔ 潜向量」的转换。VAE 是底座,扩散是大脑

下采样因子 f 选 4 还是 8?

论文 §4.1 给出实验曲线(Fig.6):f=4 保真度最高(细节多),f=8 算力最省。Stable Diffusion v1 选了 f=8(潜空间 64×64×4,从 512×512×3 压缩 48×);高分辨率任务(如 1024²)时 f=4 更好。论文结论:「LDM-{4,8} 是近-optimal 点」。

autoencoder 为什么不直接用普通的 VAE?

普通 VAE 的 L2 + KL 损失倾向出模糊重建(像素级高斯假设)。LDM 用 L1 + LPIPS(感知损失)+ PatchGAN(对抗损失)联合训练——LPIPS 让重建对齐人眼感知,PatchGAN 强迫高频纹理真实。这是从 VQGAN [Esser 2021] 借来的成熟方案。

Cross-attention 为什么重要?以前做条件生成不也有「拼接」或「AdaGN」吗?

拼接和 AdaGN 只能吃定长向量条件(如类别标签)。Cross-attention 能吃变长 token 序列——文本(变长)、bbox 集合、语义图(变空间维度)——无需改架构,只换条件编码器 $\tau_\theta$。这一抽象让同一个 U-Net 骨干可以训出文本、类别、布局、语义图等多种条件生成器,工程上极省心。

那它和 Stable Diffusion 是什么关系?

Stable Diffusion v1 就是 LDM 论文方法的具体实例化:同一团队(Rombach 等)、同样架构(KL-reg autoencoder + U-Net 潜扩散 + cross-attention),只是把训练数据从 ImageNet/COCO 换成了 LAION-5B(数十亿图文对)、模型规模扩到 ~1B 参数。LDM 是方法论奠基,Stable Diffusion 是大规模落地的产品。