文章汇总
存在的问题
由于clip的大规模和训练数据的稀缺性(例如,少样本设置)使得对下游任务的完整模型进行微调是不可行的。这种微调也可能忘记在大规模预训练阶段获得的有用知识,并可能对下游任务造成过拟合的风险。
相关文章:
论文解读:(CoOp)Learning to Prompt for Vision-Language Models-CSDN博客
论文解读:(CoCoOP)Conditional Prompt Learning for Vision-Language Models-CSDN博客
动机
动机源于CLIP的多模态特性,其中文本和图像编码器共存,并且都有助于正确对齐V-L模态。我们认为任何提示技术都应该完全适应模型。
解决办法
通过实现提示方法的完整性,并提出了多模态提示学习(MaPLe),以充分微调文本和图像编码器表示,以便在下游任务中实现最佳对齐。
方法简述
本质就是对clip进行了改写
对于text encoder:
分别为文字输入的token和图片输入的token。之后引入了可学习向量
,对于text encoder开始的输入是
。
学习流程如下
对于image encoder:
学习流程也十分类似,对于image encoder开始的输入是。
语言提示转换成视觉提示:
需要值得注意的是:是由
决定的,用原文的话,即:
视觉提示符是通过视觉到语言的投影来投影语言提示符P,我们称之为V-L耦合函数F(·),使得
。耦合函数是作为一个线性层实现的,它将
维输入映射到
。这作为两种模式之间的桥梁,从而鼓励梯度的相互传播。
所以image encoder的学习流程改成如下:
摘要
预训练的视觉语言(V-L)模型,如CLIP,在下游任务中显示出出色的泛化能力。但是,它们对输入文本提示的选择很敏感,需要仔细选择提示模板才能运行良好。受自然语言处理(NLP)文献的启发,最近的CLIP适应方法学习提示作为文本输入,以微调下游任务的CLIP。我们注意到,使用提示来适应CLIP(语言或视觉)的单个分支中的表示是次优的,因为它不允许在下游任务上动态调整两个表示空间的灵活性。在这项工作中,我们提出了针对视觉和语言分支的多模态提示学习(MaPLe),以改善视觉和语言表征之间的一致性。我们的设计促进了视觉语言提示之间的强耦合,以确保相互协同,并阻止学习独立的单模态解决方案。此外,我们在不同的早期阶段学习单独的提示,逐步对阶段特征关系建模,以允许丰富的上下文学习。我们评估了我们的方法在三个代表性任务上的有效性:对新类别的泛化、新的目标数据集和未见过的域转移。与最先进的CoCoOp方法相比,MaPLe在11个不同的图像识别数据集上取得了平均值,在新类别上取得了3.45%的绝对增益,在总谐波平均值上取得了2.72%的绝对增益。我们的代码和预训练模型可在https://github.com/muzairkhattak/multimodalprompt-learning上获得。
1. 介绍
基础视觉语言(V-L)模型,如CLIP(对比语言-图像预训练)[32]已经显示出对下游任务的出色泛化能力。这些模型经过训练,可以在web规模的数据上对齐语言和视觉模式,例如CLIP中的4亿文本图像对。由于自然语言提供了丰富的监督,这些模型可以对开放词汇的视觉概念进行推理。在推理过程中,使用手工设计的文本提示,例如,“的照片”作为文本编码器的查询。输出文本嵌入与来自图像编码器的视觉嵌入相匹配,以预测输出类。设计高质量的上下文提示已被证明可以提高CLIP和其他V-L模型的性能[17,42]。
尽管CLIP对新概念的泛化是有效的,但它的大规模和训练数据的稀缺性(例如,少样本设置)使得对下游任务的完整模型进行微调是不可行的。这种微调也可能忘记在大规模预训练阶段获得的有用知识,并可能对下游任务造成过拟合的风险。为了应对上述挑战,已有的研究提出了语言提示学习,以避免手动调整提示模板,并提供了一种机制来适应模型,同时保持原始权值不变[14,25,29,48,49]。受自然语言处理(NLP)的启发,这些方法仅探索CLIP中文本编码器的提示学习(图1:a),而与CLIP中同等重要的图像编码器一起进行适应选择仍然是文献中未探索的主题。
我们的动机源于CLIP的多模态特性,其中文本和图像编码器共存,并且都有助于正确对齐V-L模态。我们认为任何提示技术都应该完全适应模型,因此,仅为CLIP中的文本编码器学习提示不足以模拟图像编码器所需的适应。为此,我们着手实现提示方法的完整性,并提出了多模态提示学习(MaPLe),以充分微调文本和图像编码器表示,以便在下游任务中实现最佳对齐(图1:b)。我们在三个关键的代表性设置上进行了广泛的实验,包括基础到新颖的泛化,跨数据集评估和领域泛化,证明了MaPLe的强度。在base-to-novel泛化方面,我们提出的MaPLe在11个不同的图像识别数据集上优于现有的提示学习方法(图1:c),并且在novel类上实现了3.45%的绝对平均增益,在harmono -mean上实现了2.72%的绝对平均增益超过了最先进的Co-CoOp方法[48]。此外,MaPLe在跨数据集传输和领域泛化设置方面表现出良好的泛化能力和鲁棒性,与现有方法相比具有一致性的改进。由于其精简的架构设计,MaPLe在训练和推理过程中都表现出更高的效率,而没有太多开销,而Co-CoOp由于其图像实例条件化设计而缺乏效率。综上所述,本工作的主要贡献包括:
•我们建议在CLIP中进行多模态提示学习,以更好地调整其视觉语言表征。据我们所知,这是第一个用于微调CLIP的多模式提示方法。
•为了将文本和图像编码器中学习到的提示联系起来,我们提出了一个耦合函数来明确地对其语言对应的视觉提示进行条件设置。它作为两种模式之间的桥梁,允许梯度的相互传播,以促进协同作用。
•我们的多模态提示是在视觉和语言分支的多个转换块中学习的,以逐步学习两种模态的协同行为。这种深度提示策略允许独立地对上下文关系进行建模,从而为对齐视觉语言表示提供更大的灵活性。
图1所示。MaPLe与标准提示学习方法的比较。(a)现有方法采用单模态提示技术来微调CLIP表示,因为提示仅在CLIP的单个分支(语言或视觉)中学习。(b) MaPLe引入了分支感知的分层提示,同时适应语言和视觉分支,以提高泛化。(c) MaPLe在11种不同的图像识别数据集上超越了最先进的方法,用于新的类泛化任务。
2. 相关工作
视觉语言模型:
语言监督与自然图像的结合使用在计算机视觉社区中引起了极大的兴趣。与仅在图像监督下学习的模型相比,这些视觉语言(V-L)模型编码了丰富的多模态表示。最近,像CLIP[32]、ALIGN[15]、LiT[45]、FILIP[41]和Florence[43]这样的V-L模型在包括少样本和零样本视觉识别在内的广泛任务中表现出了出色的性能。这些模型使用来自网络的大量可用数据,以自监督的方式学习联合图像语言表示。例如,CLIP和ALIGN分别使用~ 400M和~ 1B图像-文本对来训练多模态网络。尽管这些预训练的V-L模型学习了广义表示,但有效地将它们适应下游任务仍然是一个具有挑战性的问题。通过使用定制的方法来适应V-L模型进行少量图像识别[9,19,46],目标检测[8,10,27,34,44,50]和分割[5,22,26,33],许多工作已经证明了在下游任务上有更好的性能。在这项工作中,我们提出了一种新的多模态提示学习技术,以有效地适应CLIP用于少样本和零样本视觉识别任务。
提示学习:
句子形式的指令,称为文本提示,通常给予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]通过学习提示来适应视频理解任务。[1]通过在视觉分支上提示,对CLIP进行视觉提示调整。我们注意到,现有的方法遵循独立的单模态解决方案,并在CLIP的语言或视觉分支中学习提示,从而部分适应CLIP。在本文中,我们探讨了一个重要的问题:鉴于CLIP的多模态性质,完整提示(即在语言和视觉分支中)是否更适合适应CLIP?我们的工作是第一个通过调查多模态提示学习的有效性来回答这个问题,以改善视觉和语言表征之间的一致性。
3. 方法
我们的方法涉及微调预训练的多模态CLIP,以便通过提示进行上下文优化,更好地泛化到下游任务。图2显示了我们提出的MaPLe(多模式提示学习)框架的整体架构。与之前的方法[48,49]不同,MaPLe提出了一种联合提示方法,其中上下文提示在视觉和语言分支中都被学习。具体而言,我们在语言分支中附加可学习的上下文标记,并通过耦合函数显式地将视觉提示条件置于语言提示上,以建立它们之间的交互。为了学习分层上下文表示,我们在两个分支中通过跨不同转换块的单独可学习上下文提示引入深度提示。在微调期间,只学习上下文提示及其耦合函数,而模型的其余部分被冻结。下面,我们首先概述预训练的CLIP架构,然后介绍我们提出的微调方法。
图2。概述我们提出的用于V-L模型中提示学习的MaPLe(多模态提示学习)框架。MaPLe调节视觉和语言分支,其中只有上下文提示被学习,而模型的其余部分被冻结。MaPLe通过V-L耦合函数F将视觉提示置于语言提示上,以诱导两种模式之间的相互协同作用。我们的框架使用深度上下文提示,其中跨多个转换器块学习单独的上下文提示。
3.1. 回顾Clip
我们在预先训练的视觉语言(VL)模型CLIP上构建我们的方法,CLIP由文本和视觉编码器组成。与现有提示方法[48,49]一致,我们使用基于视觉变压器(vision transformer, ViT)[6]的CLIP模型。CLIP编码图像和相应的文本描述,如下所述。
编码图像:
具有K个transformer层的图像编码器,将图像
分割成M个固定大小的patch,这些patch被投影到patch embedding
中。贴片嵌入
与可学习类(CLS)令牌ci一起输入到第(i +1)个transformer块
并通过K个变压器块依次处理,
为了得到最终的图像表示x,将最后一个变压器层的类令牌
通过ImageProj投影到公共V-L潜嵌入空间,
文本编码:
CLIP文本编码器通过对单词进行标记并将其投影到单词嵌入
来生成用于文本描述的特征表示。每一阶段,将输入到文本编码支路
的第
个变压器层,
通过TextProj将最后一个变压器块的最后一个令牌对应的文本嵌入投影到公共V-L潜在嵌入空间,从而获得最终的文本表示z。
零样本分类:
对于零样本分类,文本提示是手工制作的类标签(例如,“<类别>的照片”)具有C类。具有最高余弦相似分数(sim(·))的图像I对应的预测
用温度参数
计算,
3.2. MaPLe:多模式提示学习
图3。单模态提示方法Co-CoOp和MaPLe在3个不同图像识别数据集上的图像嵌入的t-SNE图。MaPLe在基类和新类中都表现出更好的可分离性。
为了有效地微调CLIP下游图像识别任务,我们探索了多模态提示调谐的潜力。我们认为,先前主要探索单模态方法的工作不太合适,因为它们不提供动态适应语言和视觉表示空间的灵活性。因此,为了实现提示的完整性,我们强调了多模态提示方法的重要性。在图3中,我们将MaPLe的图像嵌入与最近最先进的工作Co-CoOp进行了可视化和比较。注意CLIP, CoOp和Co-CoOp的图像嵌入将是相同的,因为它们不学习视觉分支中的提示。可视化结果表明,MaPLe的图像嵌入具有更强的可分离性,这表明除了学习语言提示外,学习视觉提示可以更好地适应CLIP。
除了多模态提示外,我们发现在更深的变压器层中学习提示以逐步建模阶段特征表示是必不可少的。为此,我们建议在视觉和语言分支的前J层(其中J < K)引入可学习token。这些多模态分层提示利用CLIP模型中嵌入的知识来有效地学习任务相关的上下文表示(见图4)。
图4。MaPLe提示深度(左)和提示长度(右)的消融。我们报告了所有数据集的持有验证集的平均结果。
3.2.1深度语言提示
为了学习语言上下文提示,我们在CLIP的语言分支中引入了b个可学习的标记(me:图中红色那部分)。输入嵌入现在遵循
,其中
对应于固定的输入token。在语言编码器
的每个转换块中进一步引入新的可学习标记,直至特定深度J。
这里表示串联操作。第J层转换后,后续层处理前一层提示,计算最终文本表示z;
当J = 1时,可学习令牌P仅应用于第一层变压器的输入,这种深度语言提示技术退化为CoOp[49]。
3.2.2深度视觉提示
与深度语言提示类似,我们在CLIP的视觉分支中引入了b个可学习的标记,与输入图像标记一起。在图像编码器(V)的更深的变压器层中进一步引入新的可学习标记,直至深度J。
我们的深度提示提供了在ViT体系结构中跨不同特性层次学习提示的灵活性。我们发现,与独立提示相比,跨阶段共享提示更好,因为由于连续的变压器块处理,特征更加相关。因此,与早期阶段相比,后期阶段不提供独立学习的补充提示。
3.2.3视觉语言提示耦合
我们认为,在快速调整中,必须采取多模态方法,同时适应CLIP的视觉和语言分支,以实现上下文优化的完整性。一种简单的方法是将深度视觉和语言提示结合起来,其中语言提示和视觉提示
都将在同一训练计划中学习。我们将这种设计命名为“独立V-L提示”。虽然这种方法满足提示的完整性要求,但由于视觉和语言分支在学习任务相关上下文提示时不相互作用,这种设计缺乏协同作用。
为此,我们提出了一种分支感知的多模态提示,通过在视觉和语言两种模态之间共享提示来协调CLIP的视觉和语言分支。语言提示符号被引入到语言分支直到第J个变压器块,类似于公式1-3所示的深度语言提示。为了保证V-L提示符之间的相互协同,视觉提示符是通过视觉到语言的投影来投影语言提示符P,我们称之为V-L耦合函数F(·),使得
。耦合函数是作为一个线性层实现的,它将
维输入映射到
。这作为两种模式之间的桥梁,从而鼓励梯度的相互传播。
与独立的V-L提示不同,对
的显式条件反射有助于在两个分支之间的共享嵌入空间中学习提示,从而提高相互协同作用。
me:这个非常简单,应该是个MLP。
4. 实验
4.1. 指标设置
从基本类到新颖类的泛化:
我们评估MaPLe的泛化性,并遵循零射击设置,其中数据集分为基本类和新颖类。
该模型仅在少量射击设置下对基本类进行训练,并对基本和新类别进行评估。
跨数据集评估:
为了验证我们的方法在跨数据集传输中的潜力,我们直接在其他数据集上评估我们的ImageNet训练模型。与Co-CoOp一致,我们的模型以少量的方式在所有1000个ImageNet类上进行训练。领域泛化:我们评估了我们的方法在分布外数据集上的鲁棒性。与交叉数据集评估类似,我们直接在其他四个包含不同类型域转移的ImageNet数据集上测试我们的ImageNet训练模型。
数据集:
为了从基本类到新类的泛化和跨数据集评估,我们遵循[48,49],并在11个图像分类数据集上评估了我们的方法的性能,这些数据集涵盖了广泛的识别任务。这包括两个通用对象数据集,ImageNet[4]和Caltech101 [7];5个细粒度数据集,OxfordPets [31], StanfordCars [20], Flowers102 [30], Food101 [2], fgvc - aircraft [28];场景识别数据集SUN397 [40];动作识别数据集UCF101 [36];纹理数据集DTD[3]和卫星图像数据集EuroSAT[11]。对于域概化,我们使用ImageNet作为源数据集,并使用ImageNetV2[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个epoch,批大小为4,学习率为0.0035。我们报告了基础类和新类的精度及其谐波平均值(HM)在3次运行中的平均值。我们用模板“a photo of a ”的预训练CLIP单词嵌入对第一层P0的语言提示进行初始化,而对于后续层,它们是从正态分布随机初始化的。对于ImageNet所有1000个类作为源模型训练MaPLe,提示深度J设置为3,模型训练了2个epoch,学习率为0.0026。深度语言提示、深度视觉提示和独立V-L提示的超参数详见附录a。所有数据集的超参数都是固定的。
4.2. 通过视觉语言提示提示CLIP
提升变化
我们首先评估了不同可能的提示设计选择的性能,作为我们提出的分支感知多模态提示MaPLe的消耗。这些变体包括浅MaPLe、深度语言提示、深度视觉提示和独立的V-L提示。在表1中,我们给出了11个图像识别数据集的平均结果。浅MaPLe(第1行)在泛化方面提供了对CoOp和Co-CoOp的持续改进。深度语言提示(第3行)比深度视觉提示(第2行)有所改善,表明在语言分支学习的提示能更好地适应CLIP。虽然单独结合上述两种方法(第4行)进一步提高了性能,但它很难从语言和视觉分支中获得综合效益。我们假设这是由于学习视觉和语言提示之间缺乏协同作用,因为它们在训练期间彼此不互动。同时,MaPLe与深度提示(第4行)结合了提示在两个分支中的好处,通过在语言提示上执行视觉提示的显式条件反射来强制交互。它提供了新类和基类准确度的改进,导致最佳HM为78.55%。我们探索了其他可能的设计选择,并在附录B中给出了消融。
4.3. 基类到新类的泛化
对未见类的泛化:
表3。基础到新概化与最新方法的比较。MaPLe学习多模态提示,并在11个识别数据集上展示了比现有方法更强的泛化结果。超过Co-CoOp的绝对收益用蓝色表示。
表3给出了MaPLe在11个识别数据集上从基到新泛化设置的性能。我们将其性能与CLIP zero-shot以及近期的提示学习作品CoOp[49]和Co-CoOp[48]进行了比较。在CLIP的情况下,我们使用专门为每个数据集设计的手工提示。与最先进的Co-CoOp相比,MaPLe在所有11个数据集上的基本类和新类性能都有所提高,只有Caltech101的基本类性能略有下降。与Co-CoOp相比,在分支感知多模态提示的协同作用下,MaPLe在所有11个数据集上都能更好地泛化新类别,总体增益从71.69%提高到75.14%。当考虑到基础类和新类时,MaPLe的绝对平均增益比Co-CoOp高2.72%。与CLIP相比,Co-CoOp仅在4/11数据集上有所提高,平均新分类准确率从74.22%降至71.69%。MaPLe是一个强大的竞争对手,它在6/11数据集上的新类别上提高了CLIP的准确性,平均增益从74.22%提高到75.14%。
基类上的泛化和性能:
CoCoOp通过对图像实例进行条件反射来解决CoOp中的泛化问题,并在新类别上显示出显着的收益。然而,在基类上,它只在3/11数据集上比CoOp有所提高,平均性能从82.69%下降到80.47%。同时,提示的完整性帮助MaPLe在6/11数据集的基类上提高了CoOp,将平均基类准确率保持在82.28%左右,此外还提高了对新类的泛化。
我们发现,使用Co-CoOp的训练策略可以大大提高vanilla CoOp的泛化性能(在新类中提高6.8%)。因此,我们将我们的方法与CoOpy进行比较,后者在CoCoOp设置中训练CoOp(详细信息请参阅附录A)。
与CoOp相比,香草CoOp模型似乎在基类上过拟合。与平均基精度为80.85%的CoOpy相比,MaPLe提高了1.43%,平均基精度为82.28%(表2)。
4.4. 跨数据集评价
4.5. 域泛化
4.6. 消融实验
5. 结论
由于大量可调参数和有限的下游数据集规模,大规模V-L模型(如CLIP[32])适应下游任务是一个具有挑战性的问题。快速学习是一种有效且可扩展的技术,可以将V-L模型定制为新的下游任务。为此,目前的提示学习方法要么只考虑视觉提示,要么只考虑语言提示。我们的工作表明,为视觉和语言分支执行提示以适当地使V-L模型适应下游任务是至关重要的。此外,我们提出了一种策略,通过在不同的转换阶段明确调节文本提示的视觉提示来确保视觉语言模式之间的协同作用。我们的方法提高了对新类别、跨数据集的转移和数据集与域转移。
参考资料
论文下载(2023 CVPR)
https://arxiv.org/abs/2210.03117