1. 原理

1.1 简介

 1. CLIP(全称是 Contrastive Language-Image Pre-training)是由 OpenAI 在 2021 年提出的一种多模态机器学习模型。它旨在通过大量的文本-图像对进行训练,从而学会理解图像内容,并能将这些内容与相应的自然语言描述相匹配。CLIP 的核心思想是利用对比学习,这是一种无监督或弱监督的学习方法,通过最小化正样本之间的距离与最大化负样本之间的距离来学习表示,使得预训练一个能够同时理解图像和文本的模型。

原论文地址:https://arxiv.org/pdf/2103.00020

 2. 方法概述图:

在这里插入图片描述

1.2 模型训练

 1. 如上面图,左半部分是 CLIP 模型的对比预训练架构,通过对数据集中 N 个图像-文本对进行对比学习,使得模型能够理解文本和图像的语义关联关系。(4 亿个图文对)

 2. 在预训练阶段,CLIP 模型采用了双流架构,分别处理图像和文本数据:图像流通过 ViT 编码器提取视觉特征,文本流通过 Transformer 编码器处理语言信息,两个流的输出在嵌入空间中进行对比学习,以实现图像和文本的语义对齐。

 3. 对比学习是 CLIP 模型的核心,它通过比较正样本(匹配的图像-文本对,即图中对角线上 N N N 个匹配的图像-文本对)和负样本(不匹配的对,即 N 2 − N N^2-N N2N 个没有匹配的图像-文本对)来训练模型。这种学习策略使得模型能够学习到图像和文本之间的复杂关系,而不仅仅是简单的特征对应。CLIP 的对比学习框架提高了模型对视觉和语言数据的泛化能力。

 4. 对比预训练的伪代码如下:

# image_encoder - 图像编码器(ResNet 或 Vision Transformer)
# text_encoder - 文本编码器(CBOW 或 Text Transformer)
# I[n, h, w, c] - 对齐图像的迷你批次(批大小 n,高 h,宽 w,通道数 c)
# T[n, l] - 对齐文本的迷你批次(批大小 n,序列长度 l)
# W_i[d_i, d_e] - 图像到嵌入向量的可学习投影矩阵
# W_t[d_t, d_e] - 文本到嵌入向量的可学习投影矩阵
# t - 可学习的温度参数
# 提取各模态的特征表示
I_f = image_encoder(I)  # 图像特征 [n, d_i]
T_f = text_encoder(T)  # 文本特征 [n, d_t]

# 联合多模态嵌入 [n, d_e]
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)  # 归一化图像嵌入
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)  # 归一化文本嵌入

# 缩放后的成对余弦相似度矩阵 [n, n]
logits = np.dot(I_e, T_e.T) * np.exp(t)  # 相似度得分矩阵

# 对称损失函数
labels = np.arange(n)  # 对角线标签(理想匹配索引)
loss_i = cross_entropy_loss(logits, labels, axis=0)  # 图像到文本的交叉熵损失
loss_t = cross_entropy_loss(logits, labels, axis=1)  # 文本到图像的交叉熵损失
loss = (loss_i + loss_t) / 2  # 对称对比损失

1.3 模型推理

 1. 如上图右半部分所示,当 CLIP 模型预训练完成后, CLIP 转换为零样本分类器。首先和训练过程一样,也是需要图像编码器将给定的图像转换为图像特征,以及文本编码器将待选文本转换为文本特征。在推理中使用一个小方法,将数据集的所有类转换为标题,例如 “a photo of a {subject}”,将给定的类别分别填入subject,并预测 CLIP 估计的标题类与给定图像的最佳配对。

 2. 一些结果示例:

在这里插入图片描述

1.4 举例

 假设有一个目标数据集,包含三个类别:猫、狗和鸟:

 1. 训练阶段:

 (1)输入一批图像-文本对,例如(猫的图像,"猫"的文本)

 (2)图像编码器生成猫的图像特征向量,文本编码器生成 “猫” 的文本特征向量

 (3)模型优化目标函数,使猫的图像特征向量和 “猫” 的文本特征向量在联合嵌入空间中的相似度最大化

 2. 测试阶段:

 (1)使用文本编码器将类别名称 “猫”、“狗” 和 “鸟” 分别嵌入到向量表示中

 (2)对于一个新的图像,通过图像编码器生成其特征向量

 (3)计算该特征向量与 “猫”、“狗” 和 “鸟” 的嵌入向量的相似度,选择相似度最高的类别作为预测结果

2. 应用

2.1 零样本学习

 零样本学习(Zero-Shot Learning, ZSL)是 CLIP 模型的一个重要应用领域。在零样本学习任务中,模型需要在没有直接标注样本的情况下,对全新类别的数据进行准确预测。CLIP 模型通过其强大的多模态学习能力,能够在未见过的类别上进行有效的分类。

 在零样本学习中,CLIP 模型使用类别的视觉特征和语义特征之间的关联来进行分类。具体来说,CLIP 模型会学习一个从图像特征空间到类别标签空间的映射,这个映射允许模型在没有直接样本的情况下识别新类别。

2.2 图像搜索与分类

 CLIP 模型在图像搜索与分类任务中也展现出了卓越的性能。图像搜索与分类任务的目标是找到与给定查询图像或文本描述最相关的图像。CLIP 模型通过计算图像和文本之间的相似度得分来实现这一目标。

 在图像搜索任务中,CLIP 模型首先将查询图像和数据库中的所有图像分别编码为特征向量,然后计算这些特征向量之间的相似度得分。这些得分可以用来对数据库中的图像进行排序,从而找到与查询图像最相关的图像。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐