CLIP(Contrastive Language-Image Pretraining)
CLIP 由 OpenAI 开发,是一个 多模态(文本 + 图像)预训练模型,可以理解图像和文本之间的关联。它的核心思想是 通过对比学习(Contrastive Learning) 让模型学习 “文本 - 图像” 之间的匹配关系。
CLIP 的主要能力:
- 直接从自然语言描述中理解图片内容(不需要传统的分类标签)。
- 可以在 零样本(zero-shot) 条件下执行图像分类、风格匹配等任务。
- 可以作为视觉编码器,为 Stable Diffusion(SD)等模型提供文本指导。 CLIP 目前有多个版本,主要区别在于模型大小、训练数据量、以及不同的编码器架构:
版本 | 视觉编码器 | 文本编码器 | 训练数据 | 主要特点 |
---|---|---|---|---|
CLIP ViT-B/32 | ViT-B/32 | Transformer | 4 亿张图像 | 计算快,精度中等 |
CLIP ViT-B/16 | ViT-B/16 | Transformer | 4 亿张图像 | 精度比 ViT-B/32 更高 |
CLIP ViT-L/14 | ViT-L/14 | Transformer | 4 亿张图像 | 精度更高,但计算更慢 |
CLIP ViT-H/14 | ViT-H/14 | Transformer | 4 亿张图像 | 最高精度,但计算成本最大 |
CLIP ResNet-50/101 | ResNet-50/101 | Transformer | 4 亿张图像 | 适用于传统 CNN 任务 |
OpenCLIP(Hugging Face 版) | ViT 或 ResNet | Transformer | 40 亿张图像 | 训练数据更多,优化效果更好 |
其中,ViT(Vision Transformer)系列的 CLIP 更受欢迎,因为它们比 CNN 版本(ResNet)在处理复杂图像时表现更强。
Stable Diffusion(SD)如何使用 CLIP?
Stable Diffusion 主要使用 CLIP 的文本编码器(Text Encoder) 来处理用户输入的文本提示(prompt)。具体过程如下:
1. 文本编码(Prompt Encoding)
SD 使用 CLIP ViT-L/14(或 ViT-B/16)来将文本提示转换为 嵌入向量(Text Embedding),这样 AI 能够理解语义。例如:
"赛博朋克风格的夜晚城市" → CLIP → 向量表示
这个向量会引导 SD 生成符合描述的图像。
2. 计算图像相似度(Image Similarity)
如果你用 图生图(img2img) 或 风格迁移,CLIP 也会用来评估生成图像与输入文本的匹配程度,确保生成的图片符合描述。
3. Prompt Engineering(提示词优化)
高级用户会使用一些 CLIP 相关技术,比如:
- CLIP-Guided Prompting:用 CLIP 评估提示词的重要性,优化 Prompt 以提高 SD 生成质量。
- Negative Prompting:通过 CLIP 计算哪些特征应该被避免,比如让图片减少噪点、避免某些元素。
T5(Text-To-Text Transfer Transformer)是什么?
T5(Text-To-Text Transfer Transformer)是 Google 提出的 文本生成模型,它和 CLIP 不同,因为它是专门用来处理 自然语言任务(如翻译、摘要、问答)的。
SD 并没有直接使用 T5,但一些扩展模型可能会结合 T5 来增强 Prompt 处理,比如:
- Prompt Generation:T5 可能用于 自动优化提示词,让用户输入的短文本转化为更清晰的 Prompt。
- 风格转换:T5 可能用于 改写 Prompt,比如把“动漫风格”转换成更详细的描述。
总结
- CLIP 主要用于图像 - 文本对齐,SD 用它来解析 Prompt 并指导图像生成。
- CLIP 有多个版本,ViT-L/14 是 SD 里最常用的。
- T5 是 Google 开发的文本模型,SD 本身不直接使用它,但一些扩展工具可能会用 T5 来优化 Prompt。