CLIP(Contrastive Language–Image Pre-training,对比语言-图像预训练) 是OpenAI在2021年发布的多模态预训练里程碑模型,核心是用对比学习把图像和文本映射到同一个共享语义空间,实现“图文语义对齐”,并具备零样本迁移能力——无需微调就能直接适配海量下游任务。
一、背景
1. 问题
- 传统视觉模型(如ResNet、VGG)依赖人工标注(如ImageNet的1000类),且只能做固定类别分类,泛化差、成本高。
- 多模态模型此前多是“单模态+融合层”,跨模态对齐弱,难以直接用自然语言理解图像。
2. 解决方法
- 用4亿互联网无标注图文对预训练,零人工标注。
- 用对比学习替代传统分类,让模型自主学习语义关联。
- 实现零样本(Zero-Shot):用自然语言描述就能识别新类别,无需重训。
二、架构:双塔+共享空间
CLIP采用纯双塔(Two-Tower) 的设计,无跨模态交互层,极简高效,两个编码器分别处理图像/文本,最终输出同维度(512维)的特征向量,对齐到共享语义空间。
1. 图像编码器(Image Encoder)
负责把图片转成512维向量,提供两种主流方案:
(1)ResNet系列(CNN)
- 基于ResNet-50/101/152,移除分类头,新增投影层(Projection Head)。
- 流程:卷积提取局部特征 → 全局平均池化 → 线性投影到512维。
- 优势:速度快、算力需求低,适合轻量部署。
(2)Vision Transformer(ViT)系列(主流)
- 基于ViT-B/32、ViT-L/14等,把图像切为固定大小Patch(如32×32),转成序列输入Transformer。
- 流程:图像 → 切Patch → 嵌入+位置编码 → Transformer编码器 → 取
CLS token→ 投影到512维。 - 优势:全局建模强、语义对齐更好,大模型(ViT-L/14)性能远超ResNet。
2. 文本编码器(Text Encoder)
基于简化版Transformer(仅编码器,无解码器),把文本转成512维向量:
- 输入:BPE分词(OpenAI Byte-level),最长77个Token,加特殊标记
<|startoftext|>/<|endoftext|>。 - 流程:Token嵌入 → 可学习位置编码 → 多层Transformer(自注意力+前馈) → 取
CLS token→ 投影到512维。 - 特点:轻量高效,适配短文本(图文描述),不做生成只做编码。
3. 共享空间与投影
- 两个编码器输出的向量维度统一为512,保证可直接计算相似度。
- 用余弦相似度(Cosine Similarity)衡量图文匹配度:
$$\text{sim}(I, T) = \frac{I \cdot T}{|I| \cdot |T|}$$
(I=图像向量,T=文本向量,值越大越匹配)。
三、训练核心:对比学习
1. 训练数据
- 约4亿对互联网图文对(如网页图片+标题/描述),无人工标注,完全自监督。
- 批次大小:N=32768(超大批次,保证负样本足够多)。
2. 对比学习逻辑
对一个批次N张图+N段文本,构建N×N相似度矩阵:
- 对角线:正样本(匹配的图文对,如“猫图+猫描述”)。
- 非对角线:负样本(不匹配的图文对,如“猫图+狗描述”)。
3. 损失函数(InfoNCE)
目标:最大化正样本相似度、最小化负样本相似度,双向对称损失:
$$L = \frac{1}{2}(L_{I \to T} + L_{T \to I})$$
- 图像→文本损失:对每张图,计算其与所有文本的softmax,只让正样本概率最大:
$$L_{I \to T} = -\frac{1}{N}\sum_{i=1}^N \log\frac{\exp(\text{sim}(I_i, T_i)/\tau)}{\sum_{j=1}^N \exp(\text{sim}(I_i, T_j)/\tau)}$$ - 文本→图像损失:对每段文本,计算其与所有图像的softmax,只让正样本概率最大。
- τ(温度系数):控制分布锐度,通常取0.07。
4. 训练目标
让语义相近的图文向量在空间中距离近,语义无关的距离远,实现跨模态语义对齐。
四、零样本推理
CLIP训练完成后,无需微调,直接用自然语言做任务,核心是Prompt Engineering。
1. 零样本图像分类(示例)
- 定义类别Prompt模板:
"a photo of a {class}"(如"a photo of a cat")。 - 对每个类别生成文本向量(
T_cat、T_dog、T_bird…)。 - 输入图像,生成图像向量
I。 - 计算
I与所有文本向量的余弦相似度,取最高相似度的类别为预测结果。
2. 零样本图文检索
- 用自然语言搜图片:输入“一只坐在沙发上的金毛”,返回最匹配的图片。
- 用图片搜文本:输入一张图,返回最匹配的描述。
五、其他
1. 模型变体(主流)
- ViT-B/32:轻量、速度快,适合部署。
- ViT-L/14:性能最强,零样本准确率最高,算力需求大。
- ResNet-50:速度快、显存小,适合低资源场景。
2. 优势
- 零样本泛化:不用重训,直接适配新类别/新任务。
- 跨模态对齐:图像与文本语义深度绑定,理解能力强。
- 数据效率高:4亿无标注数据,成本远低于标注数据。
- 开源易用:Hugging Face提供预训练权重,一行代码调用。
3. 局限性
- 数据偏见:训练数据来自互联网,易带偏见(性别、种族、文化)。
- 分辨率限制:ViT通常用224×224,高分辨率图像性能下降。
- 长文本弱:文本编码器仅支持77个Token,长文本理解差。
- 无生成能力:仅做编码,不能生成图像/文本(需结合扩散模型)。
六、主流应用场景
- 零样本图像分类:不用标注,识别任意新类别(如“熊猫”“无人机”)。
- 图文检索:电商搜图、内容库检索、跨模态搜索。
- AIGC(图像生成):作为判别器,与Stable Diffusion、Midjourney结合,保证生成图符合文本描述。
- 视觉问答(VQA):理解图像并回答自然语言问题。
- 内容审核:用文本描述检测违规图像(如暴力、色情)。
- 多模态大模型基座:作为LLaVA、MiniGPT-4等模型的视觉编码器。