跳转至

5.1 SDXL

所属章节:第 5 章 模型演进与系统对比
课时:90 分钟
前置:SD1.5 架构、Cross-Attention
对应面试题:A10
一句话目标:学完能说出 SDXL 的四项核心改动,解释它们分别解决什么问题,并讲清 base + refiner 的分工。


1. 学习目标

学完本节,你应该能够:

  1. 说出 SDXL 相比 SD1.5 的核心改动;
  2. 解释 双文本编码器的作用;
  3. 解释 micro-conditioning 解决什么问题;
  4. 说明 base + refiner 的分工与代价;
  5. 解释 1024 分辨率/多宽高比训练;
  6. 用 90 秒回答 A10,并接住“SDXL 是不是只是更大”的追问。

2. 为什么 SDXL 重要

SD1.5 在 512 分辨率上很强,但有明显问题:

  • 高分辨率构图不稳;
  • 文本/指令跟随有限;
  • 多宽高比容易崩;
  • 细节/文字能力不足。

SDXL 的目标:

用更大的模型、更强的文本条件、更好的训练/条件设计,把质量推到 1024。


3. 核心改动一:双文本编码器

3.1 结构

  • CLIP ViT-L/14;
  • OpenCLIP ViT-bigG/14;
  • 两个编码器的 token 特征拼接;
  • OpenCLIP 的 pooled text embedding 加入时间步条件。

3.2 为什么有效

  • 两个编码器的语义/训练数据不同;
  • 拼接提供更丰富的文本表示;
  • pooled embedding 提供全局风格/语义;
  • 比 SD1.5 单一 CLIP-L 更强。

3.3 注意

  • 仍然受 77 token 限制(每个编码器);
  • 不是“无限长 prompt”;
  • SD3 才引入 T5 进一步缓解长文本。

4. 核心改动二:更大的 UNet

  • UNet 显著变大;
  • transformer block 更多;
  • 更高容量;
  • 训练/推理成本更高;
  • 细节、文字、构图能力提升。

面试时不要只说“更大”,要补:

更大模型 + 更强文本条件 + 更好训练,三者共同作用。


5. 核心改动三:Micro-conditioning

5.1 是什么

除了文本,还把以下信息作为条件:

  • 原始图像尺寸(original size);
  • 裁剪坐标(crop top-left);
  • 目标尺寸/宽高比(target size)。

这些信息被嵌入后加到时间步条件中。

5.2 解决什么问题

训练时图像会被随机裁剪/缩放:

  • 模型看到的是“裁剪后的图”;
  • 但不知道原图多大、裁了多少;
  • 容易学到裁剪偏差,构图不稳。

Micro-conditioning 告诉模型:

“这张图是从多大的图、哪个位置裁出来的,目标尺寸是多少。”

这样模型可以补偿裁剪/缩放,改善多宽高比构图。

5.3 面试要点

这是 SDXL 最容易被忽略、但很能体现“真懂”的设计。


6. 核心改动四:Base + Refiner

6.1 分工

  • Base:生成主体结构、语义、构图;
  • Refiner:对 base latent 做低强度 img2img,增强局部细节/纹理;
  • Refiner 是可选的。

6.2 为什么两阶段

  • 单个超大模型成本高;
  • 两阶段可以分别优化“结构”和“细节”;
  • 部署时可以只用 base,或 base + refiner。

6.3 代价

  • 两阶段增加延迟/显存;
  • refiner 不是万能,过度使用可能改变构图;
  • 很多场景 base 已经够用。

7. 其他改动

  • 原生 1024 训练;
  • 多宽高比 bucketing;
  • 更好的 VAE 重建;
  • 更大/更干净的数据;
  • aesthetic 过滤;
  • 训练技巧(EMA、混合精度等)。

8. 对比 SD1.5

维度 SD1.5 SDXL
文本编码器 CLIP-L CLIP-L + OpenCLIP bigG
分辨率 512 1024
条件 文本 cross-attn 双文本 + pooled + micro-conditioning
UNet 较小 更大
生成流程 单模型 base + refiner(可选)
多宽高比 一般 原生支持更好
文字/构图 较弱 明显提升

9. 90 秒回答:SDXL 的核心优化

面试官问:SDXL 的核心优化是什么?

参考回答:

“SDXL 不是单点改动,核心是四块:第一,双文本编码器,CLIP-L + OpenCLIP bigG,token 特征拼接,pooled embedding 加到时间步条件;第二,更大的 UNet,提升容量;第三,micro-conditioning,把原图尺寸、裁剪坐标、目标尺寸作为条件,解决多宽高比/裁剪偏差;第四,base + refiner 两阶段,base 出结构,refiner 低强度精修细节。再加上 1024 原生训练、多宽高比 bucketing 和更好的 VAE/数据。它不是只变大,而是文本条件、条件设计和训练一起升级。”


10. 追问与回答

追问 1:micro-conditioning 具体解决什么?

训练时随机裁剪会让图像内容和构图偏移;告诉模型裁剪信息,它可以学会补偿,改善多宽高比生成。

追问 2:refiner 是必须的吗?

不是。base 单独能出图;refiner 主要提升局部细节,代价是延迟/显存。

追问 3:SDXL 解决 77 token 了吗?

没有完全解决;仍是 77 token,只是双编码器提供更丰富表示。长文本靠 SD3 的 T5。

追问 4:SDXL 还是 UNet 吗?

是。SDXL 仍是 LDM/UNet;SD3 才转向 MMDiT。


11. 常见误区

  1. “SDXL 只是更大的 UNet”:还有双文本、micro-conditioning、refiner。
  2. 忽略 micro-conditioning:这是关键设计。
  3. 认为 refiner 必须用:可选。
  4. 说 SDXL 解决了 77 token:没有。
  5. 把 SDXL 说成新架构:仍是 LDM/UNet。

12. 课堂练习

答案见 06 章节练习与答案。

  1. 列 SDXL 四项核心改动。
  2. 解释双文本编码器。
  3. 解释 micro-conditioning。
  4. 画 base + refiner 流程。
  5. 用 90 秒回答 A10。

13. 自测清单

  • [ ] 能说四项改动;
  • [ ] 能解释双文本;
  • [ ] 能解释 micro-conditioning;
  • [ ] 能解释 base/refiner;
  • [ ] 能对比 SD1.5;
  • [ ] 能 90 秒回答 A10。

14. 本节材料为什么这样设计

  • 按“四项改动”组织:A10 需要结构化回答。
  • micro-conditioning 单列:区分“真懂”和“只知更大”。
  • refiner 讲取舍:避免说成必须。
  • 不写代码:本节是架构演进。

详细设计理由见 08 材料设计理由。


15. 下一节

5.2 SD3