Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification (Paper reading)
Renrui Zhang,Shanghai AI Laboratory,ECCV2022,Cited:45,Code,Paper
1. 前言
对比式视觉-语言预训练,也称为CLIP,通过大规模的图像-文本对来学习视觉表示,为zero-shot知识迁移展示了新的范式。它在下游任务上展现出令人瞩目的性能,实现了zeri-shot的知识迁移。为了进一步增强CLIP的适应能力,现有方法提出了微调可学习模块的方法,显著提高了少样本情况下的性能,但也引入了额外的训练时间和计算资源。在本文中,我们提出了一种适用于CLIP的无需训练的少样本分类方法,称为Tip-Adapter。它不仅继承了zero-shot CLIP的无需训练的优势,还能够在性能上与需要训练的方法相媲美。Tip-Adapter通过来自少样本训练集的键-值缓存模型构建适配器,并通过特征检索来更新CLIP中编码的先前知识。除此之外,通过对缓存模型进行微调,Tip-Adapter的性能可以进一步提升,达到在ImageNet上领先的水平,且仅需比现有方法少10倍的微调轮次,既高效又有效。我们在11个数据集上进行了大量的少样本分类实验,以展示我们提出的方法的优越性。
2. 介绍
我们提出了一种适用于CLIP的无需训练的自适应方法,称为Tip-Adapter,它通过在权重冻结的CLIP模型中附加一种新颖的非参数适配器实现。与现有方法不同,我们的方法不需要额外的训练,而是将适配器设计为一个查询-键缓存模型,使用zero-shot样本数据集。具体而言,Tip-Adapter通过CLIP的视觉编码器提取zero-shot样本图像的视觉特征,并将其相应的标签转换为独热编码。然后,创建一个包含zero-shot样本视觉特征和独热标签的缓存模型,将它们视为配对的键和值。通过缓存模型,与传统的通过随机梯度下降(SGD)进行微调相比,Tip-Adapter的无需训练的构建表现出很高的效率。在推理过程中,测试图像首先计算其与缓存键的特征相似性,然后汇总缓存值以形成适配器的预测,可以将其视为从缓存模型中检索少样本知识。然后,通过残差连接将适配器的预测与原始CLIP的预测相结合。通过这种方式,Tip-Adapter同时利用了来自预训练CLIP和少样本训练数据集的知识。令人惊讶的是,无需训练的Tip-Adapter可以与经过微调的CoOp和CLIP-Adapter表现相当。此外,如果我们将缓存键解冻为可学习参数,并进一步进行微调,Tip-Adapter的性能可以在很少的训练轮次内显著提升。我们将这个经过微调的版本称为Tip-Adapter-F,仅需要在ImageNet [10] 上进行 20 轮训练,就能达到与CoOp和CLIP-Adapter所需的 200 轮相媲美的最先进水平。在表1中,我们列出了所有现有方法在ImageNet上进行16-shot分类的性能、训练时间和推理速度的比较,表明我们的方法在准确性和效率之间取得了很好的平衡。
3. 方法
缓存模块结构: 给定预训练的CLIP模型和一个新的数据集,其中包含K-shot N-class训练样本,用于few-shot样本分类。每个类别中有 K K K个标注图像,表示为 I K I_K IK,并附带其标签 L N L_N LN。我们的目标是创建一个键-值缓存模型作为特征适配器,其中包含 N N N个类别内的few-shot本知识。对于每个训练图像,我们使用CLIP的预训练视觉编码器提取其 C C C维 L 2 L_2 L2归一化特征,并将其地面真实标签转换为一个 N N N维的独热向量。对于所有 N K N K NK个训练样本,我们将它们的视觉特征和相应的标签向量表示为 F t r a i n ∈ R N K × C F_{train} ∈ R^{NK×C} Ftrain∈RNK×C和 L t r a i n ∈ R N K × N L_{train} ∈ R^{NK×N} Ltrain∈RNK×N。对于键-值缓存,CLIP编码表示 F t r a i n F_{train} Ftrain被视为键,而独热的地面真实向量 L t r a i n L_{train} Ltrain被用作它们的值。通过这种方式,键-值缓存会记忆从少样本训练集中提取的所有新知识,用于更新预训练CLIP中编码的先验知识。
Tip-Adapter: 构建缓存模型后,可以通过两次矩阵-向量乘法简单实现CLIP的适应。在推断过程中,测试图像的L2归一化特征 f t e s t ∈ R 1 × C f_{test} ∈ R^{1×C} ftest∈R1×C首先由CLIP的视觉编码器提取,并用作从键-值缓存中检索的查询。查询与键之间的关联可以估计为:
A = e x p ( − β ( 1 − f t e s t F t r a i n T ) ) A = exp(-\beta(1-f_{test}F_{train}^{T})) A=exp(−β(1−ftestFtrainT))
其中, A ∈ R 1 × N K A ∈ R^{1×NK} A∈R1×NK,而 β β β代表调节超参数。由于查询和键特征都是L2归一化的,术语 f t e s t F t r a i n T f_{test}F^{T}_{train} ftestFtrainT等同于测试特征 f t e s t f_{test} ftest与所有few-shot训练特征 F t r a i n T F^{T}_{train} FtrainT之间的余弦相似性。采用指数函数将相似性转换为非负值,β调节其锐度。随后,缓存模型的预测可以通过加权查询-键关联的缓存值的线性组合获得,表示为 A L t r a i n ∈ R 1 × N AL_{train} ∈ R^{1×N} ALtrain∈R1×N。除了从缓存模型中检索的few-shot知识外,预训练CLIP的先前知识通过 f t e s t W c T ∈ R 1 × N f_{test}W^{T}_c ∈ R^{1×N} ftestWcT∈R1×N计算,其中 W c W_c Wc是从其预训练文本编码器生成的CLIP分类器的权重。通过残差连接混合两个预测,Tip-Adapter计算出测试图像的输出logits,如下所示:
l o g i t s = α A L t r a i n + f t e s t W c T = α φ ( f t e s t F t r a i n T ) L t r a i n + f t e s t W T c logits = \alpha A L_{train} + f_{test}W^{T}_c = \alpha \varphi(f_{test}F^{T}_{train})L_{train} + f_{test}W^{c}_{T} logits=αALtrain+ftestWcT=αφ(ftestFtrainT)Ltrain+ftestWTc
其中, α α α表示残差比率,我们定义 φ ( x ) = e x p ( − β ( 1 − x ) ) φ(x) = exp(−β(1 − x)) φ(x)=exp(−β(1−x))。因此,TipAdapter的预测包含两个项,前一项自适应地总结了来自few-shot训练数据集的信息,后一项保留了来自CLIP分类器 W c T W^{T}_{c} WcT的先验知识。这两个项由权重 α α α平衡。经验上,如果预训练和下游少样本任务之间的领域差距较大,则将 α α α设置为较大的值,因为需要来自少样本集的更多知识;反之,如果差距较小,则将 α α α设置为较小的值。
Tip-Adapter微调:Tip-Adapter能够通过整合few-shot训练集中的新知识显著提升CLIP的性能。然而,当提供更多样本时,未经过训练的Tip-Adapter逐渐落后于需要训练的CoOp和CLIP-Adapter。为了减小差距并保持效率,我们提出了Tip-Adapter-F。Tip-Adapter-F将缓存模型中的键视为可学习参数的良好初始化,并通过随机梯度下降(SGD)进行微调。在ImageNet 上仅进行了20个时期的微调,Tip-Adapter-F实现了最先进的性能。具体而言,我们解除了缓存键 F t r a i n F_{train} Ftrain的冻结,但仍然冻结了 L t r a i n L_{train} Ltrain的值以及预训练CLIP的两个编码器。其直觉是,更新缓存模型中的键可以提升关联估计,从而能够更准确地计算测试图像与训练图像之间的余弦相似性。相比之下,缓存模型中的值是表示地面真实注释的独热编码,应该保持冻结以充分记忆类别信息。