banner
NEWS LETTER

CLIP

Scroll down

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. 零样本图像分类(示例)

  1. 定义类别Prompt模板:"a photo of a {class}"(如"a photo of a cat")。
  2. 对每个类别生成文本向量(T_catT_dogT_bird…)。
  3. 输入图像,生成图像向量I
  4. 计算I与所有文本向量的余弦相似度,取最高相似度的类别为预测结果。

2. 零样本图文检索

  • 自然语言搜图片:输入“一只坐在沙发上的金毛”,返回最匹配的图片。
  • 图片搜文本:输入一张图,返回最匹配的描述。

五、其他

1. 模型变体(主流)

  • ViT-B/32:轻量、速度快,适合部署。
  • ViT-L/14:性能最强,零样本准确率最高,算力需求大。
  • ResNet-50:速度快、显存小,适合低资源场景。

2. 优势

  • 零样本泛化:不用重训,直接适配新类别/新任务。
  • 跨模态对齐:图像与文本语义深度绑定,理解能力强。
  • 数据效率高:4亿无标注数据,成本远低于标注数据。
  • 开源易用:Hugging Face提供预训练权重,一行代码调用。

3. 局限性

  • 数据偏见:训练数据来自互联网,易带偏见(性别、种族、文化)。
  • 分辨率限制:ViT通常用224×224,高分辨率图像性能下降。
  • 长文本弱:文本编码器仅支持77个Token,长文本理解差。
  • 无生成能力:仅做编码,不能生成图像/文本(需结合扩散模型)。

六、主流应用场景

  1. 零样本图像分类:不用标注,识别任意新类别(如“熊猫”“无人机”)。
  2. 图文检索:电商搜图、内容库检索、跨模态搜索。
  3. AIGC(图像生成):作为判别器,与Stable Diffusion、Midjourney结合,保证生成图符合文本描述。
  4. 视觉问答(VQA):理解图像并回答自然语言问题。
  5. 内容审核:用文本描述检测违规图像(如暴力、色情)。
  6. 多模态大模型基座:作为LLaVA、MiniGPT-4等模型的视觉编码器

其他文章
目录导航 置顶
  1. 1. 一、背景
    1. 1.1. 1. 问题
    2. 1.2. 2. 解决方法
  2. 2. 二、架构:双塔+共享空间
    1. 2.1. 1. 图像编码器(Image Encoder)
      1. 2.1.1. (1)ResNet系列(CNN)
      2. 2.1.2. (2)Vision Transformer(ViT)系列(主流)
    2. 2.2. 2. 文本编码器(Text Encoder)
    3. 2.3. 3. 共享空间与投影
  3. 3. 三、训练核心:对比学习
    1. 3.1. 1. 训练数据
    2. 3.2. 2. 对比学习逻辑
    3. 3.3. 3. 损失函数(InfoNCE)
    4. 3.4. 4. 训练目标
  4. 4. 四、零样本推理
    1. 4.1. 1. 零样本图像分类(示例)
    2. 4.2. 2. 零样本图文检索
  5. 5. 五、其他
    1. 5.1. 1. 模型变体(主流)
    2. 5.2. 2. 优势
    3. 5.3. 3. 局限性
  6. 6. 六、主流应用场景
请输入关键词进行搜索