一、核心思想
CLIP论文的名称是Learning Transferable VIsual Models from Natural Language Supervision,从自然语言监督中学习可迁移的视觉模型,利用文本作为监督信号来训练,可迁移的,视觉模型。
CLIP的全称是,Contrastive Language-Image Pre-training,即对比语言-图片预训练。
二、模型结构
模型结构包括一个Text Encoder和一个Image Encoder。其中Text Encoder用来提取文本特征,采用text transformer;Image Encoder用来提取图像特征,采用CNN或Vision Transformer。
三、训练测试
模型对文本特征和图像特征进行对比学习。对于一个包含N个文本-图像对的训练Batch,计算文本特征和图像特征的余弦相似度。
其中共有N个正样本,即真正属于一对的文本和图像(矩阵中的对角线元素),而剩余的
N
2
−
N
N^2-N
N2−N个文本-图像对为负样本。
在训练时,训练目标是最大化N个正样本的相似度,同时最小化负样本的相似度。
在测试时,CLIP可以直接实现zero-shot的图像分类,即**不需要任何训练数据,就能在某个具体下游任务上实现分类。**只需两步:
- 根据分类标签构建每个类别的描述文本:A photo of {label},用Text Encoder得到文本特征。
- 用Image Encoder得到预测图像的图像特征,与文本特征计算余弦相似度。选择相似度最大的文本对应的类别作为图像分类预测结果。同时可以将这些相似度看成logits,送入softmax得到每个类别的预测概率值。
四、核心点
1. 自然语言监督
相比于人工标注的标签,其优势在于
- 可以从网上大量获取;
- 不仅学习图像表征,还学习了与语言之间的关系;
- 利用了语言的强大能力,从而实现灵活的零样本迁移。
2. 图文数据集的构建
构建了一个包含4亿对(图像、文本)的新数据集WebImageText。
3. 模型选择与扩展
Text Encoder固定选择一个包含63M参数的Text Transformer模型,Image Encoder采用了两种架构:
- CNN架构的ResNet,其中ResNet包含5个不同大小的模型:ResNet50,ResNet101,RN50x4,RN50x16 和 RNx64(后面三个模型是按照EfficientNet缩放规则对ResNet分别增大4x,16x 和 64x 得到)
- 基于Transformer的ViT,ViT选择3个不同大小的模型:ViT-B/32,ViT-B/16 和 ViT-L/14(B和L表示Base和Large版本,数字表示patch尺寸)。
五、CLIP对齐的概念、思想和实现
CLIP(Contrastive Language-Image Pre-Training)是一种通过对比学习的方法,将视觉和语言模型对齐,使其能够理解和处理图像和文本之间的关系。以下是CLIP对齐的概念、思想和实现的详细介绍:
概念
CLIP的核心思想是通过对比学习同时训练图像编码器和文本编码器,使得图像和其对应的文本描述在相同的嵌入空间中相距更近。这样,一个模型可以在没有明确的监督情况下理解图像和文本之间的关系,并实现跨模态的检索和分类任务。
思想
CLIP的基本思想可以概括如下:
- 对比学习(Contrastive Learning):利用对比学习的方法,使得匹配的图像-文本对在嵌入空间中距离更近,而不匹配的对距离更远。
- 双模态对齐(Multimodal Alignment):通过同时训练图像编码器和文本编码器,将两种不同模态的数据映射到同一嵌入空间中。
- 预训练(Pre-Training):在大规模的图像-文本数据集上进行预训练,使模型具备强大的泛化能力,能够处理各种未见过的图像和文本。
实现
-
数据准备:
- 收集大规模的图像和相应的文本描述对,这些文本可以是图像的标签、标题、描述等。
-
模型结构:
- 图像编码器(例如ViT)将图像转换为固定尺寸的特征向量。
- 文本编码器(例如Transformer)将文本转换为固定尺寸的特征向量。
- 图像和文本的特征向量在相同的嵌入空间中表示。
不同模态的数据表示之间可能存在gap,无法进行直接的比较,因此先将不同模态的数据映射到同一个多模态空间,有利于后续的相似度计算等操作。
visual_embedding [N, embedding_size]
text_embedding [N, embedding_size]
- 训练过程:
- 正样本对(Positive Pair):匹配的图像和文本对。
- 负样本对(Negative Pair):不匹配的图像和文本对。
- 通过对比损失函数(Contrastive Loss)训练模型,使得正样本对在嵌入空间中距离更近,负样本对距离更远。
具体来说,CLIP使用的对比损失函数是:
L
=
−
1
N
∑
i
=
1
N
log
exp
(
sim
(
z
i
I
,
z
i
T
)
/
τ
)
∑
j
=
1
N
exp
(
sim
(
z
i
I
,
z
j
T
)
/
τ
)
\mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \log \frac{\exp(\text{sim}(z_i^I, z_i^T) / \tau)}{\sum_{j=1}^{N} \exp(\text{sim}(z_i^I, z_j^T) / \tau)}
L=−N1i=1∑Nlog∑j=1Nexp(sim(ziI,zjT)/τ)exp(sim(ziI,ziT)/τ)
其中:
- N N N 是批次大小。
- z i I z_i^I ziI 和 z i T z_i^T ziT分别是第 i i i 个图像和文本的嵌入向量。
- sim ( ⋅ , ⋅ ) \text{sim}(\cdot, \cdot) sim(⋅,⋅) 表示相似度度量(通常为余弦相似度)。
- τ \tau τ 是温度超参数,用于调整对比损失的敏感性。
- 推理过程:
- 在推理阶段,给定一个图像,通过图像编码器生成图像的特征向量;给定一个文本,通过文本编码器生成文本的特征向量。
- 计算图像和文本特征向量之间的相似度,用于图像-文本匹配、图像搜索、文本描述生成等任务。
应用场景
- 图像分类:通过匹配图像和预定义的类描述文本,进行零样本分类。
- 图像检索:通过文本查询,从数据库中检索相关的图像。
- 图像描述生成:生成与给定图像相匹配的自然语言描述。
CLIP的对齐思想和实现,展示了跨模态学习的强大能力,能够有效地结合视觉和语言信息,为多种人工智能应用提供基础。
参考资料:
https://blog.csdn.net/wjinjie/article/details/136592697
https://blog.csdn.net/zyw2002/article/details/137756591