跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Stable Diffusion 潜空间扩散生成流程详解

Stable Diffusion 文生图管线。流程包括:CLIP 文本编码为语义向量,高斯噪声初始化潜变量,U-Net 在文本条件下迭代去噪,最后经 VAE 解码输出图像。核心优势在于潜空间扩散节省计算资源,CLIP 提供语义控制,Scheduler 决定采样策略。理解该链路有助于掌握扩散模型知识骨架。

利刃发布于 2026/4/6更新于 2026/5/2019 浏览

文章配图

Stable Diffusion Pipeline

当你输入一句'A dog wearing a hat(戴帽子的狗)',模型最后输出一张高清图片。中间到底发生了什么? 这张图展示的,其实就是 Stable Diffusion 这类潜空间扩散模型(Latent Diffusion Model)最核心的工作流:文本 → 语义向量 → 潜空间噪声 → 逐步去噪 → VAE 解码成图像。 本文将按图逐块拆解,并补充它背后的关键概念与工程细节,让你真正理解扩散模型是如何'画画'的。


1. 这张图在讲什么?

这张图描述了典型的 Stable Diffusion 文生图管线:

  1. Prompt 文本 → CLIP 文本编码得到 text embeddings
  2. 从高斯噪声开始初始化潜变量 latents
  3. U-Net 在 text embeddings 条件引导下做多步迭代去噪(由 scheduler 控制)
  4. 得到最终的 conditioned latents
  5. 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)

因此最终的文本表示是一个矩阵:

\text{text\_embeddings} \in \mathbb{R}^{1 \times 77 \times 768}

这个 embedding 就是后续 U-Net 去噪过程的'条件信号',相当于让模型知道:它去噪的目标应该朝向'戴帽子的狗'。


3. 模块二:Gaussian Noise → Latents —— 为什么从噪声开始?

图的右上角是 Gaussian Noise(高斯噪声):

  • 形状:1×4×64×64

这就是 Stable Diffusion 的'起点'。

3.1 为什么不是直接在 512×512 像素上扩散?

这是 Stable Diffusion 的核心创新:。

不在像素空间扩散,而在潜空间(latent space)扩散
  • 真实图像:3×512×512
  • 潜空间:4×64×64

这相当于把图像压缩了 8 倍(512 / 64 = 8),计算量大幅下降。

这就是 Latent Diffusion 的意义:更快、更省显存,同时保持画质。

3.2 这 4 个通道是什么?

这是 VAE 编码后的 latent feature map 的通道数(对 SD 1.x 常见配置就是 4)。


4. 模块三:U-Net —— 扩散模型真正'画画'的地方

图中黄色块是 U-Net,它是扩散模型的核心网络,负责:

  • 输入:当前 timestep 的 noisy latents(含噪潜变量)
  • 条件:text embeddings
  • 输出:噪声预测(或直接预测 x0 / v,取决于训练方式)
4.1 U-Net 为什么叫 U-Net?

因为它是'编码器 - 解码器'的结构,中间通过 skip connection 保留空间细节,适合做图像相关任务。

4.2 文本是怎么'进'U-Net 的?

通常通过 Cross-Attention(交叉注意力):

  • Query 来自 latent feature
  • Key/Value 来自 text embeddings

这意味着:

模型每一步去噪时,都在不断'对齐'文字语义与图像潜空间结构。

4.3 CFG:提示词引导

虽然图里没写,但实际流程几乎都会用 Classifier-Free Guidance(CFG):

  • 同时跑 有条件(prompt) 与 无条件(空 prompt)
  • 两者结果线性组合,让生成更贴近 prompt

\epsilon = \epsilon_{\text{uncond}} + s \left( \epsilon_{\text{cond}} - \epsilon_{\text{uncond}} \right)

其中 s 是 guidance scale(常见 5~12)。


5. 模块四:Scheduler —— 控制'加噪/去噪'的时间策略

图右侧橙色块是 Scheduler algorithm to add noise,它负责管理扩散过程中的:

  • 时间步(timestep)
  • 噪声强度(noise schedule)
  • 采样算法(DDIM、Euler、DPM++ 等)
5.1 为什么图里写'Repeat N times'?

因为扩散模型的生成不是'一步到位',而是 多步迭代:

  • 通常 N = 20~50
  • 每一步根据 scheduler 指定的规则更新 latents

这就是所谓的 采样过程(sampling)。

去噪步数越多,通常细节越丰富,但耗时越长;不同采样器会影响风格与稳定性。


6. 模块五:VAE —— 从潜空间回到像素世界

图中绿色块是 VAE,它是一个:

  • Encoder:把图像压缩到 latent
  • Decoder:把 latent 解码回图像

在文生图里我们只用 Decoder:

image = VAE.decode(conditioned_latents)

输出图像尺寸是:3×512×512(RGB)

这也是图右下角 Output Image 的来源。


7. 串起来:Stable Diffusion 的整体流程(对应图)

结合图,我们可以用'工程视角'的伪流程理解:

  1. 输入 prompt
  2. 用 CLIP 把 prompt 编码成 text embeddings
  3. 初始化随机高斯噪声 latents(1×4×64×64)
  4. for t in timesteps:
    • U-Net(latents, t, text_embeddings) → 预测噪声
    • Scheduler 根据预测噪声更新 latents
  5. VAE 解码 latents → 输出 512×512 图片

8. 为什么这种结构强大?有三个关键优势

8.1 潜空间扩散:速度与质量的折中最佳解

相比像素扩散:更快、更省显存 相比 GAN:更可控、更稳定

8.2 CLIP 语义空间:文本可精细控制图像内容

Cross-attention + CFG 让 prompt 能精准影响形状、颜色、风格、细节。

8.3 Scheduler 可插拔:采样策略决定'生成气质'

不同 scheduler(Euler、DDIM、DPM++)决定:

  • 清晰度
  • 细节锐利程度
  • 风格偏向
  • 收敛速度

9. 读图小结

Stable Diffusion = 文本条件 + 潜空间扩散 + U-Net 去噪 + VAE 解码

Prompt 给方向 CLIP 给语义 U-Net 做生成 Scheduler 控节奏 VAE 把结果搬回像素世界

理解了这条链路,就可以掌握扩散模型最重要的知识骨架。

目录

  1. 1. 这张图在讲什么?
  2. 2. 模块一:CLIP Model —— 文本如何变成“可计算的语义”
  3. 2.1 为什么是 77×768?
  4. 3. 模块二:Gaussian Noise → Latents —— 为什么从噪声开始?
  5. 3.1 为什么不是直接在 512×512 像素上扩散?
  6. 3.2 这 4 个通道是什么?
  7. 4. 模块三:U-Net —— 扩散模型真正“画画”的地方
  8. 4.1 U-Net 为什么叫 U-Net?
  9. 4.2 文本是怎么“进”U-Net 的?
  10. 4.3 CFG:提示词引导
  11. 5. 模块四:Scheduler —— 控制“加噪/去噪”的时间策略
  12. 5.1 为什么图里写“Repeat N times”?
  13. 6. 模块五:VAE —— 从潜空间回到像素世界
  14. 7. 串起来:Stable Diffusion 的整体流程(对应图)
  15. 8. 为什么这种结构强大?有三个关键优势
  16. 8.1 潜空间扩散:速度与质量的折中最佳解
  17. 8.2 CLIP 语义空间:文本可精细控制图像内容
  18. 8.3 Scheduler 可插拔:采样策略决定“生成气质”
  19. 9. 读图小结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Dify 工作流实战:快速搭建 Web 登录界面
  • 阿里 CoPaw 桌面智能体工作台开源
  • LLaMA-Factory 本地环境搭建与安装指南
  • PyCharm Linux 安装与使用指南
  • 利用文心一言为智能体设计稳定的工作流提示词
  • 深度学习模型优化策略与实战调参
  • 使用 Copilot 反向代理部署 Claude 本地开发环境
  • RustFS Docker 部署实战:MinIO 高性能替代方案
  • WorkBuddy 接入 QQ 机器人配置指南
  • Claude Code 本地环境配置与使用指南
  • 生产级 AI 服务优化:Flask 蓝图与日志管理实践
  • Spring Boot 结合 Leaflet 实现省级旅游口号 WebGIS 可视化
  • Python 打造极简 OpenClaw Agent:openclaw-mini 架构解析
  • 基于 ESP32 的 Moji 2.0 小智 AI 桌面机器人硬件与软件架构
  • 通义万相 2.1 模型能力解析与部署指南
  • OpenRouter 快速入门:统一接口调用 500+AI 模型
  • 免费支持中文的图形化数据库管理工具:Navicat Premium Lite、Chat2DB、SQLynx、DBeaver
  • 璞致 PZ-VU9P/VU13P FPGA 开发板与 Xilinx UltraScale Plus 架构解析
  • Transformer 工作原理详解:基于 Python 的文本分类与生成实现
  • C 语言 Web 开发:CGI、FastCGI 与 Nginx 实战解析

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online