《MaPLe: Multi-modal Prompt Learning》中文校对版
系列论文研读目录
文章目录
- 系列论文研读目录
- 题目:《Maple:多模态提示学习》
- 摘要
- 1.简介
- 2.相关工作
- 视觉语言模型:
- 提示学习:
- 视觉语言模型中的提示学习:
- 3.方法
- 3.1.回看CLIP
- 编码图像:
- 编码文本:
- Zero-shot分类:
- 3.2.Maple:多模态提示学习
- 3.2.1深度语言提示
- 3.2.2 深度视觉提示
- 3.2.3视觉语言提示耦合
- 4.实验
- 4.1.基准设定
- 从基本类到新类的泛化:
- 跨数据集评价:
- 领域概括:
- 数据集:
- 实现细节:
- 7.
- 8.
- 9.
- 10.
题目:《Maple:多模态提示学习》
摘要
预训练的视觉语言(V-L)模型,如CLIP,已经显示出对下游任务的出色泛化能力。然而,它们对输入文本提示的选择很敏感,需要仔细选择提示模板才能良好地执行。受自然语言处理(NLP)文献的启发,最近的CLIP适应方法将提示作为文本输入来学习,以微调CLIP用于下游任务。我们注意到,使用提示来适应CLIP(语言或视觉)的单个分支中的表示是次优的,因为它不允许在下游任务上动态调整两个表示空间的灵活性。在这项工作中,我们提出了多模态提示学习(Maple)的视觉和语言分支,以提高视觉和语言表征之间的一致性。我们的设计促进了视觉语言提示之间的强耦合,以确保相互协同作用,并阻止学习独立的单峰解决方案。此外,我们在不同的早期阶段学习单独的提示,以逐步对阶段特征关系进行建模,从而实现丰富的上下文学习。我们评估了我们的方法在三个代表性的任务上的有效性:推广到新的类,新的目标数据集和看不见的域转移。与最先进的方法Co-CoOp相比,Maple表现出良好的性能,在11个不同的图像识别数据集上,在新类别上实现了3.45%的平均绝对增益,在整体谐波平均值上实现了2.72%的平均绝对增益。我们的代码和预培训模型可在https://github.com/muzairkhattak/multimodalprompt-learning上获得。
1.简介
- 基础视觉语言(V-L)模型,如CLIP(对比图像预训练)[32]已经显示出对下游任务的出色泛化能力。这种模型经过训练,以在网络规模的数据上对齐语言和视觉模态,例如,CLIP中有4亿个文本图像对。由于自然语言提供了丰富的监督,这些模型可以推理开放词汇的视觉概念。在推断期间,使用手工设计的文本提示,比如’‘a photo of a '作为查询文本的编码器。将输出文本嵌入与来自图像编码器的视觉嵌入进行匹配以预测输出类。设计高质量的上下文提示已被证明可增强CLIP和其他V-L模型的性能[17,42]。
- 尽管CLIP在推广新概念方面有效,但其庞大的规模和缺乏的训练数据(例如,few-shot设置)使得不可能为下游任务微调完整模型。这种微调也可能忘记在大规模预训练阶段获得的有用知识,并可能造成过度适应下游任务的风险。为了解决上述挑战,现有的工作提出了语言提示学习以避免手动调整提示模板,并提供了一种机制来在保持原始权重冻结的同时适应模型[14,25,29,48,49]。受自然语言处理(NLP)的启发,这些方法仅探索CLIP中文本编码器的即时学习(图1:a),而自适应选择以及CLIP中同样重要的图像编码器仍然是文献中未探索的主题。
- 我们的动机来自CLIP的多模态特性,其中文本和图像编码器共存,并且都有助于正确对齐V-L模态。我们认为,任何提示技术应该完全适应模型,因此,学习提示只为文本编码器,在CLIP中,是不足以模拟图像编码器所需的适应的。为此,我们开始在提示方法中实现完整性,并提出多模态提示学习(MaPLe)来充分微调文本和图像编码器表示,以便在下游任务中实现最佳对齐(图1:B)。我们在三个关键的代表性设置上进行了广泛的实验,包括基础到新的泛化,跨数据集评估和域泛化,证明了Maple的实力。在基于新的泛化方面,我们提出的Maple在11个不同的图像识别数据集上优于现有的快速学习方法(图1:c),并在最先进的方法Co-CoOp上实现了3.45%的绝对平均增益和2.72%的谐波平均值[48]。此外,MaPLe在跨数据集传输和域泛化设置中表现出良好的泛化能力和鲁棒性,与现有方法相比得到了一致的改进。由于其流线型的架构设计,与Co-CoOp相比,Maple在训练和推理过程中表现出更高的效率,而没有太多的开销,Co-CoOp由于其图像实例条件设计而缺乏效率。总之,这项工作的主要贡献包括:
(1)我们建议在CLIP中采用多模态提示学习,以使其视觉语言表征更好地保持一致。据我们所知,这是第一个用于微调CLIP的多模态提示方法.
(2)为了将在文本和图像编码器中学习到的提示联系起来,我们提出了一个耦合函数,以明确地将视觉提示条件化到它们的语言对应物上。它是两种模式之间的桥梁,允许梯度的相互传播,以促进协同作用。
(3)我们的多模态提示是在视觉和语言分支的多个Transformer模块中学习的,以逐步学习两种模态的协同行为。这种深度提示策略允许独立地对上下文关系建模,从而提供更大的灵活性来对齐视觉-语言表示。
Maple与标准快速学习方法的比较。(a)现有的方法采用单模态提示技术来微调CLIP表示,因为提示仅在CLIP的单个分支(语言或视觉)中学习。(b)Maple引入了分支感知的分层提示,同时适应语言和视觉分支,以提高泛化能力。©Maple在11个不同的图像识别数据集上超越了最先进的方法,用于新的类泛化任务。
2.相关工作
视觉语言模型:
语言监督与自然图像的结合使用在计算机视觉领域具有重要意义。与仅使用图像监督学习的模型相比,这些视觉语言(V-L)模型编码了丰富的多模态表示。最近,像CLIP [32],ALIGN [15],LiT [45],FILIP [41]和佛罗伦萨[43]这样的V-L模型已经在广泛的任务中表现出卓越的性能,包括few-shot和zero-shot视觉识别。这些模型使用来自网络的大量可用数据,以自我监督的方式学习联合图像语言表示。例如,CLIP和ALIGN分别使用10400 M和101 B图像-文本对来训练多模态网络。尽管这些预先训练的V-L模型学习了广义表示,但有效地使其适应下游任务仍然是一个具有挑战性的问题。许多工作已经证明了通过使用定制的方法来适应V-L模型以用于few-shot图像识别[9,19,46],对象检测[8,10,27,34,44,50]和分割[5,22,26,33],下游任务的性能更好。在这项工作中,我们提出了一种新的多模态提示学习技术,以有效地适应CLIP的few-shot和zero-shot视觉识别任务。
提示学习:
句子形式的指令,称为文本提示,通常被给予V-L模型的语言分支,使其更好地理解任务。可以为下游任务手工制作脚本,也可以在微调阶段自动学习脚本。后者被称为“提示学习”,它首先用于NLP [21,23,24],然后是V-L [48,49,51]和仅视觉[16,38,39,47]模型中的适应。与[16]类似,我们的设计也使用了深度“视觉”提示。然而,我们是第一个多模态提示设计,而[16]是单模态的。
视觉语言模型中的提示学习:
完全微调和线性探测[9]是使V-L模型(即CLIP)适应下游任务的两种典型方法。完整的微调导致先前学习的联合V-L表示降级,而线性探测限制了CLIP的零触发能力。为此,受NLP中提示学习的启发,许多工作提出通过在端到端训练中学习提示标记来适应V-L模型。CoOp [49]通过优化其语言分支的提示向量的连续集合来微调CLIP以进行少量传输。Co-CoOp [48]强调了CoOp在新类上的较差性能,并通过显式地对图像实例进行条件提示来解决泛化问题。[25]提出了通过学习提示的分布来优化多组提示。[18]通过学习视频理解任务的提示来调整CLIP。[1]通过视觉分支上的提示,对CLIP执行视觉提示调整。我们注意到,现有的方法遵循独立的单峰解决方案,并学习提示,无论是在语言或视觉分支的CLIP,从而适应CLIP部分。在本文中,我们探讨了一个重要的问题:鉴于CLIP的多模态性质,完全提示(即,在语言和视觉分支)更适合适应CLIP?我们的工作是第一个回答这个问题,通过调查的有效性,多模态提示学习,以提高视觉和语言表征之间的一致性。
3.方法
我们的方法涉及微调预训练的多模态CLIP,以便通过提示进行上下文优化,从而更好地泛化到下游任务。图2显示了我们提出的MaPLe(多模态提示学习)框架的整体架构。与之前仅在语言分支学习上下文提示的方法[48,49]不同,Maple提出了一种联合提示方法,其中上下文提示在视觉和语言分支中都被学习。具体来说,我们在语言分支中附加可学习的上下文标记,并通过耦合函数显式地将视觉提示置于语言提示上,以建立它们之间的交互。为了学习分层上下文表示,我们在两个分支中引入了深度提示,通过跨不同Transformer块的单独可学习上下文提示。在微调过程中,只有上下文提示沿着其耦合函数被学习,而模型的其余部分被冻结。下面,我们首先概述预训练的CLIP架构,然后介绍我们提出的微调方法。
3.1.回看CLIP
我们的方法建立在一个预先训练的视觉语言(VL)模型CLIP上,该模型由文本和视觉编码器组成。与现有的提示方法[48,49]一致,我们使用基于CLIP模型的视觉Transformer(ViT)[6]。CLIP对图像I ∈ RH×W×3和相应的文本描述进行编码,如下所述。
编码图像:
图像编码器V具有K个Transformer层,将图像I分割成M个固定大小的块,这些块被投影到块嵌入E0 ∈ RM×dv中。补丁嵌入Ei与可学习类(CLS)标记ci沿着被输入到第(i + 1)个Transformer块(Vi+1)并依次通过K个Transformer块进行处理,
为了获得最终图像表示x,最后一个Transformer层(VK)的类标记cK经由ImageProj被投影到公共V-L潜在嵌入空间,
编码文本:
CLIP文本编码器通过将词标记化并将它们投影到词嵌入W 0 = [w1 0,w2 0,· · ·,wN 0 ] ∈ RN×dl来生成用于文本描述的特征表示。在每一级,Wi被输入到文本编码分支(Li+1)的第(i + 1)层Transformer层,
通过将与最后一个Transformer块LK的最后一个令牌对应的文本嵌入经由TextProj投影到公共V-L潜在嵌入空间来获得最终文本表示z,
Zero-shot分类:
对于零镜头分类,文本提示是手工制作的,具有类标签y ∈ {1,2,…C}(例如,‘a photo of a ’)有C类的照片。利用温度参数τ计算对应于具有最高余弦相似性得分(sim(·))的图像I的预测Hy,
3.2.Maple:多模态提示学习
为了有效地微调CLIP用于下游图像识别任务,我们探索了多模式提示调整的潜力。我们的理由是,先前的研究主要是探索单一模态的方法是不太合适的,因为他们没有提供灵活性,以动态适应语言和视觉表征空间。因此,为了实现提示的完整性,我们强调了多模态提示方法的重要性。在图3中,我们将Maple的图像嵌入与最新的最先进的工作Co-CoOp进行了可视化和比较。请注意,CLIP、CoOp和Co-CoOp的图像嵌入将是相同的,因为它们不学习视觉分支中的提示。可视化结果显示,Maple的图像嵌入更易分离,表明除了语言提示外,学习视觉提示可以更好地适应CLIP。除了多模态提示,我们发现,这是必不可少的学习提示更深的Transformer层逐步建模阶段式的功能表示。为此,我们建议在视觉和语言分支的第一个J层(其中J < K)中引入可学习的令牌。这些多模态分层提示利用嵌入在CLIP模型中的知识来有效地学习与任务相关的上下文表示(见图4)。
在MaPLe中按提示深度(左侧)和提示长度(右侧)进行消融。我们报告所有数据集的保留验证集的平均结果。
3.2.1深度语言提示
为了学习语言上下文提示,我们在CLIP的语言分支中引入了b,可学习标记{Pi ∈ Rdl }b i=1。输入嵌入现在遵循形式[P1,P2,· · ·,Pb,W 0],其中W 0 = [w1,w2,· · ·,wN]对应于固定的输入令牌。在语言编码器(Li)的每个Transformer块中进一步引入新的可学习令牌,直到特定深度J,
这里[·,·]指的是连接操作。在第J个Transformer层之后,后续层处理先前层提示并计算最终文本表示z,
当J = 1时,可学习标记P仅应用于第一层Transformer层的输入,并且这种深度语言提示技术退化为CoOp [49]。
3.2.2 深度视觉提示
类似于深度语言提示,我们在CLIP的视觉分支中与输入图像标记一起引入B可学习标记{RdPi ∈ Rdv }B i=1。在图像编码器(V)的更深的Transformer层中进一步引入新的可学习令牌,直到深度J。
我们的深度提示提供了跨ViT架构内不同功能层次结构学习提示的灵活性。我们发现,跨阶段的共享提示比独立提示相比是更好的,由于连续的Transformer块处理功能更相关。因此,与早期阶段相比,后期阶段不提供独立学习的补充提示。
3.2.3视觉语言提示耦合
我们的理由是,在提示调整时,它是必不可少的采取多模态的方法,同时适应双方的视觉和语言的CLIP分支,以实现完整的上下文优化。一种简单的方法是简单地将联合收割机和语言提示结合起来,其中语言提示P和视觉提示P~都将在相同的训练计划中学习。我们将此设计命名为“独立V-L提示”。虽然这种方法满足了提示的完整性要求,但这种设计缺乏视觉和语言分支之间的协同作用,因为这两个分支在学习任务相关上下文提示时不交互。
为此,我们提出了一个分支意识的多模态提示,通过跨两种模态共享提示,将CLIP的视觉和语言分支调谐在一起。语言提示令牌被引入到语言分支中直到第J个Transformer块,类似于如等式1所示的深度语言提示。1-3.为了保证视觉-语言提示之间的相互协同作用,视觉提示P,是通过视觉-语言投射来投射语言提示P而得到的,我们称之为视觉-语言耦合函数F(·),使得P k = Fk(Pk)。耦合函数被实现为将dl维输入映射到dv的线性层。这在两种模态之间起到桥梁的作用,从而促进梯度的相互传播。
与独立的V-L提示不同,P的外显条件作用有助于在两个分支之间共享的嵌入空间中学习提示,从而提高相互协同作用。
4.实验
4.1.基准设定
从基本类到新类的泛化:
我们评估了MaPLe的可推广性,并遵循zero-shot设置,其中数据集被分为基础类和新类。该模型仅在少数镜头设置中的基本类别上训练,并在基本类别和新颖类别上评估。
跨数据集评价:
为了验证我们的方法在跨数据集传输中的潜力,我们直接在其他数据集上评估了我们的ImageNet训练模型。与Co-CoOp一致,我们的模型在所有1000个ImageNet类上以少镜头的方式进行训练。
领域概括:
我们评估了我们的方法在分布外数据集上的鲁棒性。与跨数据集评估类似,我们直接在包含各种类型的域转换的其他四个ImageNet数据集上测试ImageNet训练模型。
数据集:
为了从基础到新类别和跨数据集评估的推广,我们遵循[48,49]并评估了我们的方法在11个图像分类数据集上的性能,这些数据集涵盖了广泛的识别任务。这包括两个通用对象数据集ImageNet [4]和Caltech 101 [7];五个细粒度数据集OxfordPets [31]、StanfordCars [20]、Flowers 102 [30]、Food 101 [2]和FGVCAircraft [28];场景识别数据集SUN 397 [40];动作识别数据集UCF 101 [36];纹理数据集DTD [3]和卫星图像数据集EuroSAT [11]。对于领域泛化,我们使用ImageNet作为源数据集,并使用其四个变体作为目标数据集,包括ImageNetV 2 [35]、ImageNetSketch [37]、ImageNet-A [13]和ImageNet-R [12]。
实现细节:
在所有实验中,我们使用了少量的训练策略,在16个镜头中,每个类随机抽样。我们对预训练的ViT-B/16 CLIP模型应用即时调整,其中dl = 512,dv = 768和dvl = 512。对于MaPLe,我们将提示深度J设置为9,并将语言和视觉提示长度设置为2。所有模型均在单个NVIDIA A100 GPU上通过SGD优化器进行了5个时期的训练,批处理大小为4,学习率为0.0035。我们报告基地和新的类精度和他们的谐波平均值(HM)平均超过3次运行。我们用模板“a photo of a”的预训练CLIP单词嵌入初始化第一层P0的语言提示,而对于后续层,它们是从正态分布随机初始化的。为了在ImageNet的所有1000个类上训练Maple作为源模型,提示深度J设置为3,模型训练了2个epoch,学习率为0.0026。深度语言提示、深度视觉提示和独立V-L提示的超参数详见附录A。超参数在所有数据集上都是固定的。