【LVLMs】CLIP系列模型通俗理解[SIGLIP&EVA-CLIP&CLIP]

一 CLIP模型

  1. CLIP 损失函数计算

CLIP:Contrastive Language-Image Pre-training
CLIP使用对比学习方法,其损失函数基于图像-文本对的相似度。让我们通过一个简化的例子来说明这个过程。

假设我们有一个小批量数据

,包含3个图像-文本对:

图像1: 一只猫 文本1: “一只橙色的猫坐在窗台上”

图像2: 一条狗 文本2: “一只黑色的狗在草地上奔跑”

图像3: 一辆汽车 文本3: “一辆红色跑车停在路边”

Copy

步骤1: 特征提取 首先,CLIP会使用图像编码器和文本编码器

分别提取图像和文本的特征。假设我们得到的特征向量如下(简化为2维向量):

图像特征: I1 = [0.8, 0.2] I2 = [0.3, 0.7] I3 = [-0.5, 0.5]

文本特征: T1 = [0.9, 0.1] T2 = [0.2, 0.8] T3 = [-0.6, 0.4]

步骤2: 计算相似度矩阵
接下来,我们计算每个图像特征与每个文本特征的余弦相似度

,得到一个相似度矩阵:

T1 T2 T3
I1 0.98 0.38 -0.78
I2 0.38 0.98 -0.18
I3 -0.78 -0.18 0.98

Copy

步骤3: 应用softmax 对相似度矩阵的每一行和每一列应用softmax函数(假设温度参数为1):

图像到文本的softmax:

T1 T2 T3
I1 0.89 0.11 0.00
I2 0.11 0.89 0.00
I3 0.00 0.00 1.00

Copy

文本到图像的softmax:

T1 T2 T3
I1 0.89 0.11 0.00
I2 0.11 0.89 0.00
I3 0.00 0.00 1.00

Copy

步骤4: 计算交叉熵损失

对于每个正确的图像-文本对,我们计算交叉熵损失:

图像到文本的损失: L_i2t = -(log(0.89) + log(0.89) + log(1.00)) / 3 = 0.078

文本到图像的损失: L_t2i = -(log(0.89) + log(0.89) + log(1.00)) / 3 = 0.078

步骤5: 总损失 最终的CLIP损失是这两个损失的平均:

L_clip = (L_i2t + L_t2i) / 2 = 0.078

这个损失值越小,表示模型对图像-文本对的匹配程度越好。在训练过程中,模型会不断调整参数以最小化这个损失。

注意,这是一个简化的例子。实际的CLIP模型使用更高维度的特征向量,并且批量大小通常更大,这会导致计算更复杂,但基本原理是相同的。

1> 图像到文本的损失(image-to-text loss)和文本到图像的损失(text-to-image loss)什么情况下会不同?

批量大小不同:如果图像和文本的数量不相等,例如在一个批次中有更多的图像than文本(或相反),那么两个方向的损失计算会有所不同。

特征空间不对称:如果图像和文本的特征空间维度或分布存在显著差异,可能导致两个方向的相似度计算结果不同。

模型结构不对称:如果图像编码器和文本编码器的结构或能力存在差异,可能导致一个方向的特征提取或匹配能力强于另一个方向。

数据质量不均衡:如果图像数据的质量普遍高于文本数据(或相反),可能导致一个方向的匹配更准确。

任务特性:某些任务可能天然地更适合从图像到文本的匹配或从文本到图像的匹配。

正则化

或约束条件:如果在模型中添加了不同的正则化项

或约束条件,可能会影响两个方向的损失计算。

采样策略

:在大规模数据集上,如果使用不同的采样策略来选择负样本,可能会影响两个方向的损失。

温度参数设置:如果在softmax计算中使用了不同的温度参数,会导致两个方向的概率分布不同。

Copy

举例说明:

假设我们有一个批次,包含4张图像但只有3段文本:

图像:[I1, I2, I3, I4] 文本:[T1, T2, T3]

计算相似度矩阵后:

T1 T2 T3
I1 0.9 0.2 0.1
I2 0.1 0.8 0.3
I3 0.2 0.1 0.9
I4 0.7 0.6 0.5

Copy

图像到文本的softmax(行方向):

T1 T2 T3
I1 0.8 0.1 0.1
I2 0.1 0.7 0.2
I3 0.2 0.1 0.7
I4 0.4 0.3 0.3

Copy

文本到图像的softmax(列方向):

T1 T2 T3
I1 0.5 0.1 0.1
I2 0.1 0.5 0.2
I3 0.1 0.1 0.5
I4 0.3 0.3 0.2

Copy

在这种情况下,由于图像和文本的数量不同,两个方向的softmax结果会有所不同,进而导致损失计算的差异。

在实际的CLIP实现中,通常会采取措施来平衡这两个方向的损失,例如使用相同数量的图像和文本,或者在损失计算中进行适当的归一化。
二 SIGLIP

  1. 模型原理

SIGLIP:Sigmoid Loss for Language Image Pre-training

背景:SIGLIP是为了解决传统对比学习方法(如CLIP)在语言-图像预训练中存在的一些问题而提出的。

核心思想:SIGLIP使用sigmoid函数

替代softmax函数,将多类别分类问题转化为多个二分类问题。

主要特点:
a. 二元分类:对每个文本-图像对,模型预测它们是否匹配。
b. 独立预测:每个样本的预测是独立的,不依赖于批次中的其他样本。
c. 更好的可扩展性:不受批次大小限制,可以处理更大规模的数据。

损失函数:SIGLIP使用二元交叉熵损失

,而不是传统的对比学习损失。

优势:
a. 提高了模型的泛化能力。b. 减少了对大批次size的依赖。c. 能更好地处理长尾分布

和噪声标签。

实现:通常基于Vision Transformer (ViT) 和文本编码器(如BERT)来实现图像和文本的特征提取。

应用:SIGLIP可用于各种视觉-语言任务,如图像-文本检索

、视觉问答等。

总的来说,SIGLIP通过改变损失函数的设计,提供了一种更加灵活和有效的语言-图像预训练方法,有潜力在各种多模态任务中取得更好的性能。
2. 举例说明

假设我们有以下训练数据:

图像:一只橙色的猫坐在窗台上
正确的文本描述:"一只橙猫

在窗边"
错误的文本描述:“一只狗在草地上玩耍”
SIGLIP的工作流程如下:

特征提取:

使用Vision Transformer (ViT) 提取图像特征
使用文本编码器(如BERT)提取文本特征
特征映射:将图像和文本特征映射到同一个高维空间

相似度计算:计算图像特征和文本特征之间的点积

Sigmoid激活:将点积结果通过sigmoid函数,得到一个0到1之间的值

接近1表示图像和文本匹配
接近0表示不匹配
预测:

对于正确的文本描述,模型应该输出接近1的值
对于错误的文本描述,模型应该输出接近0的值
损失计算:使用二元交叉熵损失来计算预测值与真实标签之间的差异

反向传播:基于损失更新模型参数

具体数值示例:

假设模型对上述样本的预测如下:

图像 + “一只橙猫在窗边” → 预测值 0.92
图像 + “一只狗在草地上玩耍” → 预测值 0.15
损失计算:

正样本损失:-log(0.92) = 0.0834
负样本损失:-log(1 - 0.15) = 0.1625
总损失 = 0.0834 + 0.1625 = 0.2459

模型会通过最小化这个损失来学习区分匹配和不匹配的图像-文本对。

通过这种方式,SIGLIP能够独立地学习每个图像-文本对的关系,而不依赖于批次中的其他样本,从而提高了模型的泛化能力和对大规模数据的处理能力。
三 CLIP VS SIGLIP原理对比

通过一个具体的例子来对比CLIP(Contrastive Language-Image Pre-training)和SIGLIP(Sigmoid Loss for Language Image Pre-training)这两个模型:

假设我们有一个小批次的训练数据,包含3张图片和3段文本描述:
图片:
一只猫坐在窗台上(Cat)
一条狗在草地上奔跑(Dog)
一辆红色跑车(Car)
文本:A. “一只橙色的猫在窗边晒太阳” B. “一条活泼的狗在草地上玩耍” C. “一辆闪亮的红色跑车停在路边”

  1. CLIP 模型处理方式:

CLIP使用对比学习,在一个批次内比较所有图像-文本对。
对于每个图像,它会计算与所有文本的相似度,反之亦然。
CLIP的目标是最大化正确匹配的相似度,同时最小化错误匹配的相似度。
假设CLIP计算出的相似度矩阵如下(行为图片,列为文本):

A B C
1 0.9 0.2 0.1
2 0.1 0.8 0.2
3 0.1 0.1 0.9

Copy

CLIP会使用这个矩阵计算对比损失,鼓励对角线上的值(正确匹配)比其他值大。
2. SIGLIP 模型处理方式:

SIGLIP将每个图像-文本对视为独立的二分类问题。
对于每个对,它预测一个匹配概率。
SIGLIP的目标是最大化正确匹配的概率,最小化错误匹配的概率。
假设SIGLIP对每个图像-文本对的预测如下:

A B C
1 0.95 0.05 0.02
2 0.03 0.97 0.04
3 0.01 0.03 0.98

Copy

SIGLIP会对每个预测值单独计算二元交叉熵损失。
3. 主要区别:
1> 批次依赖性:

① CLIP:需要较大的批次来提供足够的负样本。
② SIGLIP:对每个样本独立处理,不依赖批次大小。
2> 损失计算:

CLIP:使用对比损失

,考虑批次内所有样本的相对关系。
SIGLIP:使用二元交叉熵损失,独立考虑每个样本。
3> 负样本处理:

CLIP:隐式地将同一批次中的其他样本作为负样本。
SIGLIP:显式地将每个不匹配的对作为负样本。
4> 可扩展性:

CLIP在处理大规模数据时可能面临计算挑战。
SIGLIP更容易扩展到大规模数据集。
5> 长尾分布处理:

CLIP可能对常见类别有偏好。
SIGLIP对罕见类别的处理更加公平。

通过这个例子,我们可以看到SIGLIP如何通过改变损失函数和预测方式来解决CLIP中的一些限制,特别是在处理大规模和不平衡数据集时的优势。
四 CLIP系列对比对比

  1. CLIP

CLIP是这三个模型中最早提出的,由OpenAI开发。

特点:
使用对比学习方法训练
视觉编码器可以是ResNet或简单的ViT
文本编码器使用Transformer
预训练数据集约4亿图像-文本对
使用softmax损失函数
需要较大的批次大小来提供足够的负样本
2. EVA-CLIP

EVA-CLIP是CLIP的改进版本,由华为诺亚方舟实验室

提出。

特点:
基于CLIP的核心思想,但做了多方面改进
视觉编码器使用EVA(更强大的ViT变体)
预训练数据集超过5.5亿图像-文本对
结合了masked image modeling (MIM) 和对比学习
使用更复杂的prompt工程和数据增强技术
保留了CLIP的softmax损失函数
在各种视觉任务中表现更好,尤其是复杂任务
3. SIGLIP

SIGLIP提出了一种新的损失函数,旨在解决CLIP中的一些限制。
1> 特点:

使用sigmoid损失函数替代softmax
将多类别分类问题转化为多个二分类问题
每个样本独立预测,不依赖批次大小
可以更好地处理长尾分布和噪声标签
在大规模数据集上更容易扩展
视觉和文本编码器架构与CLIP类似
2> 主要区别:

① 损失函数:
CLIP和EVA-CLIP:使用softmax基础的对比损失
SIGLIP:使用sigmoid基础的二元交叉熵损失

② 批次依赖性:
CLIP和EVA-CLIP:需要较大批次
SIGLIP:独立于批次大小

③ 视觉编码器:
CLIP:ResNet或简单ViT
EVA-CLIP:使用更强大的EVA
SIGLIP:通常使用ViT,但重点在损失函数而非架构

④ 预训练规模:
CLIP:约4亿对
EVA-CLIP:超过5.5亿对
SIGLIP:取决于实现,但理论上可以处理更大规模数据

⑤ 扩展性:
CLIP:相对有限
EVA-CLIP:良好的扩展性
SIGLIP:设计上更易于大规模扩展

⑥ 长尾分布处理:
CLIP和EVA-CLIP:可能偏向常见类别
SIGLIP:对罕见类别更公平

总结:
CLIP是开创性的工作,奠定了基础
EVA-CLIP通过改进架构和训练策略提升了性能
SIGLIP通过创新的损失函数设计解决了一些根本性问题
每个模型都有其优势,选择哪个取决于具体的应用场景和可用的计算资源。

在这里插入图片描述

参考

https://zhuanlan.zhihu.com/p/715139782

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值