论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

论文:https://arxiv.org/abs/2111.03930

代码:GitHub – gaopengcuhk/Tip-Adapter

摘要

对比性视觉语言预训练模型,即CLIP,为使用大规模图像-文本对学习视觉表征提供了一个新的范式。它通过zero-shot(zero-shot和clip请看我的另一篇博客)知识迁移,在下游任务中表现出令人印象深刻的性能。近段时间以来,为了进一步提高CLIP在下游任务的适应能力,现有的方法提出了对额外的可学习模块进行微调,这极大地提高了few-shot的性能,但也因此引入了额外的训练时间和计算资源。

在Tip-Adapter中,作者为CLIP提出了一种免训练的适应性方法,以进行few-shot分类,它不仅继承了零点CLIP的免训练优势,而且性能与那些需要训练的方法相当。Tip-Adapter通过一个键值缓存模型从几张照片的训练集中构建适配器,并通过特征检索更新CLIP中编码的先验知识。此外,在此基础上,通过对缓存模型的微调,Tip-Adapter的性能可以进一步提升到ImageNet上的最先进水平,比现有的方法少10倍的epochs,这既有效又高效。

介绍

在16-shot的ImageNet上,不同方法的分类准确率(%)和时间效率的比较,论文提出的Tip-Adapter和Tip-AdapterF在准确率-效率的权衡上取得了优势。作者所有的实验都是在单个NVIDIA GeForce RTX 3090 GPU上以32个批次的规模进行测试。蓝色的一栏记录了相对于zero-shot的CLIP的性能增益。

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

背景

由于视觉和语言通常包含互补的信息,多模态表征的联合学习已被证明在各种任务中相当有效,如视觉问答和图像生成。与之前在不同的数据集上独立学习视觉和语言表征的方法不同,CLIP提出了从成对的自然语言监督中学习可迁移的视觉特征,并发挥了惊人的zero-shot图像分类能力。

许多后续的工作都提出要利用少数照片数据来提高CLIP在下游任务上的适应能力。最近,CLIP-Adapter引入了为CLIP配备一个参数化的特征适配器,并通过残差连接将它们与原始的CLIP编码的特征相结合。它在不利用提示设计的情况下,为zero-shot的分类展示了强大的性能。但是在微调下游任务的同时,CLIP-Adapter也需要更多的计算资源来微调新引入的可学习参数。

基于此,本论文提出了以下问题:我们能否实现两全其美,既利用CLIP的免训练特性进行零点分类,又享受少点分类中需要训练的方法的强大性能?

答案肯定是可以的,Tip-Adapter用一种新的非参数适配器来附加权重冻结的CLIP模型。与CLIP-Adapter不同,该方法不需要额外的训练,而是把适配器设计成一个来自少数照片数据集的查询键缓存模型(下文提到)。具体来说,Tip-Adapter提取了Tip-Adapter的视觉特征,通过CLIP的视觉编码器提取CLIP的视觉特征,并将其相应的标签转换为独热编码。然后,一个包含few-shot的视觉特征和独热编码标签的键值对缓存模型被创建。

推理过程

在推理过程中,用来测试的图片首先计算其与缓存模型中键的特征相似性(这里解释一下, 就是提取的图片特征, 就是提取的文本独热编码的信息),然后聚集缓存模型中的值形成适配器的预测,这可以被视为从缓存模型中检索出的少数的知识。之后,适配器的预测通过残差连接与原始CLIP的预测相结合。通过这种方式,Tip-Adapter同时利用了预先训练好的CLIP和少量训练数据集的知识。令人惊讶的是,未经训练的Tip-Adapter可以与微调的CLIP-Adapter的性能相当。此外,如果我们将缓存模型的键解冻为可学习的参数并进一步微调,Tip-Adapter的性能只需几个训练轮数就能得到显著提升。我们把这个微调版本称为Tip-Adapter-F,与CoOp和CLIP-Adapter采用的200个epoch相比,它在ImageNet上只需要20个epoch就能达到最先进的水平。

贡献

论文的贡献总结如下:

1 .作者提出了Tip-Adapter,一种无需训练的CLIP自适应方法,该方法摒弃了传统的基于SGD的训练,直接用缓存模型设置适配器。

2.将缓存模型的键解冻为可学习的参数,名为Tip-Adapter-F的微调Tip-Adapter在ImageNet上实现了一流的性能和超快收敛。

3.作者在11个广泛采用的数据集上对Tip-Adapter和Tip-Adapter-F进行了评估,并对其进行了广泛的消融研究,以证明其特性。

相关工作

缓存模型

缓存模型将训练图像的特征和它们的标签作为一个键值数据库来存储。在推理过程中,来自测试样本的特征编码被视为查询,通过基于相似性的检索从缓存模型中汇总信息。整个过程是非参数化的,不涉及参数更新。

虽然传统的缓存模型已经显示出优越的结果,但训练数据的巨大存储预算对许多应用来说是无法承受的。为了降低这种成本,随后提出了具有高度优化的相似性搜索系统的近似KNN方法,但此方法缓慢和极易容易出错。与以前的纯视觉或语言缓存的设置不同,论文通过CLIP的对比性多模态预训练构建了一个混合的视觉-语言缓存模型。重要的是,由于作者团队用有限的训练样本进行了few-shot设置,总的缓存大小很小,检索可以通过两个级联的矩阵乘法有效计算。此外,Tip-Adapter中的缓存模型可以通过随机梯度下降(SGD)进行学习和动态更新,这进一步提高了其性能。

方法

介绍一下免训练的Tip-Adapter和它的微调变体Tip-Adapter-F的原理

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

Tip-Adapter的流程图,给定一个K-shot的 N-class训练集,我们构建一个缓存模型来适应下游任务的CLIP。它包含了由CLIP编码的few-shot视觉特征F_Ttrain和它们在独热编码下的真实标签L_Ttrain。在从缓存模型中检索之后,few-shot的知识与CLIP的预训练知识相结合,从而实现了无训练的目标。

缓存模型构建

给出预先训练好的CLIP模型和一个新的数据集,其中有K个N类训练样本,用于few-shot分类,N个类别中的每个类别有K个注释的图像,表示为I_K,其标签为L_N。我们的目标是创建一个键值对缓存模型作为特征适配器,它包含N个类别中的few-shot的知识。对于每个训练图像,我们利用CLIP预先训练的视觉编码器来提取其C维的L2归一化特征,并将其真实标签转换为N维的独热向量。对于所有N K个训练样本,我们把它们的视觉特征和相应的标签向量表示为F_train∈RN K×C和L_train∈RN K×N。

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

对于键值对缓存,CLIP编码的表征F_train被视为键,而真实文本独热向量L_train被视作值。通过这种方式,键值缓存记住了所有从少量训练集中提取的新知识,这是为了更新预先训练的CLIP中编码的先验知识。

Tip-Adapter

下面介绍一下Tip-Adapter的模型原理:在构建了缓存模型之后,CLIP的adaption可以简单地通过两个矩阵-向量乘法来实现。在推理过程中,测试图片的L2归一化特征f_test∈R1×C首先被CLIP的视觉编码器提取出来,并作为查询,从键值缓存中检索出来。查询和键之间的亲和度可以被估计为

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

其中,A∈R_1×N K和β代表一个调制超参数。由于查询和关键特征都是L2归一化的,术语f_testFTtrain相当于测试特征f_test和所有少数训练特征F_Ttrain之间的 余弦相似度。指数函数被用来将相似度转换为非负值,β调节其锐度。之后,缓存模型的预测可以通过缓存值的线性组合得到,并以查询键的相似度加权,表示为AL_train∈R1×N

除了从缓存模型中检索到的少量知识外,预训练的 CLIP 的先验知识由f_testWc T ∈ R1×N计算,其中 Wc 是 CLIP 的分类器从其预训练的文本编码器生成的权重。通过残差连接混合两个预测,Tip-Adapter 的测试图像的输出 logits 计算公式为

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

其中 α 表示残差率,我们定义 φ(x) = exp(-β(1 – x))。因此,TipAdapter 的预测包含两个项,前一项自适应地总结了少量训练数据集中的信息,后一项保留了 CLIP 分类器 W cT 的先验知识。这两项由权重 α 平衡。根据经验,如果预训练和下游少样本任务之间的域差距很大,则 α 设置为大,因为需要来自少样本集的更多知识,否则设置较小。

Tip-Adapter-F

Tip-Adapter 可以通过在少样本训练集中加入新知识来极大地提升 CLIP。然而,随着shots的增加,未经训练的 Tip-Adapter 逐渐落后于需要训练的 CoOp 和 CLIP-Adapter。为了在保持效率的同时缩小差距,论文提出了 Tip-Adapter-F,它将缓存模型中的键视为可学习参数,并通过 SGD 对其进行微调。由于缓存模型的有利基础,与 CoOp 和 CLIP-Adapter 的 200 轮训练相比,Tip-Adapter-F 在 ImageNet 上仅用 20 轮微调就实现了最先进的性能。

更具体地说,论文解冻了缓存的键 F_train,但仍然冻结了值 L_train 和预训练 CLIP 的两个编码器。原因是更新缓存模型中的键可以提高亲和度A的估计,从而能够更准确地计算测试图像和训练图像之间的余弦相似度。相反,缓存模型中的值是代表真实注释的独热编码,应保持冻结以很好地记住类别信息。

与CLIP-Adapter模型的关系

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

图2. Tip-Adapter和CLIP-Adapter在获取少量知识时的比较:

Tip-Adapter从构建的缓存模型中检索,但CLIP-Adapter通过学习型适配器对知识进行编码,并在CLIP的分类器Wc的帮助下获得。

图3. Tip-Adapter的多模态缓存模型:

与以前的网络只有视觉缓存不同,Tip-Adapter通过CLIP的编码器缓存视觉和文本知识。

它们有两个关键区别。首先,CLIP-Adapter随机初始化缓存模型中的键和值为W1和W2,并通过SGD学习它们,而Tip-Adapter直接用缓存的训练特征F_train和真实标签的独热编码L_train来构建它们,这是非参数化的和无训练的。其次,Tip-Adapter的瓶颈维度等于N K,而为了防止训练导致的过度拟合,CLIP-Adapter选择了一个较低维度的瓶颈。这表明,Tip-Adapter的缓存模型可以更好地缓解少量数据集的过拟合问题,从而进一步释放大规模预训练模型的拟合能力。第三,Tip-Adapter引入了公式(7)中表示的激活函数。由于它的输入是归一化特征空间中的距离,它自然是在0和1之间有界的。然而,对于CLIP-Adapter,普通的激活函数ReLU被选择来处理无界的输入。总之,Tip-Adapter获得了一个性能良好的适配器,不需要训练,这在少见的分类上更有效率

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

论文中的缓存模型的优势

从少量的训练数据中获取缓存模型已经被之前的许多方法所探索,包括匹配网络、原型网络、MAML、关系网络等。我们的模型在具体方法和实验设置方面与他们有两点不同:

(1)首先,以前的工作只构建了视觉特征的缓存,但Tip-Adapter采用了一个多模态的异质缓存模型,同时具有CLIP提取的视觉和文本特征的缓存,如图3所示。

(2)其次,先前的工作将同一个数据集分成三个不同类别的子集,分别作为训练、测试和验证集。尽管他们用新的数据集对验证集进行测试,但它仍然是在同一个语义领域内。相比之下,Tip-Adapter将预先训练好的CLIP改编成一个全新的数据集进行评估,它可以推广到每一个新的领域。

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

图4. 不同模型在ImageNet上的few-shot分类精度。

表2. 不同模型在ImageNet上的分类准确率(%)与量化值。最后一行蓝字记录了Tip-Adapter-F在进一步微调后比Tip-Adapter带来的性能提升。

实验

训练设置

我们在11个广泛使用的图像分类数据集上对Tip-Adapter和Tip-Adapter-F进行了实验。ImageNet , StandfordCars , UCF101 , Caltech101 , Flowers102 , SUN397 , DTD , EuroSAT , FGVCAircraft , OxfordPets 和 Food101 。

对于CLIP主干,论文利用ResNet-50作为视觉编码器,利用一个transformer作为文本编码器。从中获得两个编码器的预训练权重,并在训练中冻结它们。Tip-Adapter-F使用批次大小256,学习率0.001,以及带有余弦调度器的AdamW优化器进行微调。为EuroSAT数据集设置了100轮的训练,对其他10个数据集只设置了20个周期的训练。

性能比较是在Zero-shot CLIP、Linearprobe CLIP、CoOp和CLIP-Adapter之间进行的。其中,Zero-shot CLIP没有使用额外的训练样本,纯粹通过预先训练的知识进行分类。Linear-probe CLIP在few-shot的训练集上,在权重冻结的CLIP之后训练一个额外的线性分类器。CoOp采用可学习的提示语进行训练,论文也选择了其表现最好的变体进行比较,即把类标记放在没有类特定语境的16个标记提示语的最后。CLIP-Adapter附加了一个特征适配器,以缩小预训练的特征和下游任务之间的领域差距。

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

表3. 不同视觉编码器在16-shot的ImageNet上的分类精度(%)。ViT-B/32和ViT-B/16分别表示patch大小为32×32和16×16的ViT-Base,RN50×16表示计算量为16倍的ResNet-50。

消融研究

作者在 ImageNet 上进行了几项关于 Tip-Adapter 的消融研究。所有实验均采用未经训练的 16-shot 设置。

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

表 4. Tip-Adapter 在 ImageNet 上的四个消融研究(%),从上到下:残差率 α,锐度率 β,缓存模型的大小,以及大于16的更多shot的性能。

残差率α

超参数 α 控制将缓存模型中新调整的预测与预训练的 CLIP 相结合的程度,这也可以解释为对视觉和文本缓存进行加权,如公式 9 所示。

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

如上所述,较大的 α 表示使用来自少样本训练集的更多知识,而较少使用其他知识。我们将 α 从 0.0 更改为 5.0,并将超参数 β 设置为 5.5。当 α 等于 0.0 时,该模型等效于 Zero-shot CLIP,无需使用少样本知识。从表 4 的顶部,我们观察到分类准确度随着 α 从 0.0 增加到 1.0 而提高,在 1.0 时达到了最好的 62.03%。这表明来自 CLIP 的先验知识和来自缓存模型的少样本知识同样重要。

锐度比β

在等式(3)中,激活函数 φ 中的 β 控制亲和力的锐度。当 β 较大时,只有与嵌入空间中的测试图像最相似的训练样本对预测的影响较大,反之亦然。在表 4 的第二部分中,α 为 1.0,我们观察到 β 的变化影响有限,β 的适度 5.5 导致性能最佳的 Tip-Adapter。

缓存模型的大小

我们探讨了 Tip-Adapter 中缓存模型大小的影响。给定 16-shot 训练集,而不是缓存每个类别的所有 16 个样本,我们构建大小大于 0 但小于 16 的缓存。

以 8 为例,我们将 16 个样本随机分成 8 个均匀的组,通过对每组 2 个样本的特征进行平均得到 8 个原型。

考虑到样本的这种随机划分可能会影响性能,我们进行了 5 次实验并报告了平均分数。表 4 第三部分的结果表明,我们缓存的样本越多以保留更多的少样本知识,Tip-Adapter 可以实现的精度越高。

扩大更多shots

鉴于超过 16 shots,论文探索了一种仍然将缓存大小限制为 16 并避免内存的潜在计算负担的方法。以 64 个shots为例,按照上一段的划分策略,我们从 4 组中得到 16 个原型来构建缓存模型。表 4 的最后部分表明,即使将缓存大小限制为 16,Tip-Adapter 也可以很好地从每个类别的 32、64 和 128 个训练样本中捕获知识。此外,当提供更多样本时,性能提升会逐渐减慢,这意味着未经训练的缓存大小可能限制为 16。但是,Tip-Adapter-F 可以通过微调键来打破这种限制,并通过更多的训练shots来获得更好的性能。

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

图 6 不同提示设计的分类性能:单一提示(Cyan)、提示集成(Orange)和可学习提示(Purple)。

表 5. 不同方法对分布偏移的稳健性 (%)。蓝色的最后一行记录了 Tip-Adapter-F 对 Tip-Adapter 的进一步微调带来的性能提升。

提示设计

在图 6 中,我们仅使用一个提示”a photo of a [CLASS].”来测试它们,并观察到性能稍差。 Tip-Adapter-F 和 CLIP-Adapter 的精度下降较小,但 Tip-Adapter 和 Zero-shot CLIP 的精度下降较大,这表明性能更好的模型受提示变化的影响较小。

泛化性

论文通过从一个数据集学习但在另一个数据集上进行测试来评估他们提出的 Tip-Adapter 和 Tip-Adapter-F 的泛化性能力。作者将 ImageNet 设置为提供 16-shot 训练集的源数据集,并采用两个目标数据集进行测试:ImageNetV2 和 ImageNet-Sketch,它们包含与 ImageNet 兼容的类别但存在语义差距。如表 5 所示,未经训练的 Tip-Adapter 对分布偏移具有出色的鲁棒性,超过了 ImageNet-V2 上的 CoOp和 ImageNet-Sketch 上的 CLIP-Adapter。这表明缓存模型更有利于分布外评估,其免训练结构减轻了源数据集过度拟合的风险。此外,Tip-Adapter-F 实现了两全其美:缓存模型带来的强大的分发外性能和微调的领先分发能力。

可视化

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

图 7. Tip-Adapter 中 F_train 的 t-SNE 可视化。不同颜色的点代表不同类别的嵌入。从左到右,三个分布表示微调期间缓存模型中键的变化。

为了更好地显示微调期间缓存模型的变化,我们利用 t-SNE 来可视化图 7 中的键 Ftrain。不同颜色的点表示 16-shot ImageNet 的 10 个类别,以及它们的相对距离反映了类别嵌入的高维分布。从左到右,三个子图分别代表免训练的 Tip-Adapter、微调期间的 Tip-Adapter 和最终的 Tip-Adapter-F。可以观察到,由于设计合理的缓存模型构造,在训练之前,分布已显示出良好的区分度。在微调过程中,同一类别的嵌入逐渐收敛到一起,不同的聚类变得更具对比性和分离性,有助于增强分类能力

结论

我们提出了Tip-Adapter,一种CLIP的非参数自适应方法,它通过从few-shot训练集构建的缓存模型来获取适配器。通过这种方式,从缓存模型中检索出少样本知识,并以免训练的方式与 CLIP 的预训练知识相结合。最重要的是,Tip-Adapter 可以通过在几个 epoch 中微调缓存的键来进一步增强,称为 Tip-Adapter-F,它在现有方法中实现了最佳性能。

但Tip-Adapter-F 仍然需要在 ImageNet 上进行 20 次微调才能学习性能最佳的缓存模型。作者文中提到未来的工作将集中在探索 CLIP 的新的免训练方法,以充分释放其视觉表现的力量。

微调设置

在这里提一下作者实验所用的设置以及微调所做出的尝试:与未经训练的 Tip-Adapter 相比,Tip-Adapter-F 微调了缓存模型中的键 F_train,但冻结了值 L_train、CLIP 的视觉编码器和文本编码器。在这里,我们探讨是否可以对 Tip-Adapter 中的其他模块进行微调以提高性能。

直接说结论吧,无论是解冻 L_train还是预训练模型的视觉和文本编码器进行训练,或者是随机结合解冻等等,论文这么说: 与解冻CLIP的编码器相比,仅微调Ftrain带来更大的性能提升,但耗时更少,充分展示了我们Tip-Adapter-F的优越性**。所以综合考虑到计算资源以及精度等问题,仅解冻F_train进行微调训练无疑是当前最好的方案。

如图:

论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

表 6. 微调 Tip-Adapter 的不同模块。 ‘√’表示微调,符号”-“表示冻结。 ‘Vis.’ 和 ‘Tex.’ 代表 CLIP 的视觉编码器和文本编码器。准确率 (%) 和训练时间在 16-shot ImageNet 和单个 NVIDIA GeForce RTX 3090 GPU 上进行了测试。

论文与一些基于完全训练的方法进行了比较,也都取得了相当好的效果。

后期会写一篇关于Tip-Adapter源码从零复现的博客,欢迎大家关注!

基于远程服务器 Tip_Adapter源码从零开始复现

Original: https://blog.csdn.net/zcyzcyjava/article/details/126570313
Author: nocol.
Title: 论文笔记:Tip-Adapter: Training-free CLIP-Adapter for Better Vision-Language Modeling详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/645427/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球