LDM
Latent Diffusion Model
先把图像压到一个更小、但仍保留主要语义和视觉结构的 latent space,再在这个 latent space 里训练 diffusion model。
如果把传统 diffusion model 看成“直接在像素空间里加噪、去噪”,那么 LDM 的核心变化只有一个:
不再直接处理
的原始图像,而是先经过一个训练好的 autoencoder,把图像变成更紧凑的 latent,再在 latent 上做 diffusion。
这件事带来的直接收益是:
- 训练更省算力;
- 采样更快;
- 同时还能尽量保住图像质量;
- 更容易扩展到高分辨率和文本条件生成。
所以 LDM 的关键不只是“也能做 diffusion”,而是:
它把 diffusion 从 pixel space 搬到了更合适的 latent space。
为什么要从像素空间搬到 latent 空间
传统 diffusion model 在图像生成上的效果很好,但它有一个很现实的问题:
图像本身维度太高了。
如果输入是一张
LDM 论文的观察是:
- 图像里有很多高频细节,对人眼几乎不可感知;
- 真正重要的,是物体、布局、语义、风格这些“更高层”的信息;
- 如果能先把图像压缩到一个“视觉上基本等价”的 latent space,再去学生成,就能避免把大量算力浪费在像素级细枝末节上。
所以 LDM 不是想“把图像压得越小越好”,而是想找到一个折中点:
既足够小,能显著降低计算量;又足够好,不至于丢掉太多视觉质量。
这也是论文里反复强调的 trade-off:不是极端压缩,而是 mild compression。
LDM 的整体结构
LDM 可以分成两个阶段来看。
第一阶段:先训练一个 autoencoder
给定图像
再用解码器把 latent 重建回图像:
这里:
是原图; 是 latent; - 编码器会把空间尺寸下采样;
- 论文里把下采样因子写成
也就是说,latent 的空间分辨率比原图更低。
这个 autoencoder 的目标不是做一个最强压缩器,而是尽量满足两点:
- 重建要足够好;
- latent 要足够紧凑。
所以它学到的是一个“对生成友好”的表示空间,而不只是一个普通特征提取器。
第二阶段:在 latent 空间做 diffusion
有了
于是,整个生成流程就变成:
- 图像通过编码器进入 latent 空间;
- diffusion model 在 latent 空间里学习分布;
- 采样时先在 latent 空间生成一个 latent;
- 最后再通过解码器把 latent 变回图像。
所以 LDM 本质上是一个 two-stage generative model:
- 第一阶段学表示;
- 第二阶段学 latent 分布。
先回顾普通 diffusion 的训练目标
在普通 diffusion model 里,常见做法是让网络预测加到样本上的噪声。把输入记成
这里:
是扩散时间步; 是高斯噪声; 是把噪声加到原始样本后得到的结果; - 网络的任务是根据 noisy sample
和时间步 ,把原来的噪声预测出来。
这类训练目标的直觉是:
如果模型能准确预测噪声,它就等价于学会了如何一步步把噪声去掉。
LDM 的关键改动:把 换成
LDM 的核心数学变化其实非常简单。
普通 diffusion 是在像素空间训练:
LDM 则把图像先编码成 latent:
然后把 diffusion 的训练对象从
保留 diffusion 的主体训练方式,只是把训练空间从 pixel space 换到了 latent space。
为什么这样会更省算力
设原图大小是
那么 latent 的空间分辨率大约缩小了
虽然 latent 通道数
所以可以粗略理解成:
LDM 不是让每一步 diffusion 更聪明,而是让每一步 diffusion 工作在一个更小、更有语义的空间里。
LDM 学的到底是什么
LDM 并不是直接学“像素怎么恢复”,而是在 latent 空间学一个生成分布。
也就是说,它学的是:
- 哪些 latent 是自然图像对应的 latent;
- 在这个 latent 空间里,语义结构大概怎样分布;
- 如何从纯噪声出发,一步步走回一个合理的 latent。
最后再由解码器把 latent 变成图像。
所以从生成路径上看:
这和像素空间 diffusion 的区别是:
- 像素 diffusion 直接生成像素;
- LDM 先生成 latent,再 decode 成像素。
条件生成:LDM 怎么接文本
LDM 很重要的一点,是它不只是无条件生成模型。论文专门把 conditioning mechanism 做成了通用接口,使它可以接:
- 文本;
- 语义分割图;
- bounding boxes;
- image-to-image 输入;
- 其他 token-based conditioning。
最关键的做法是:
在 UNet 里加入 cross-attention。
设条件输入是
然后在 UNet 的中间层,把 latent feature 作为 query,把条件表示作为 key / value,做 cross-attention:
其中:
这里:
- UNet 的当前特征会问:“我现在这个位置、这个尺度,需要关注文本里的什么内容?”
- 文本编码给出“可以被查询的条件信息”;
- cross-attention 决定每个空间位置该从条件里读什么。
这一步让 LDM 能非常自然地做 text-to-image。
条件版 LDM 的训练目标
如果把条件输入也写进来,LDM 的目标会变成:
这条式子很好理解:
是带噪 latent; 告诉模型当前处在扩散过程的哪一步; 提供条件信息,例如文本 embedding; - 模型要在条件约束下预测噪声。
所以 text-to-image LDM 的本质并不是“直接预测一张符合文本的图”,而是:
在文本条件的指导下,做 latent space 的逐步去噪。
采样时在做什么
训练好以后,采样过程可以粗略理解成两步。
第一步,在 latent 空间里从随机噪声开始,一步步去噪,最终得到一个干净 latent:
第二步,把这个最终 latent 解码回图像:
所以 LDM 的采样成本主要来自那条 latent-space 的反向扩散链,而不是最终的解码器。因为解码器通常只需要一次前向传播,所以它相对便宜。
LDM 和普通像素扩散最大的差别
如果要把两者差别压缩成一句话,那就是:
- 普通 diffusion:在像素空间建模整个生成过程;
- LDM:先把图像映射到 latent,再在 latent 空间建模生成过程。
这带来三个非常关键的后果。
第一,计算量显著下降。因为 UNet 不再反复处理整张高分辨率像素图,而是在更小的 latent 上工作。
第二,模型更专注于语义结构,而不是过度浪费容量在人眼不敏感的细微像素细节上。
第三,更容易做高分辨率和多模态条件生成,因为 cross-attention 可以自然接文本等条件,而 latent 空间又让整体成本可控。
为什么不能压得太狠
看到“在 latent 空间做 diffusion 更省”以后,一个自然问题是:
那是不是 latent 压得越小越好?
不是。
如果压缩过强,虽然 diffusion 更快,但很多关键视觉信息也会丢掉;这样后续 diffusion 再强,也很难把根本不存在的细节凭空补回来。
LDM 论文的实验也强调了这一点:
- 压缩太弱,计算优势不明显;
- 压缩太强,图像质量会明显掉;
- 比较好的做法是“适度压缩”。
所以 LDM 的设计哲学不是极限压缩,而是:
找到质量和效率之间的最佳折中。
LDM 为什么重要
LDM 之所以成为一个很关键的节点,是因为它把 diffusion 从“效果很好但算力太重”的状态,推进到了“效果很好并且更实用”的状态。
更具体地说,它的重要性主要体现在三点。
第一,它证明了 diffusion 不一定非要在像素空间做。只要 latent 表示足够好,在 latent 上做 diffusion 同样可以保持很强的生成质量。
第二,它把高分辨率和多模态条件生成变得更可行。文本条件、布局条件、图像条件,都能通过统一的 conditioning 机制接进去。
第三,它直接影响了后来的 Stable Diffusion 这一整条路线。
LDM 和 Stable Diffusion 的关系
在工程上,很多人第一次真正接触 LDM,不是通过论文,而是通过 Stable Diffusion。
一个很简洁的说法是:
Stable Diffusion 就是一类建立在 LDM 思想之上的 text-to-image 系统。
Stable Diffusion 的模型卡也明确写到:
- 它是 latent diffusion model;
- 先用 autoencoder 把图像编码成 latent;
- 文本通过 CLIP text encoder 编码;
- 文本特征通过 cross-attention 喂给 UNet;
- 训练目标是预测加到 latent 上的噪声。
所以从结构上看,Stable Diffusion 把 LDM 的核心设计做成了大规模 text-to-image 系统。
总结
LDM = autoencoder + diffusion in latent space + conditional UNet with cross-attention
核心公式
latent 编码:
LDM 的核心训练目标:
LDM 的核心贡献,不是重新发明了 diffusion 的噪声预测目标,而是把 diffusion 搬到了一个更合适的工作空间:先通过 autoencoder 学一个感知上接近原图、但维度更低的 latent representation,再在这个 latent space 上训练 diffusion model。
这样做既保留了 diffusion 在生成质量上的优势,又显著降低了训练和采样成本。进一步地,LDM 通过 cross-attention 把文本等条件自然接进 UNet,使 text-to-image、layout-to-image、inpainting、super-resolution 等任务都能统一到同一框架中。
也正因为如此,LDM 成了后续 Stable Diffusion 这条路线最重要的基础之一。