条件控制:从文字到图像的桥梁

当你输入”一只戴墨镜的柯基在月球上冲浪”时,模型需要:理解”柯基”长什么样、”墨镜”怎么戴、”月球”的表面纹理、”冲浪”的姿态——然后把这些概念正确地组合在一张图里。这背后是三个精巧机制的配合。

第一步:CLIP 文本编码器——把文字变成向量

CLIP 是什么

CLIP(Contrastive Language-Image Pre-training)是 OpenAI 在 2021 年发布的模型。它在 4 亿张图片-文字配对上训练,学会了把文字描述和图像映射到同一个向量空间:

  • 语义相似的文字和图像,向量距离近
  • 语义不同的,向量距离远

当你输入一段 prompt,CLIP 的文本编码器把它变成一个 77×768 的 embedding 序列(每个 token 一个 768 维向量)。这个序列携带了丰富的语义信息——不仅有每个词的含义,还有词与词之间的关系。

为什么用 CLIP 而不是其他文本模型

因为 CLIP 的特殊训练方式让它学会了”视觉相关的语义”。普通的语言模型(如 BERT)理解语法和逻辑,但不知道”赛博朋克风格”长什么样。CLIP 见过几亿张图片-文字对,它知道:

  • “watercolor painting” 对应柔和的笔触和淡雅色彩
  • “cyberpunk” 对应霓虹灯、暗色调、未来感
  • “Studio Ghibli style” 对应特定的动画美学

这种视觉-语言对齐是纯语言模型无法提供的。

第二步:Cross-Attention——让图像”看到”文字

机制

U-Net 在多个分辨率层(64×64、32×32、16×16)插入了 cross-attention 层

  • Query (Q):来自 U-Net 的空间特征图(”图像的每个位置在问:我该放什么?”)
  • Key (K) 和 Value (V):来自 CLIP 文本 embedding(”文字提供答案”)
\[\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}}\right) \cdot V\] U-Net 特征图 32×32 空间位置 每个位置问: "我该画什么?" → 投影为 Query (Q) CLIP 文本: 77×768 → K, V Cross-Attention softmax(QKᵀ/√d) · V 空间位置选择性关注文本 条件化特征 左上角区域关注"月球" 中心区域关注"柯基"+"冲浪"

直觉

每个空间位置可以独立地”关注”文本中不同的部分。图片左上角的位置可能主要关注”月球表面”这几个token,而图片中心的位置关注”柯基”和”冲浪”。这种选择性注意力让模型能把正确的概念放在正确的位置。

Cross-attention 在多个分辨率层都有——低分辨率层(8×8, 16×16)负责全局布局(”月球在上,柯基在中”),高分辨率层(32×32, 64×64)负责细节填充(”墨镜的形状”、”皮毛的纹理”)。

第三步:Classifier-Free Guidance——放大文本控制

问题:条件信号太弱

仅靠 cross-attention,模型确实会考虑文本信息,但生成的图片往往只是”大致相关”——像是写了命题作文但只沾了个边。模型更倾向于生成”好看的通用图片”而非”严格匹配描述的图片”。

CFG 的天才设计

训练时:以 10-20% 的概率随机丢弃文本条件(用空 embedding 替代)。这让模型同时学会两种模式:

  • 有条件生成:$\varepsilon_\theta(z_t, t, c)$——”按文字画”
  • 无条件生成:$\varepsilon_\theta(z_t, t, \varnothing)$——”随便画”

推理时:两种都算,然后做外推:

\[\varepsilon_{\text{guided}} = \varepsilon_{\text{uncond}} + w \cdot (\varepsilon_{\text{cond}} - \varepsilon_{\text{uncond}})\]

其中 $w$ 是 guidance scale(通常 7-15)。

直觉解释

$\varepsilon_{\text{cond}} - \varepsilon_{\text{uncond}}$ 表示”文本条件指向的方向”——是”有文字引导”和”无文字引导”之间的差异。乘以 $w > 1$ 就是放大这个方向:不只是”考虑文字”,而是”强烈遵循文字”。

比喻:想象你在一个岔路口。$\varepsilon_{\text{uncond}}$ 说”随便走”,$\varepsilon_{\text{cond}}$ 说”往右偏一点”。CFG 做的是”不是往右偏一点,而是大步往右走”。$w=7$ 意味着把那个微弱的”右偏”信号放大 7 倍。

$w$ 太低(1-3):图片漂亮但不听话,和描述关系不大 $w$ 太高(>20):严格遵循文字但色彩饱和度爆炸、细节失真

这就是为什么 “guidance scale” 是 Stable Diffusion 里最重要的用户参数之一。

ControlNet:精确的空间控制

问题:文字无法精确控制构图

“一个人站在左边,一棵树在右边”——这种描述对 Stable Diffusion 来说非常难以精确执行。文字是模糊的空间指令。

ControlNet 的方案

ControlNet(Zhang et al., 2023)让你用空间条件图来精确控制生成:

  • Canny 边缘图:控制物体轮廓
  • 深度图:控制前后景关系
  • 人体姿态骨架:控制人物动作
  • 语义分割图:控制区域内容

架构极其巧妙:

  1. 复制 U-Net 编码器的 12 个 block(可训练副本)
  2. 原始 U-Net 锁定不动
  3. 副本接收空间条件输入
  4. 副本的输出通过零初始化卷积加回到原模型

“零初始化”保证训练开始时 ControlNet 的影响为零——模型从预训练的完美状态开始,逐渐学习新条件,永远不会破坏原有能力。

IP-Adapter:用图片当提示词

IP-Adapter(Ye et al., 2023)让你用一张参考图片来控制风格或内容——”画一张和这张风格类似的图”。

它用 CLIP 图像编码器提取参考图特征,通过独立的 cross-attention 层(和文本的 cross-attention 分开)注入到 U-Net 中。仅 22M 参数,却能实现精确的风格迁移。

总结:条件控制的层级

控制层级 机制 精度 灵活性
全局语义 CLIP 文本 + Cross-Attention 中等 最高(自然语言)
文本强度 Classifier-Free Guidance 可调 一个参数控制
空间结构 ControlNet 像素级 需要条件图
风格参考 IP-Adapter 需要参考图

下一篇预告

我们已经理解了 AI 生图的完整技术栈。最后一篇,我们把目光投向更大的画面:当前主流模型(SD 1.5/XL/3、DALL-E 3、Midjourney、Flux)各有什么特点?从 U-Net 到 DiT(Diffusion Transformer)的架构革命意味着什么?Flow Matching 如何让新一代模型只用 10 步就能生成高质量图片?下一篇:主流模型全景与未来方向。