核心要点

  • 先用 VAE 把图像编码到 8 倍下采样的低维潜空间,扩散在潜空间而非像素空间运行

  • 潜空间张量元素数约为像素的 1/48,去噪 U-Net 计算量与显存大幅下降

  • 文本条件通过 CLIP 文本编码器经交叉注意力注入 U-Net,实现文生图

  • 采样完成后由 VAE 解码器把潜向量还原为高分辨率图像,Stable Diffusion 即该范式

标准回答

核心思想:把扩散搬到潜空间

朴素扩散直接在像素空间去噪,512×512×3 维度极高,每步 U-Net 都要处理百万级像素,训练和采样都很昂贵。Latent Diffusion 先训练一个 VAE(或 VQ 自编码器),把图像压缩成例如 64×64×4 的潜表示(空间下采样 8 倍),扩散过程只在这个低维潜空间中进行。

为什么高效

潜空间元素数约为像素空间的 1/48,去噪网络处理的张量大幅缩小,计算量、显存、采样时间都显著下降,使消费级 GPU 也能跑文生图。VAE 负责「感知压缩」(去掉高频冗余、保留语义),扩散负责在压缩域里建模分布。

条件注入

文本提示经 CLIP 文本编码器变成嵌入,通过交叉注意力注入 U-Net 各层,引导生成内容;配合无分类器引导(CFG)增强文本对齐

完整流程

文本 → CLIP 编码 → 在潜空间用 U-Net 迭代去噪(DDIM/DPM-Solver 加速)→ VAE 解码器还原为像素图。Stable Diffusion 正是这一架构的代表实现。

常见误区

⚠️ 常见踩坑

潜空间不是「随便压缩」,VAE 要保证重建质量否则细节丢失;也别把 VAE 的潜空间和扩散加噪混为一谈——VAE 只做编码/解码,扩散在其潜空间内独立加噪去噪。

追问

追问 1VAE 在 Stable Diffusion 中起什么作用?

VAE 编码器把高分辨率图像压缩到低维潜空间(感知压缩),让扩散在低维高效运行;采样结束后 VAE 解码器把潜向量还原为像素图。它本身不参与去噪,只负责像素空间与潜空间之间的双向转换,质量好坏直接影响成图清晰度。

追问 2文本条件是怎么注入 U-Net 的?

提示词经 CLIP 文本编码器得到序列嵌入,作为交叉注意力的 key/value,U-Net 中间特征作为 query,使每一步去噪都「看见」文本语义。再叠加无分类器引导(CFG),通过有条件与无条件预测的外插增强文本对齐度。

追问 3SDXL/DiT 相比早期 Latent Diffusion 改了什么?

SDXL 用更大的 U-Net、双文本编码器和精修(refiner)阶段提升细节;新一代用 DiT(Diffusion Transformer)以 Transformer 取代 U-Net 提升可扩展性。但「在 VAE 潜空间做扩散」这一核心思想保持不变。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。