
Stable Diffusion Pipeline
当你输入一句'A dog wearing a hat(戴帽子的狗)',模型最后输出一张高清图片。中间到底发生了什么? 这张图展示的,其实就是 Stable Diffusion 这类潜空间扩散模型(Latent Diffusion Model)最核心的工作流:文本 → 语义向量 → 潜空间噪声 → 逐步去噪 → VAE 解码成图像。 本文将按图逐块拆解,并补充它背后的关键概念与工程细节,让你真正理解扩散模型是如何'画画'的。
1. 这张图在讲什么?
这张图描述了典型的 Stable Diffusion 文生图管线:
- Prompt 文本 → CLIP 文本编码得到 text embeddings
- 从高斯噪声开始初始化潜变量 latents
- U-Net 在 text embeddings 条件引导下做多步迭代去噪(由 scheduler 控制)
- 得到最终的 conditioned latents
- VAE 解码成真实像素图输出(如 512×512)
2. 模块一:CLIP Model —— 文本如何变成'可计算的语义'
图左侧是 CLIP Model,主要过程包括:
- Tokenizer(分词器):把文字拆成 token
- Token to Embedding:把 token 映射到向量空间
- 输出 Text Embeddings (1×77×768)
2.1 为什么是 77×768?
以 SD 1.x 为例:
- 最大 token 长度固定为 77(包含起止符号等)
- 每个 token 对应一个 768 维语义向量(CLIP Text Encoder 的 hidden size)
因此最终的文本表示是一个矩阵:
这个 embedding 就是后续 U-Net 去噪过程的'条件信号',相当于让模型知道:它去噪的目标应该朝向'戴帽子的狗'。
3. 模块二:Gaussian Noise → Latents —— 为什么从噪声开始?
图的右上角是 Gaussian Noise(高斯噪声):
- 形状:1×4×64×64
这就是 Stable Diffusion 的'起点'。
3.1 为什么不是直接在 512×512 像素上扩散?
这是 Stable Diffusion 的核心创新:。

