从一句话到一张图:看懂 Stable Diffusion 的“潜空间扩散”生成流程(配图详解)

Stable Diffusion Pipeline

Source: Aayush’s Blog, “Stable Diffusion using Hugging Face – Putting everything together” (2022).Used with attribution.

当你输入一句 “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 把结果搬回像素世界

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

Read more

Java 大视界 -- Java 大数据在智能家居能源消耗趋势预测与节能策略优化中的应用(433)

Java 大视界 -- Java 大数据在智能家居能源消耗趋势预测与节能策略优化中的应用(433)

Java 大视界 -- Java 大数据在智能家居能源消耗趋势预测与节能策略优化中的应用(433) * 引言: * 正文: * 一、智能家居能源管理的核心痛点与 Java 大数据的价值 * 1.1 行业核心痛点(基于《2024 中国智能家居行业白皮书》) * 1.2 Java 大数据的核心价值(实战验证适配性) * 二、技术架构设计实战(纵向架构图) * 2.1 核心技术栈选型(生产压测验证版) * 2.2 关键技术亮点(博主实战总结) * 三、核心场景实战(附完整可运行代码) * 3.1 场景一:能耗趋势预测(线性回归 + LSTM 融合模型) * 3.1.1 业务需求 * 3.1.

Rokid 手势识别技术深度解析:解锁 AR 无接触交互的核心秘密

Rokid 手势识别技术深度解析:解锁 AR 无接触交互的核心秘密

引言 在聊手势识别前,咱们先搞清楚:Rokid是谁?它为啥能把AR手势做得这么自然? Rokid是国内AR(增强现实)领域的“老兵”了,从2014年成立就盯着一个目标——让AR走进日常。你可能见过它的产品:能戴在脸上的“AR眼镜”Max Pro、能揣在兜里的“AR主机”Station 2、适合专业场景的“Station Pro”,这些设备不是用来“炫技”的,而是想让咱们摆脱手机、手柄的束缚,直接用手“摸”虚拟东西。 而手势识别,就是Rokid给AR设备装的“最自然的遥控器”——比如调大虚拟屏幕像捏橡皮一样捏合手指,翻页像翻书一样挥手。但不同设备、不同开发需求,需要搭配不同版本的SDK(软件开发工具包),这就像“不同型号的手机要装对应版本的APP”。 一、基础认知:先选对版本,避免开发走弯路 Rokid手势识别技术随SDK版本迭代持续优化,不同版本适配的Unity(开发工具)

基于深度学习YOLO算法+qwen deepseek大模型的无人机河道巡检系统平台 支持AI对话与文档生成分析

基于深度学习YOLO算法+qwen deepseek大模型的无人机河道巡检系统平台 支持AI对话与文档生成分析

YOLO+DeepSeek河道环境检测系统 项目简介 基于改进YOLO深度学习模型与DeepSeek大语言模型的河道环境智能检测与分析系统。本系统采用先进的计算机视觉技术,结合自然语言处理能力,实现对河道环境中各类目标的高精度检测与智能分析。系统支持单张图片、批量图片、视频文件及实时摄像头等多种输入方式,提供从环境检测到智能建议的完整解决方案,为河道治理、环境保护与水资源管理提供智能化技术支持。 ✨ 核心亮点 • 多场景检测支持:全面覆盖单张图片、图片文件夹、视频文件、实时摄像头四种输入方式 • 改进YOLO模型:基于YOLOv5/v8/v11/v12的优化版本,专注河道环境目标检测 • AI智能分析:集成DeepSeek/Qwen大模型,生成专业的河道环境分析与治理建议 • 实时处理反馈:前端实时展示检测进度与结果,支持实时视频流处理 • 完整技术栈:PyTorch深度学习 + SpringBoot后端 + Vue3前端 + Flask中台的完整架构 • 开箱即用:提供完整源码、预训练模型与详细部署文档,快速上手使用 🌊 检测对象范围 系统可精准识别河道

FPGA光通信2——Aurora 64B/66B的开发使用

FPGA光通信2——Aurora 64B/66B的开发使用

可参考GZH:小蘇的FPGA         FPGA光通信的开发过程中,最简便的方式为Aurora 64B66B,开发人员无需关注2bit同步头,加解扰等过程,开放给开发人员的主要是AXI-Stream用户数据接口。         Aurora是一款可扩展的轻量级、高数据速率链路层高速串行通信协议,支持全双工或单工,支持64B/66B,8B/10B编码。 一、Aurora 64B/66B使用介绍         该核的使用架构主要如下:借助xilinx 核,开发人员可根据用户接口实现多通道间的光通信。最大支持16lane。 1.1 、IP核的介绍         参考PG074, 该核的内部结构如下:         其中,Lane logic:每个GT收发器由一个lane逻辑模块实例驱动,初始化每个收发器,处理控制字符的编解码,并执行错误检测。         Global logic: 全局逻辑模块执行通道绑定以进行通道初始化。在运行过程中,该通道跟踪Aurora 64B/66B协议定义的Not Ready空闲字符,并监控所有通道逻辑模块的错误。