- 以下为解释
paper | code |
---|---|
添加链接描述 | https://github.com/gaopengcuhk/CLIP-Adapter |
大规模对比视觉语言预训练在视觉表征学习方面取得了显著进展。与由一组固定的离散标签训练的传统视觉系统不同,在(Radford等人,2021)中引入了一种新范式,以直接学习在开放词汇环境中将图像与原始文本对齐。在下游任务中,使用精心选择的文本提示进行零炮预测。
为了避免非平凡的提示工程,提出了上下文优化(Zhou等人,2021),将连续向量学习为任务特定的提示,并使用少量的快照训练示例。在本文中,我们展示了实现更好的视觉语言模型的另一种途径,而不是快速调优。虽然提示调优是针对文本输入的,但我们建议CLIP Adapter在视觉或语言分支上使用功能适配器进行微调。具体来说,CLIPAdapter采用了一个额外的瓶颈层来学习新特征,并与原始预处理特征进行残差样式特征混合。因此,CLIPAdapter能够在保持简单设计的同时,性能优于上下文优化。实验和对各种视觉分类任务的广泛消融研究证明了我们的方法的有效性。
不幸的是,为每项视觉任务收集大规模高质量数据集是劳动密集型的,而且成本太高,无法扩展。为了解决这个问题,“预训练微调”范式,即对大型数据集(如Imagenet)进行预训练(Krizhevsky等人,2012),然后对各种下游任务进行微调,已被广泛应用于视觉领域。然而,这些方法仍需要大量注释才能对许多下游任务进行微调。最近,对比语言图像预训练(CLIP)(Radford等人,2021)是通过利用大规模噪声图像-文本对的对比学习来解决视觉任务的。它通过将视觉分类放入合适的手工制作的模板中作为提示,在没有任何注释(即零镜头转移)的情况下,在各种视觉分类任务上实现手工模板的prompts。
尽管基于提示的零触发转移学习显示出良好的性能,但设计好的提示仍然是一个工程问题,需要大量的时间和领域知识,语境优化Coop)Context Optimization(Zhou等人,2021) 进一步提出学习连续软提示,用少量镜头示例替换精心选择的硬提示。Coop在零镜头剪辑和线性探测剪辑设置的基础上显著改进了少量镜头分类。展示了在大规模预训练视觉语言模型上进行提示调整的潜力
在本文中,我们提出了一种不同的方法,用特征适配器更好地适应视觉语言模型,而不是快速调整。与执行软提示优化的CoOp不同,我们只需对轻量级附加功能适配器进行微调。由于CLIP的过度参数化和缺乏足够的训练示例,幼稚的微调将导致对特定数据集的过度拟合,并且由于在所有CLIP层中向前和向后传播,训练过程将非常缓慢。受参数高效传递学习中适配器模块的激励(Houlsby等人,2019),我们提出了CLIP适配器,它只微调少量附加权重,而不是优化CLIP的所有参数。CLIP Adapter采用了一种轻量级瓶颈架构,通过减少参数的数量来防止少数镜头学习的潜在过拟合问题。同时,CLIP Adapter与Houlsby et al.(2019)在两个重要方面有所不同:CLIP Adapter仅在视觉或语言主干的最后一层之后添加了两个额外的线性层。相反,原始适配器模块被插入语言主干的所有层;
此外,CLIP适配器通过剩余连接将原始零快照视觉或语言嵌入与相应的微调功能混合。通过这样一种“残余风格融合”,CLIP Adapter可以同时将存储在原始CLIP中的知识和从少数射击训练示例中获得的新知识进行输出。总体而言,我们的贡献可以总结如下:
-
我们建议使用CLIP Adapter进行剩余样式特征混合,以通过微调实现高效的few-shot转换学习。
-
与CoOp相比,CLIP Adapter实现了更好的少数镜头分类性能,同时具有更简单的设计,这表明CLIP适配器是快速调整的一个很有前景的替代方案。
2 Related Work
2.1 Model Fine-Tuning
2.2 Prompt Design
2.3 Vision-Language Models
3 Our Approach
3.1 Classifier Weight Generation for Few-Shot Learning
输入图像 I ∈ R H × W × 3 ⇒ D 维图像特征向量 f ∈ R D → W ∈ R D × K ( 分类投影向量 ) 输入图像I ∈ R^{H×W×3} \Rightarrow D维图像特征向量 f\in R^{D} \xrightarrow{ W ∈ R^{D×K}(分类投影向量) } 输入图像I∈RH×W×3⇒D维图像特征向量f∈RDW∈RD×K(分类投影向量)
与监督训练不同,在本文中,我们感兴趣的是具有少量示例的图像分类。用少量样本从头开始训练主干和分类器,很容易过度拟合某些数据集,并可能在测试剥离时性能严重下降。通常,代表性的少镜头学习模式是首先对大规模数据集的主干进行预处理,然后通过直接进行零镜头预测或对少镜头示例进行进一步微调,将所学知识转移到下游任务。
adheres - CLIP adheres to the zero-shot transfer style Clip 可在 大型的image-text pairs预训练之后,无需微调,直接应用。
对于带有自然名称
{
C
1
,
.
.
.
,
C
k
}
\{C_1, . . . , C_k\}
{C1,...,Ck}的K类数据,语言提取器将提取分类特征 classifier weight
W
i
W_i
Wi。
W
i
=
B
E
R
T
(
T
o
k
e
n
i
z
e
r
(
[
H
;
C
i
]
)
)
,
H
为预定义的硬
p
r
o
m
p
t
模板
W_i= BERT(Tokenizer([H;C_i])),H为预定义的硬prompt模板
Wi=BERT(Tokenizer([H;Ci])),H为预定义的硬prompt模板
或者,Coop采用连续提示,而不是手工制作的硬提示。Coop创建一个随机初始化可学习软令牌S的列表∈Rの, 其中L表示软标记序列的长度。然后,软令牌序列SI连接到每个类名C;然后给我一个提示。我们将整个过程表示为
对于CLIP和Coop,使用生成的分类器权重Wi,其中f1,…K],我们可以通过前面提到的等式(1)计算i类的预测概率pi。
3.2 CLIP-Adapter
与Coop的快速 prompt tuning不同,与Coop的快速调整不同,我们提出了一个替代框架,通过微调额外的特征适配器,在少镜头图像分类上实现更好的视觉语言模型。我们声称,以前广泛采用的“由于大量参数和训练示例的不足,预处理微调范式在少数镜头设置下无法微调整个CLIP主干。因此,我们提出了Cllp适配器,它只向CLIP的语言和图像分支附加少量额外的可学习瓶颈线性层,同时在镜头微调期间保持原始CLIP主干冻结-调谐。然而,在少数几个示例中,带有附加层的简单微调可能仍会过度适用。为了处理过度适用并提高Cllp适配器的健壮性,我们进一步采用剩余连接动态地将微调知识与CLIP主干的原始知识相结合。
Specifically, 对于给定的图像
I
I
I和K个类别
C
i
i
=
1
K
{C_i}_{i=1}^K
Cii=1K,可以通过以下式子得到特征f和w。
然后两个可学习的特征适配器 A v ( ⋅ ) a n d A t ( ⋅ ) Av(·) and At(·) Av(⋅)andAt(⋅),每个包含两个线性层。为了避免遗忘预处理CLIP编码的原始知识,我们对特征适配器采用了残差连接。使用两个常量值α和β作为“剩余比率”,以帮助调整保持原始知识的程度,从而提高绩效。
在得到新的特征之后,继续使用等式1,计算 P = { p i } i = 1 K P=\{p_i\}_{i=1}^K P={pi}i=1K,图像的预测类别为 i = a r g m a x i p i i = arg max_i \ p_i i=argmaxi pi。