一、潜在扩散模型:把高分辨率生成从像素空间搬到潜在空间
在 LDMs 出现之前,高分辨率图像生成一直卡在一个很现实的问题上:质量、效率、可控性很难同时做好。
GAN 生成得快,但训练不稳定,模式崩溃也不是少见;VAE 更稳,可图一出来就容易发虚;像素空间的扩散模型质量很强,可代价也最直接——算力和时间都烧得厉害,想把它推到高分辨率,门槛不低。
LDMs 的思路其实不复杂:先把图像压到一个感知上还说得过去的低维潜在空间,再在这个空间里做扩散。粗活交给自编码器,生成交给扩散模型,避免所有东西都挤在像素维度里硬算。这不是'更高级'的花活,更多是一次比较务实的拆分。

1.1 先解决压缩,再谈生成
LDMs 的第一阶段是自编码器。输入一张 RGB 图像 x,编码器把它压成潜在表示 z,解码器再从 z 还原回图像 \tilde{x}。关键不在'压得多狠',而在'压完以后还能不能看'。
这里和普通 VAE 最大的区别,是训练目标换了。VAE 很依赖像素级损失和 KL 正则,结果经常是图像变平、细节被抹掉。LDMs 更偏向感知重建,常见组合是重建损失、感知损失和 PatchGAN 对抗损失一起上。说白了,就是不强求每个像素都一模一样,而是更在意人眼看起来像不像。
下采样因子 f 是这一步最关键的取舍之一。压得太狠,潜在空间太小,细节丢得快;压得太松,后面的扩散模型又会重新背上沉重计算。论文里的经验很明确:f=4 和 f=8 往往比较平衡。前者更适合超分、修复这类吃细节的任务,后者更适合文生图和无条件生成,效率更好。
还有一点容易被忽略:LDMs 没有把 KL 正则当成唯一答案,也允许用 VQ 风格的正则化。它们放得更轻,目的不是把潜在空间管得死死的,而是让它足够平滑、又别把表达能力压没了。这个选择挺像工程里的常见判断:宁愿少一点规整,也别把上限先锁死。
1.2 真正省钱的是扩散过程
第二阶段才是 LDMs 的核心。传统扩散模型直接在像素空间去噪,分辨率一高,计算量就很难看。LDMs 只是把同一套损失和采样逻辑挪到潜在空间里,公式本身没怎么变,变的是处理对象。

如果说像素空间像是在'毛坯大平层'里装修,那潜在空间更像是已经整理过的'精装小户型'。你还可以继续生成,但不用再为每块地砖、每道墙缝付出同样的代价。
训练时,模型预测的是潜在变量上的噪声;采样时,从随机噪声开始,一步步去噪,最后再交给解码器还原成图像。真正的好处不在于去噪步骤变少了,而在于每一步都便宜了很多。再配上 DDIM、PLMS 这类快速采样方法,原来几百步的过程可以压到几十步,体验差别会很明显。
这里的骨干网络还是 U-Net。这个选择很朴素,但确实合适:图像是二维结构,U-Net 的卷积归纳偏置比把图像硬当序列处理更自然。它保留局部结构,也能通过跳跃连接把细节带回来。扩散模型在图像上表现好,不是因为架构多新,而是这套组合很顺手。
1.3 条件控制靠交叉注意力
LDMs 另一个真正有用的点,是它不只会'生成',还比较容易'听话'。
论文里用的是交叉注意力机制。条件信息可以是文本,也可以是语义图、深度图、边缘图,先通过一个领域特定编码器变成统一格式,再注入到 U-Net 里。这样做的好处很直接:条件输入不需要每次都重新设计一套生成器,接口相对统一,扩展也快。
交叉注意力的直觉也不复杂:图像里的位置发出查询,条件信息提供键和值,模型根据相关性决定每个位置该看哪些条件。浅层更偏布局和轮廓,中层更偏物体和形状,深层更偏纹理和光影。它不是一次把所有条件信息硬塞进去,而是分层地影响生成,这比简单拼接稳得多。
这也是 Stable Diffusion 后来能做文生图、图生图、修复、超分和各种控图的根子。底层接口统一了,外面能接的东西就多了。



















