云镜收藏

稍后阅读

清单保存在当前浏览器,方便下次回来继续阅读。

清单还是空的

在笔记卡片或正文页点击“加入稍后阅读”即可收藏。

卷4 · 生成模型

4.4 Latent Diffusion 与 Stable Diffusion:生成模型工程学

约 6 分钟阅读
全书目录

展开本章目录与同卷章节1. 核心决策:像素太贵,先压缩再扩散2. 三大件逐个拆2.1 VAE:KL-f8 自动编码器2.2 U-Net:带交叉注意力的去噪器2.3 文本编码器:CLIP text encoder3. 推理数据流(画得出才算懂)4. 谱系与升级逻辑5. 自测题6. 动手作业图解 · SD 推理全链路(Mermaid 版)7. 延伸资源同卷章节4.1 生成模型地图:五大家族一张图4.2 DDPM 原理与从零实现4.3 采样器与 Classifier-Free Guidance4.4 Latent Diffusion 与 Stable Diffusion:生成模型工程学4.5 DiT 与 Flow Matching:生成模型的现代化4.6 可控生成:ControlNet、IP-Adapter 与风格 LoRA4.7 视频生成:Sora 范式与开源阵营4.8 统一模型之争:Chameleon、Transfusion、Janus4.9 前沿瞭望:扩散语言模型

本章目标:拆解 SD 的三大件(VAE 压缩器 / U-Net 去噪器 / 文本编码器),理解”在潜空间做扩散”这个工程决策如何改变了整个行业。学完标准:能画出 SD 推理的完整数据流,知道 LoRA/ControlNet 挂在哪,能解释 SD1.5→SDXL→SD3 的升级逻辑。

1. 核心决策:像素太贵,先压缩再扩散

512×512×3 的图像直接做扩散,每步注意力都在百万级像素上算——训练成本天文数字。Latent Diffusion(Rombach et al., 2022)的洞察:感知上无信息的大量像素,先压掉再扩散:

图像 512×512×3→VAE 编码器潜码 64×64×4(压缩 48 倍)\text{图像 } 512\times512\times3 \xrightarrow{\text{VAE 编码器}} \text{潜码 } 64\times64\times4 \quad (\text{压缩 48 倍})

扩散的加噪、去噪、采样全部发生在 64×64 的潜空间,最后 VAE 解码器一步还原。为什么敢这么做:VAE 学到的潜码保留了”感知必要”的信息(4.1 说的 VAE 还魂——它不做生成,只做压缩/解压)。“LDM = VAE 压缩器 + 潜空间扩散模型 + 文本条件注入”,这个三段式是整个开源文生图生态的地基。

2. 三大件逐个拆

2.1 VAE:KL-f8 自动编码器

编码/解码各是一个卷积网络,潜码 4 通道、空间各 ÷8(f8)。训练用重建+KL+感知损失(3.4 VQ-VAE 同款工具箱的连续版)。你实际用它的地方:SD 一切微调(LoRA/ControlNet)都冻结 VAE——动它就会”编码-解码不对齐”;偶尔见的”SD 图发灰/细节糊”,一半嫌疑在 VAE 版本不匹配。

2.2 U-Net:带交叉注意力的去噪器

1.1 §5 埋过线:U-Net = 编码器(下采样提语义)+ 解码器(上采样还细节)+ 跳跃连接(把编码器各分辨率的特征直接接给解码器——空间细节不用挤过瓶颈)。SD 的 U-Net 加了关键一层:在若干分辨率上插入 cross-attention,其中 Q 来自图像特征、K/V 来自文本嵌入(1.2 章的 cross-attention 原样登场)——这就是”文生图的条件注入机制”本体:文本通过 K/V 决定”每个空间位置该注意文本里的哪些词”。

时间步 t 的注入则用 adaLN/调制方式(scale/shift 特征归一化参数——4.5 的 DiT 会把这个手法用到极致)。

2.3 文本编码器:CLIP text encoder

prompt 先过 CLIP 文本塔(1.6 的老朋友)得到 77×768 嵌入,再喂给 U-Net 的 cross-attention K/V。这就是”CLIP 分数过滤训练数据 + CLIP 编码 prompt”的双料地基(8.2 的伏笔:文本编码器的语义空间质量直接封顶”模型对 prompt 的理解力”)。

3. 推理数据流(画得出才算懂)

prompt → CLIP 文本塔 → 文本嵌入 (77,768) ─┐
                                          ├→ U-Net ×20步(DPM-Solver,潜空间) → 潜码 64×64×4 → VAE 解码 → 图
随机噪声 (64,64,4) ────────────────────────┘        ↑ CFG 每步条件/无条件两次前向 (4.3)

diffusers 实操(10 行):

from diffusers import StableDiffusionPipeline
import torch
pipe = StableDiffusionPipeline.from_pretrained(
    "stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16).to("cuda")
img = pipe("an impressionist oil painting of Hangzhou West Lake",
           negative_prompt="blurry, low quality",
           guidance_scale=7, num_inference_steps=25).images[0]

结构自检:这 10 行里,你能指出 VAE 在哪(pipeline 内部首尾)、U-Net 在哪(循环体)、CLIP 在哪(prompt 编码)、CFG 在哪(guidance_scale)、采样器在哪(25 步循环)吗?说不出的回去翻 §3。

4. 谱系与升级逻辑

  • SD1.5(2022):f8 VAE + CLIP ViT-L + 860M U-Net,256² 训练 512² 微调——生态爆发(LoRA/ControlNet 全长在它身上);
  • SDXL(2023):更大 U-Net(2.6B)+ 双文本塔(CLIP×2)+ 宽高比分桶训练(告别方图偏执)+ Refiner 两段式;
  • SD3 / FLUX(2024–):U-Net 换成 DiT/MMDiT(Transformer),DDPM 换成 Flow Matching——下一章的主角,架构与目标双双现代化。

升级逻辑一句话:压缩器稳定不动(VAE 几乎没换代),去噪器从 CNN 走向 Transformer,训练目标从 ε-MSE 走向流匹配,文本理解从单 CLIP 走向多编码器。看懂 SD 的换代,就看懂了生成模型工程学的半部历史。

5. 自测题

  1. LDM 的压缩比是多少?为什么敢在潜空间扩散?(48 倍;VAE 保住了感知必要信息,扩散只负责”结构”不负责”像素”)
  2. 文本条件注入的机制本体是什么?(U-Net 里的 cross-attention:图像做 Q、文本嵌入做 K/V)
  3. 为什么 LoRA/ControlNet 微调都冻结 VAE?(编码-解码一致性被破坏则全链路漂移)
  4. 跳跃连接解决什么问题?扩散 U-Net 里它还重要吗?(下采样丢的空间细节直通解码器;重要——细节重建全靠它)
  5. SDXL 相比 1.5 的四处升级?(大 U-Net/双文本塔/分桶/Refiner)
  6. SD3 换掉的是哪两个组件?(U-Net→DiT;DDPM→Flow Matching)

6. 动手作业

  1. 跑通 §3 的 10 行;把 output_type="latent" 拿到潜码,vae.decode 前先可视化它(reshape 成 4 通道热力图)——亲眼看看”扩散画布”长什么样;
  2. 逐行读 diffusers 的 StableDiffusionPipeline.__call__ 源码,把 §3 数据流的每个箭头对上代码行;
  3. 换 scheduler 实验:同一 prompt/seed 用 DDIM 50 步 vs DPM-Solver++ 20 步 vs LCM 4 步,三图对比;
  4. 挑战:潜码上手动加 10% 噪声再解码,观察哪类信息先坏(通常高频纹理先崩)——体会”潜码保结构、VAE 保质感”的分工。

图解 · SD 推理全链路(Mermaid 版)

flowchart LR
  P["prompt"] --> T["CLIP 文本塔"] --> E["文本嵌入 (77×768)"]
  N["随机噪声<br>64×64×4 潜码"] --> U["U-Net 去噪 ×20 步<br>(DPM-Solver)"]
  E --> U
  U -. "CFG:每步条件/无条件<br>两次前向(4.3)" .-> U
  U --> L["干净潜码 64×64×4"]
  L --> V["VAE 解码器(f8)"] --> IMG["512×512 图像"]

三个”到此一游”的老朋友:CLIP 文本塔(1.6)、cross-attention 注入(1.2 的 K/V 机制,在 U-Net 内部)、CFG(4.3)。SD 的推理不是新技术,是全书前半部分零件的一次总装——这也是为什么”看懂 SD”被当作多模态学习的中期检核点。

7. 延伸资源

  • LDM 论文(High-Resolution Image Synthesis with Latent Diffusion Models)
  • Hugging Face Diffusers 文档《Stable Diffusion 入门》——工程视角
  • SDXL / SD3 技术报告——换代逻辑的一手材料