本文档解释了在Stable Diffusion v1中,文本提示是如何被编码并用于条件化图像生成过程的。文本条件化是通过将自然语言翻译成指导扩散过程的表示,从而使模型能够根据文本描述生成图像。有关模型整体架构的信息,请参阅模型架构,有关UNet骨干的具体细节,请参阅UNet架构。
Stable Diffusion v1中的文本条件化是一个多阶段过程,它将文本提示转换为嵌入(embeddings),然后使用这些嵌入来指导扩散过程。关键组件包括:
来源
Stable Diffusion v1使用预训练的CLIP(Contrastive Language-Image Pre-training,对比语言-图像预训练)ViT-L/14文本编码器将文本提示转换为嵌入。该编码器在训练和推理过程中保持冻结,意味着其权重不会被更新。
FrozenCLIPEmbedder类实现了这个文本编码器。
来源
编码前,文本提示必须先被分词。CLIP分词器将文本字符串转换为模型可以处理的token ID。
来源
文本嵌入过程:
[batch_size, sequence_length, embedding_dim]。来源
交叉注意力是允许UNet模型被文本嵌入条件化的机制。它的工作方式是:
来源
在Stable Diffusion的代码库中,交叉注意力是通过SpatialTransformer模块实现的,该模块集成到UNet架构中。该模块:
Attention类与文本嵌入执行交叉注意力。来源
文本条件化与潜在扩散过程的集成如下:
来源
Stable Diffusion v1使用无分类器引导(CFG)来增强文本到图像的对齐。
预测 = 无条件预测 + w * (有条件预测 - 无条件预测)来源
CLIP文本编码器架构:
来源
Stable Diffusion的Transformer实现中的注意力机制:
来源
UNet模型通过在多个分辨率应用的“空间转换器”来集成文本条件化。
来源
文本条件化的有效性取决于文本提示的质量。
| 提示类型 | 特性 | 示例 |
|---|---|---|
| 简单 | 基本描述 | “一张猫的照片” |
| 详细 | 特定属性 | “一张暹罗猫的照片,蓝眼睛,坐在红色沙发上” |
| 风格化 | 艺术指导 | “莫奈风格的水彩画猫” |
| 复杂 | 多元素 | “一只猫和一只狗在花园里玩耍,有花和喷泉” |
Stable Diffusion v1中的文本条件化存在一些局限性:
来源
CLIP ViT-L/14文本编码器具有以下规格:
| 参数 | 值 |
|---|---|
| 模型类型 | 视觉Transformer (ViT) |
| 版本 | Large/14 |
| 嵌入维度 | 768 |
| Transformer层数 | 12 |
| 注意力头数 | 12 |
| 最大序列长度 | 77个token |
| 词汇量大小 | 49,408 tokens |
| 模型状态 | 冻结(未训练) |
来源
文本条件化是使Stable Diffusion能够从文本描述生成图像的核心机制。它通过以下方式实现:
这种方法使模型能够理解和可视化自然语言中所描述的各种概念,使其成为创意应用和内容生成等领域的强大工具。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(21f890)