CLIP学习
**CLIP 模型(Contrastive Language–Image Pre-training)。**它是由 OpenAI 在 2021 年提出的一个开创性模型,彻底改变了计算机视觉领域对“视觉识别”的看法。其核心思想是通过自然语言来理解图像,而不是依赖于固定的类别标签。
1、CLIP是什么?
CLIP 是一个多模态(Multimodal)模型,意味着它可以同时理解和处理两种不同类型的数据:文本(Text) 和 图像(Image)。
它的目标不是直接进行图像分类或生成文本,而是学习图像和文本在同一个语义空间中的关联。简单来说,它学会了“看图说话”和“看文想图”,能将视觉概念和语言概念一一对应起来。
2、对比学习 (Contrastive Learning)
对比学习是CLIP的核心思想。
- 传统监督学习的局限:
传统的图像分类模型(如 ResNet)需要在固定的类别标签(如“猫”、“狗”、“汽车”等)上进行训练。要增加一个新类别,就必须重新收集数据并训练模型,非常不灵活。 - CLIP 的做法:
CLIP 的训练数据是海量的“图像-文本对”(例如,从互联网上爬取的图片及其对应的描述、标题、ALT文本)。它不预测具体的标签,而是学习一个更根本的任务:判断一张图片和一段文本是否匹配。
训练过程简化版:
- 从一个批次(Batch)中取出 N 对“图像-文本”数据。
- 图像编码器(通常是 Vision Transformer 或 ResNet)将每张图片转换为一个特征向量(Image Embedding)。
- 文本编码器(通常是 Transformer)将每段文本转换为一个特征向量(Text Embedding)。
- 计算所有图像特征和文本特征之间的余弦相似度,得到一个 N x N 的相似度矩阵。
- 训练目标:让匹配的“图像-文本对”(矩阵对角线上的元素)的相似度尽可能高,而不匹配的对(非对角线元素)的相似度尽可能低。
通过这种方式,模型被迫去理解图片的深层语义和文本的深层语义,并将语义相近的图片和文本在特征空间里拉近。
3、模型架构:双编码器 (Dual-Encoder)
CLIP 的架构非常清晰,由两个核心组件构成:
- 图像编码器Image Encoder
提取图像的特征表示。OpenAI 实验了多种架构,最终效果最好的是 Vision Transformer (ViT),但也支持 ResNet。 - 文本编码器Text Encoder
提取文本的特征表示。基于transformer架构。
这两个编码器是分开独立工作的,但它们输出的特征向量位于同一个高维空间,因此可以直接计算相似度。
4、零样本预测 (Zero-Shot Prediction) - 最强大的能力
这是 CLIP 最引人注目的能力。它不需要在特定任务的数据上进行任何训练(即“零样本”),就能直接完成图像分类等任务。
如何用 CLIP 进行“零样本”图像分类?
假设你想判断一张图片是不是“猫”,传统模型输出的是“猫”或“不是猫”。而 CLIP 的做法是:
- 构建候选文本描述:你将所有可能的类别标签,转换成自然的文本描述。例如,你不是用“猫”这个标签,而是构造一组提示词(Prompt):
“a photo of a cat”(一张猫的照片)
“a photo of a dog”(一张狗的照片)
“a photo of a car”(一辆汽车的照片) - 编码与计算相似度:
- 将待分类的图片输入图像编码器,得到图像特征 I。
- 将所有候选的文本描述输入文本编码器,得到一组文本特征 T1, T2, T3, …。
- 计算图像特征 I 与每一个文本特征 T_i 的余弦相似度。
- 选择最佳匹配:
- 选择相似度最高的那个文本描述所对应的类别,作为图像的预测结果。
- 例如,如果 I 和 “a photo of a cat” 的相似度最高,模型就预测这张图是“猫”。
这种方法的好处是巨大的:你可以通过简单地修改提示词列表,让模型识别任何概念,而无需重新训练!这极大地提高了模型的泛化能力和灵活性。
5、RegionCLIP
5.1 CLIP的局限
首先,回顾一下 CLIP 的能力和局限:
- CLIP 的能力:将整张图片和一个全局文本描述进行匹配(例如,“一只猫坐在沙发上”)。
- CLIP 的局限:它缺乏细粒度的、区域级别的(Region-level) 理解能力。它无法明确指出图片中“猫”在哪里,“沙发”又在哪里。它只知道图片整体和文本是匹配的。
换句话说,CLIP 是一个“图像级别”的模型,而不是“区域级别”的模型。而很多视觉核心任务,如目标检测、实例分割,都需要精确的区域理解。
RegionCLIP 的核心目标就是为 CLIP 装上“透视眼”,让它不仅能理解图片整体,还能精准定位到图片中与文本描述对应的特定区域。
下图可以很好展示这种效果:
5.2 核心思想
RegionCLIP 的灵感非常直观:将 CLIP 的对比学习理念从“图像-文本”对,延伸到“区域-短语”对。
-
区域-短语对:与其使用整张图片和整个句子,不如从图片中提取一个个区域(Region Proposals,例如可能包含物体的框),并从对应描述中提取出名词短语(Noun Phrases,例如 “a cat”, “the sofa”),让模型学习它们之间的对应关系。
-
伪标签生成:如何获得海量的“区域-短语”训练对是一个巨大挑战。RegionCLIP 巧妙地利用原始 CLIP 模型本身来生成这些伪标签。
5.3 模型架构
egionCLIP 的架构包含几个核心部分,其工作流程如下所示,它扩展了 CLIP 以学习区域-文本对齐:
- 区域编码器 & 文本编码器
-
区域编码器:本质上就是 CLIP 的图像编码器,但输入的不再是整图,而是从图片中裁剪出的区域提议(Region Proposal)。这些提议通常由预训练的区域提议网络(RPN) 产生。区域被裁剪并调整大小后送入图像编码器得到区域特征。
-
文本编码器:与 CLIP 的文本编码器完全相同。它负责编码描述物体的名词短语(如 “person”, “traffic light”)。
- 区域-文本对比学习
-
这是 CLIP 学习机制的微观应用。在一个批次中,模型计算每个区域特征和每个短语特征之间的相似度。
-
学习目标:最大化匹配的“区域-短语对”的相似度,最小化不匹配对的相似度。这使得模型学会了将视觉区域与其正确的文本描述在特征空间中对齐。
- 从图像-文本对中挖掘“区域-短语”对(关键创新)
这是 RegionCLIP 最核心、最巧妙的贡献。如何在没有人工标注框的情况下获得训练数据?
-
步骤一:提取区域提议。使用 RPN(如来自 Faster R-CNN)从图片中提取可能包含物体的候选区域(几百到几千个)。
-
步骤二:提取名词短语。使用语言工具(如 spaCy)从图像的描述文本中提取出所有名词短语。
-
步骤三:利用 CLIP 进行匹配。将每一个区域提议和每一个名词短语分别输入一个预训练好的、冻结的(参数不更新)CLIP 模型中,计算它们之间的相似度得分。
-
步骤四:分配伪标签。为每个名词短语选择相似度最高的区域作为其正样本(伪标签),为每个区域选择相似度最高的短语作为其标签。通过设置相似度阈值来过滤掉低质量的匹配。
这样,他们就自动化地生成了大量的 (region, phrase) 训练对,而不需要任何人工标注的边界框!