Oh My Awesome AI AI 世界地图

High-Resolution Image Synthesis with Latent Diffusion Models

Rombach et al. (LMU / Runway) · CVPR 2022 · 2022

阅读原文

把扩散过程从像素空间搬进 VAE 隐空间,计算成本骤降两个数量级——Stable Diffusion 的原型论文,开源文生图时代的起点。

核心要点

  • 核心洞见是「压缩而非生成」:先用自编码器把图像压到 1/8 尺寸的隐空间,扩散只在隐空间进行——感知质量保留,算力需求坍缩。
  • 交叉注意力条件机制让文本(CLIP 文本嵌入)直接控制去噪过程——「文生图」从此有了标准的可插拔接口。
  • 训练目标层面证明隐空间扩散与像素扩散质量等价,但 FLOPs 差数量级:这是「改变问题表征比改变算法更有效」的典范。
  • 开源(代码 + 权重)使其成为史上被魔改最多的生成模型:ControlNet、LoRA 生态全部围绕它生长。
本页目录

背景

2021 年扩散模型刚刚接管图像生成:DDPM(2020)确立了「加噪-去噪」框架,OpenAI 的 Guided Diffusion(2021)与 DALL·E 2 前身在质量上碾压 GAN。但所有这些模型都在像素空间做扩散——一张 512×512 的图就是 78 万维的输入,U-Net 每一步去噪都要在完整分辨率上跑。训练成本数百万美元量级(ADM 训练按论文口径 150 V100 天 × 多模型),推理要几十上百步迭代——扩散模型当时是「数据中心特权」。

另一条背景线:VAE(2013)与 VQ-VAE(2017-2019)证明了「图像可以被压进低维隐空间且保留感知质量」,但 VAE 的直接生成质量不行。两条线一直各玩各的。

动机

Rombach 等(Heidelberg 大学的 CompVis 组,与 Runway 合作)提出一个拆分问题:**生成模型必须既负责「感知压缩」(把 512×512 压成 64×64 的语义骨架)又负责「语义生成」(决定画什么)吗?**如果把前者外包给 VAE(一次训练、永久复用),扩散模型只在紧凑隐空间做后者,训练与推理的算力会同时坍缩一个数量级以上。次要动机:条件控制——当时扩散的条件机制(拼接、归一化注入)对文本这种长序列信号很笨拙,需要一个统一接口。

方法

两阶段设计:

阶段一:感知压缩(VAE)。自编码器把图像压到隐空间:f=4 时 512×512×3 → 64×64×4(通道数压缩更狠:到 4 或 8 通道)。训练目标配了感知损失(LPIPS)+ 对抗损失 + 重建,保证隐编码在「人眼可感知」意义上无损,只丢弃人眼不敏感的高频细节(纹理噪声之类)。解码器负责把隐码还原回像素——解码器只训练一次,所有生成都复用它。

阶段二:隐空间扩散(U-Net)。标准的 DDPM/DDIM 训练在隐空间进行:随机加噪隐码 → U-Net 预测噪声。因为隐码是 4 通道的 64×64 而不是 3 通道的 512×512,同样的模型容量现在花在语义上。论文的消融证明:f=4~8 的隐空间扩散在 FID 上与像素扩散打平甚至更好(去掉的高频细节本来也学不好),而算力省一个数量级。

交叉注意力条件注入(全文最有影响力的设计)。U-Net 的每个下采样/上采样块之间插入 cross-attention 层:隐码特征做 query,条件序列(文本嵌入、语义图、布局框)做 key/value。这个设计的妙处:(1) 文本 token 序列天然适配 attention(此前扩散模型对文本的用法要么是全局拼接要么是逐像素调制);(2) 条件类型无关——语义分割图、人体姿态、场景布局都转成序列走同一条通路,「可控生成」从此是插件式扩展;(3) 后来 ControlNet 的「旁路 U-Net 复制条件信号」就是围绕这个接口生长的。

文本编码器:直接用 CLIP 的文本塔(后继版本换 OpenCLIP),冻结不训练。文生图管线 = CLIP 文本嵌入 → cross-attention 条件。

实验设置

  • 数据:LAION-400M 子集(网络图文对)做无条件/文生图预训练,另有脸(FFHQ)、景(LHQ)、语义图(ADE20K/COCO)、姿态(COCO)、超分、修复(Places2)多任务对齐微调
  • 模型:LDM-1/2/4/8(不同压缩倍率)× KL/VAE 两种隐空间;U-Net 从 ~275M 到 ~860M 参数
  • 评测:FID(图像质量+多样性)、CLIP score(图文对齐)、采样延迟(per-image 秒数 vs 扩散步数)
  • 基线:像素空间 ADM/Guided Diffusion、DALL·E 系(同期对比)、当时 GAN 系;条件任务上对比 Taming Transformers、ESSR 等
  • 算力口径:按 GPU 天报告训练成本(LDM-KL-8 约 200 A100 天 vs 像素级可比模型的数倍以上)

结果

  • 成本坍缩:同等 FID 下,隐空间扩散训练 FLOPs 降一个数量级级;512×512 采样从分钟级降到秒级(V100 上 ~5 秒/图,50 步 DDIM)
  • 质量不降反升:ImageNet 类条件生成上 LDM 的 FID 优于像素扩散基线(高频细节由 VAE 解码器负责,U-Net 专心语义);文生图 LDM 对比 DALL·E 的 CLIP score 更高(同期对比)
  • 压缩倍率消融:f=4 是甜点——f=8 以上 FID 开始受损(丢的信息太多),f=1 退回像素扩散的成本
  • 条件任务全面开花:语义图→图(FID 优于 Taming)、姿态→人、修复(inpainting)超 ESSR;一条架构通吃
  • 采样步数敏感度低于像素扩散(隐空间去噪目标更平滑)

有趣的洞见

「先压缩、再生成」是普适模式。把「在 78 万维像素上做扩散」改成「在 1.6 万维隐码上做扩散」,本质是换掉问题的表征空间而不是换算法——同样的思想此后反复出现:LLM 的 tokenizer(把字节压成 token 再建模)、视频模型的时间压缩(Latte/Open-Sora)、MAGVIT 的 action tokenizer。人类工程师在这种「重述问题」上的收益,往往大于在原问题上死磕算法。

开源策略本身是这篇论文的「隐藏方法」。LDM → Stable Diffusion(2022.8,CompVis + Stability AI + Runway 联合)把代码与权重(按「研究+创作许可」)全部放出:单卡可跑 + 权重可下载 + 推理便宜 = 生态爆炸。两个月内 LoRA 微调社区、ControlNet(2023.2)、CivitAI 分发平台全部成型。对比 DALL·E 2/GPT-4 的 API 路线,SD 证明了生成模型的「可修改性」是独立的巨大价值——后来所有开源模型发布策略都在复刻这一课。

CLIP 是「借来的语义接口」。SD 之所以「听得懂」长文本 prompt,是因为文本编码器在 CLIP 的对比空间里已经对齐了图文语义——LDM 自己没学任何语言理解。这个「组装成熟部件」的模式(VAE + U-Net + CLIP)与 GAN 时代的「一体化端到端」形成鲜明对照:深度学习的进步越来越像系统工程而不是单点算法突破。

批判性评价

最弱的一环:隐空间的代价是精细控制力。f=4 压缩让低级视觉细节(文字渲染、手指、精细纹理)成为长期痛点——VAE 解码器没见过的模式 U-Net 编码不出来,后来的补救(cascaded diffusion 的高分辨率 refine、SD3 的更大 VAE、DiT 路线回归更高维隐空间)都在还这笔债。训练数据的伦理问题(LAION 未过滤:版权、NSFW 内容)则由它引爆成法律问题(Getty 诉 Stability 案)——「数据债」第一次成为生成模型的一级议题。

依然重要的理由:它是「降低门槛改变世界」的教科书案例——DDPM 证明了扩散可行,LDM 证明了扩散可及。今天所有主流文生图/视频系统(SD 系、Sora、可灵)的架构骨架仍然是「压缩表征 + 扩散/流匹配 + 文本编码器」三件套,没有任何一个组件被换掉。