Latent Diffusion Model (LDM)
潜在扩散模型(LDM)在自动编码器压缩后的潜在空间而非像素上运行扩散过程,这是 Stable Diffusion 背后的设计。
潜在扩散模型 (LDM) 是一种扩散模型,它通过对预训练自编码器生成的压缩表示进行去噪来生成数据,而不是直接处理原始像素。Robin Rombach、Andreas Blattmann、Dominik Lorenz、Patrick Esser 和 Björn Ommer 在使用潜在扩散模型进行高分辨率图像合成中提出了这一方法,该论文发表于 CVPR 2022。自编码器会去除建模成本高、对图像观感影响却不大的精细像素细节,因此扩散网络能将容量用于内容和构图。由此,训练和采样的成本远低于像素空间中的扩散过程,让最知名的 LDM Stable Diffusion能够在单个消费级GPU上生成图像。生成式 AI领域大多数当今的图像、视频和音频生成器都采用相同的两阶段设计。
潜空间扩散的工作原理#
第一阶段负责压缩图像。编码器会将尺寸为 H×W×3 的图像映射为尺寸为 H/f×W/f×c 的潜变量,其中 f 是下采样因子,c 是潜变量通道数;解码器则将潜变量映射回像素。Rombach 及其同事使用感知损失和基于图块的对抗目标训练自编码器,类似于 GAN判别器,从而让重建图像保持清晰;他们还使用小型 KL 惩罚项使潜变量接近标准正态分布,或通过向量量化对潜变量进行正则化。下采样因子为 4 到 16 时,速度与质量较为平衡:像素空间训练(f = 1)速度较慢,而 f = 32 的压缩程度过高,导致样本质量下降。Stable Diffusion 的自编码器使用 f = 8 和 4 个通道,因此下面的代码会对照片进行编码、再解码,并测量往返过程中损失的信息:
import urllib.request
import numpy as np
import torch
from diffusers import AutoencoderKL
from PIL import Image
# Stable Diffusion's autoencoder, the first stage of a latent diffusion model
vae = AutoencoderKL.from_pretrained("stabilityai/sd-vae-ft-mse")
# Load a photo and scale its pixels to [-1, 1]
image = Image.open(urllib.request.urlopen("https://ultralytics.com/images/bus.jpg")).convert("RGB").resize((480, 640))
x = torch.tensor(np.array(image), dtype=torch.float32).permute(2, 0, 1)[None] / 127.5 - 1
# Encode to the latent that diffusion runs on, then decode back to pixels
with torch.no_grad():
latent = vae.encode(x).latent_dist.mode()
recon = vae.decode(latent).sample.clamp(-1, 1)
psnr = 10 * torch.log10(4 / torch.mean((recon - x) ** 2))
print(f"image {tuple(x.shape)} -> latent {tuple(latent.shape)}: {x.numel() // latent.numel()}x fewer values")
print(f"reconstruction PSNR: {psnr:.1f} dB")
Image.fromarray(((recon[0] + 1) * 127.5).byte().permute(1, 2, 0).numpy()).save("bus_reconstructed.jpg")它会打印 image (1, 3, 640, 480) -> latent (1, 4, 80, 60): 48x fewer values 和 reconstruction PSNR: 23.0 dB。保存的 bus_reconstructed.jpg保留了公交车、行人和街道,但公交车侧面的细小字样变得模糊不清;这是 4 通道潜变量无法保留的精细细节。
第二阶段是在这些潜变量上训练常规扩散模型。训练时,先编码图像,再在随机步骤添加高斯噪声,然后训练去噪网络预测噪声;原始方法使用 U-Net,而大多数较新的模型使用扩散 Transformer。在整流流模型中,网络预测的则是将噪声带向干净潜变量的速度。条件信息通过交叉注意力层输入,使潜变量能够关注文本提示、类别标签或语义图的嵌入。生成过程从随机潜变量噪声开始,在条件引导下逐步去噪,最后只运行一次解码器,因此每个成本高昂的步骤都只需处理较小的潜变量。
从 Stable Diffusion 到当前模型#
- Stable Diffusion:该模型于 2022 年 8 月发布,将 LDM 方法扩展到 512×512 文生图任务,使用 64×64×4 潜变量、8.6 亿参数的 U-Net 和 CLIP 文本编码器,并开放权重供任何人下载。
- Stable Diffusion 3:改用 16 通道自编码器,使重建 PSNR 从 4 通道时的 25.12 dB 提高到 28.62 dB;它还用基于整流流训练的多模态扩散 Transformer 替换了 U-Net。Black Forest Labs 的 FLUX.1 模型也使用整流流 Transformer 对 16 通道潜变量进行去噪。
- 视频和音频:视频生成器会在空间和时间上压缩片段;OpenAI 称 Sora 会将视频压缩到低维潜空间,并将其拆分为时空图块。AudioLDM 和 Stability AI 的 Stable Audio 则将同一方法应用于频谱图或波形潜变量。
- 潜空间一致性模型:对 LDM 进行蒸馏,使其只需 2 到 4 步而非 20 到 50 步即可生成内容,从而实现近实时生成。
LDM 与相关术语#
- 像素空间扩散模型:对每个像素执行加噪和去噪过程。LDM 也是一种扩散模型,区别只在于扩散过程发生的位置。
- 变分自编码器:VAE 通过一次解码采样得到的潜变量来生成内容,其生成样本往往较模糊。LDM 只使用 VAE 风格的自编码器进行压缩,并由扩散模型负责生成。
- Stable Diffusion: Stability AI、CompVis 和 Runway 推出的一类 LDM,因此每个 Stable Diffusion 模型都是 LDM,而 LDM 还包括 FLUX、视频生成器和音频模型。
应用场景#
LDM 可用于文本生成图像、图像修复(原论文当时在该任务上创造了新的最先进水平)、超分辨率以及从语义图生成图像。在计算机视觉中,它们也可用于生成合成数据,例如难以拍摄的罕见缺陷、特殊天气或少见视角。生成的图像没有标签,Ultralytics 的 auto_annotate 函数可通过为这些图像所在文件夹添加标签来处理:它使用YOLO26模型检测物体,再用 Meta SAM 分割模型勾勒每个检测框,并生成用于训练的 YOLO 格式分割标签。










