视觉语言模型在配备适当的文本提示时展现了令人印象深刻的零样本分类能力。以前的研究已经展示了在测试时进行提示调优的有效性; 然而,这些方法通常需要在推理时进行每张图像的提示适应,这会导致高昂的计算预算,并限制了可扩展性和实际部署。为了解决这个问题,作者提出了一种名为Self-TPT的新框架,该框架利用自监督学习来实现高效的测试时提示调优。 Self-TPT的关键方面是,它通过自监督学习实现高效的预定义类调整,从而避免了推理时每张图像的昂贵适应。Self-TPT首先使用源数据与自监督任务共同训练,然后仅在测试时使用自监督任务进行新类别的适应。具体而言,作者提出了对比学习提示(CPT)作为自监督的关键任务。CPT旨在通过对比学习最小化同类间的距离,同时增强不同类间的区分度。此外,实证证据表明CPT可以紧密结合分类任务的背传梯度,为其有效性提供合理的解释。 基于这个发现,作者进一步引入了一种梯度匹配损失,以明确增强梯度相似性。作者在三个具有挑战性的零样本基准上评估了Self-TPT。结果一致表明,Self-TPT不仅显著降低了推理成本,而且实现了最先进的性能,有效地平衡了效率和效果。
1 Introduction
开放集图像分类是计算机视觉领域一个基本且具有挑战性的任务。最近,视觉语言模型(VLMs)在这个领域展现出了强大的能力。一个突出的模型是CLIP (Radford等人,2021年),将图像和语言编码到统一的嵌入空间中,通过测量图像表示和文本类描述之间的相似度来进行分类。
输入类别的有效提示至关重要,但手动制作它们是耗时的。受到自然语言处理(NLP)的最新进展的启发,研究行人开始探索使用连续向量作为软提示,并使用少量标记数据(原始数据)对这些向量进行优化。这些方法可以自动获得特定任务所需的提示,从而提高性能。然而,源数据不太可能包括所有可能类,导致开放集性能不佳。
测试时适应性(TTA)最近在测试阶段适应模型到新的数据分布方面引起了关注。在这种背景下,TPT(Shu等人,2022年)被提出来在测试时调整新类别的提示,从而提高开放集泛化。如图1(a)所示,TPT首先从源数据中学习提示(阶段1)。然后,针对每个测试样本调整这些提示(阶段2),并使用定制的提示进行预测(阶段3)。尽管其有效性,但TPT在推理过程中需要大量的计算资源。对每个测试样本,它需要多次通过对模型进行前向和反向传播,并且需要保留完整的计算图,导致巨大的延迟和内存消耗。如图1(c)所示,TPT的运行速度约为7 FPS,消耗约为5 GB的图形内存。最近的基于TPT的方法PromptAlign(Samadh等人,2023年)的运行速度约为5 FPS,消耗约为11 GB的图形内存。这些巨大的计算需求使得将TPT扩展到更大的VLMs并为资源有限的平台(如边缘设备)部署具有挑战性。
开放集合图像分类是计算机视觉领域一个基本且具有挑战性的任务。最近,视觉语言模型(VLMs)在图像分类领域展现了强大的能力。一个突出的模型是CLIP,它将图像和语言编码到统一的嵌入空间中,测量图像表示和文本类描述之间的相似度来分类。
输入类别的有效提示至关重要,但是手动制作它们耗时较长。受到自然语言处理(NLP)的最新进展的启发,研究行人开始探索使用连续向量作为软提示,并使用少量标记数据对它们进行优化。这些方法可以自动获得特定任务所需的提示,从而提高性能。然而,源数据通常不会包括所有可能类,导致开放集性能不佳。
测试时适应性(TTA)在测试阶段适应模型到新的数据分布方面最近引起关注。在这种背景下,TPT被提出,它可以在测试时调整新类别的提示,从而提高开放集泛化。如图1(a)所示,TPT首先从源数据中学习提示(阶段1)。然后,针对每个测试样本调整这些提示(阶段2),并使用定制的提示进行预测(阶段3)。尽管其有效性,但TPT在推理过程中需要大量的计算资源。对每个测试样本,它需要多次通过对模型进行前向和反向传播,并且需要保留完整的计算图,导致巨大的延迟和内存消耗。如图1(c)所示,TPT的运行速度约为7 FPS,消耗约为5 GB的图形内存。最近的基于TPT的方法PromptAlign(Samadh等人,2023年)的运行速度约为5 FPS,消耗约为11 GB的图形内存。这些巨大的计算需求使
作者能否利用TTA的一般化能力同时最小化计算开销?作者观察到,在测试期间,图像以顺序方式处理,候选类名的列表已经确定。因此,作者提出了一种高效的自适应测试提示调优框架Self-TPT,它使用文本导向的自监督学习(SSL)来实现。如图1(b)所示,自适应TPT的调整过程(阶段2)仅针对预定义的类名,允许不需要提示更新(阶段3)直接预测任何图像,显著降低了推理期间的计算负载。
对于SSL组件,作者遵循TTA(Chen等人,2022b)的良好做法,采用对比学习。有效的分类要求同一类别的嵌入相对较近地对齐,而不同类别的嵌入保持明显的差异以确保类间区分度。为了实现这一点,作者引入了对比提示调优(CPT)。在CPT中,作者作为数据增强,在提示序列中变化类标记的插入位置以创建正配对。正负配对分别通过将某类与其他所有类别进行对比来构建,从而明确强调类嵌入之间的差异。 initially,作者将CPT与监督学习(阶段1)相结合,并随后仅依赖CPT进行新的类适应(阶段2)。
作者的实证分析发现,CPT和分类任务在11个数据集上表现出一致的积极梯度相关性。这种相关性表明,这两个任务的方向相同,使得CPT可以在适应阶段有效充当监督学习的代理。由此,作者提出了一种专门设计的梯度匹配(GM)损失,以提高这种积极相关性。GM损失涉及来自监督学习和CPT损失的梯度,并旨在最大限度地减小它们之间的余弦相似度。
标题1:自适应提示对齐(Self-TPT)与传统提示对齐(TPT)对比图。(a) TPT 首先从源数据中学习提示(阶段1),然后将其适应到单个样本并进行预测(阶段2和3)。(b) 自适应 TPT 利用文本导向的自监督学习(SSL)进行联合训练(阶段1)和新类适应(阶段2),随后对每个图像进行直接预测(阶段3)。(c) 作者提出了每个方法在应用于 CLIP-B/16 时的帧率(FPS)和图形内存占用情况。纵轴表示跨数据集的平均准确性。
作者在三个具有挑战性的基准测试上评估了 Self-TPT 的性能:跨数据集泛化、基础到新泛化和域泛化。作者的研究结果表明,自适应 TPT 始终高于先前最先进的状态,改善了0.93%,1.59%和1.82%在这些基准测试上的表现,分别改善了 0.93%,1.59% 和 1.82%。值得注意的是,自适应 TPT 显著提高了效率,如图1(c)所示,推理速度提高了 25 倍,内存占用降低了 30 倍,与 PromptAlign 相比。此外,作者的测试还验证了自适应 TPT 数据高效,可扩展到各种模型 Backbone 、规模和 VLMs,并跨领域良好泛化。
2 相关研究
视觉语言模型。计算机视觉和自然语言处理领域的最新进展极大地激发了视觉语言模型(VLMs)(Radford等人,2021年;Jia等人,2021年;Li等人,2022年;Zhai等人,2022年;Alayrac等人,2022年;Fang等人,2023年)。这些模型通过运用大规模的图像文本对来开发跨不同模态的强健表示,因此在各种多模态任务上表现出优异的性能。值得注意的是,CLIP(Radford等人,2021年)在图像分类(Zhou等人,2022年;Zhu等人,2024a)、视频识别、目标检测(Du等人,2022年;Minder等人,2022年)等领域展示了卓越的开放词汇能力。成功部署VLMs的关键在于构建有效的文本提示。在本论文中,作者介绍了一种新框架,旨在优化测试时的提示自适应,以在更好的理解分类方面取得更好的效果。
提示学习。最近在自然语言处理方面的进展激发了像CoCoOp(Zhou等人,2022a)这样的方法,它们将VLMs的提示视为连续的向量。然而,CoCoOp(Zhou等人,2022a)揭示了一个重大的缺陷:这些学习的提示往往过于适应已见的类,从而在新类别上的性能受到削弱。为了缓解这一问题,最近的研究引入了其他可学习的组成部分(Zhu等人,2024年;Zhou等人,2022年;Khattak等人,2023年;Zang等人,2022年;Wang等人,2023年;Singha等人,2023年)或专门的策略,以增强提示的泛化能力。此外,像总结和正则化等技术也被用来将任务特定的知识与手工制作的先验知识相结合。尽管取得了进步,但仍难以实现能够泛化到所有可能类的提示。因此,本文将重点放在测试时自适应策略上,动态调整提示在测试过程中,以解决开放世界应用中的挑战。
测试时自适应 旨在解决在训练阶段和测试阶段之间数据分布的转移问题,通过动态调整模型以适应测试样本。各种方法已经出现,包括熵最小化,批量标准化统计激活,伪标记,特征对齐(Liu等人,2021年;Wang等人,2023b;Wang和Aitchison,2022年),以及测试时训练。最近,对于VLMs的测试时提示调优(TPT)受到了关注(Shu等人,2022年)。TPT通过降低预测熵优化提示,并使用图像增强创建预测多样性。技术像DiffTPT 采用Stable Diffusion(Rombach等人,2022年)来增强图像多样性的同时 boost,而SwapPrompt(Ma等人,2023年)和PromptAlign(Samadh等人,2023年)分别关注于最大化预测一致性和对齐标记统计。尽管它们的有效性,但这些方法往往在推理时涉及较高的计算成本,对于实际部署带来了挑战。本研究介绍了一个更高效的测试时提示调优框架,旨在在实用性与有效性之间寻求平衡。
3 Method
Preliminaries
对比语言图像预训练(CLIP)(Radford等人,2021年)使用图像编码器和文本编码器将图像和一组类描述转换为联合视觉语言嵌入空间。其中,表示候选类别的数量。这个嵌入空间确保具有相似概念的输入紧密对齐。因此,分类问题可以形式化为图像-文本匹配问题。具体而言,CLIP计算了编码图像特征和编码文本特征。第个类的概率计算如下:
,其中是一个温度参数。
提示学习(周等人,2022年;姚等人,2023年;朱等人,2022年)旨在优化软提示来替代手工设计的提示(例如,"[CLASS]的一张照片"):
,其中是第个类的词向量,是CLIP中使用的词向量的维度。的参数在所有类别上共享。在训练阶段,CLIP中的图像和文本编码器保持冻结。
测试时的提示调优(TPT)(舒等人,2022年;冯等人,2023年;沙等人,2023年)旨在动态调整提示以适应无标签的测试数据,其中分别表示目标图像和候选类别名称。TPT涉及三个阶段:首先,在源数据上训练提示。然后,使用第一阶段的提示,TPT采用无监督损失,如熵最小化来调整这些提示以适应每个特定测试样本:
。
随后,使用这些定制的提示对每个样本进行预测。尽管这些方法在推理阶段非常有效,但它们在推理阶段的计算非常密集。每个测试样本需要多次模型传递和保留整个计算图,导致延迟增加和大量内存需求。这些限制使部署具有挑战性,特别是在资源受限的环境如边缘设备,并阻碍了将其扩展到更大的VLMs。
Pipeline of Self-TPT
为了在推理时利用测试时适应能力,同时尽量减少计算时间,本文提出了基于自监督学习的有效测试时提示调优方法Self-TPT。给定源数据集 和目标数据集 以及可能不重叠的类集,作者的目标是让VLMs在测试时对新类进行很好地分类图像。Self-TPT从源数据集中获取任务特定的知识,并在测试时适应这些学习的提示,同时不直接评估来自的具体图像。Self-TPT的整体流程如图2所示,包括三个阶段:提示学习、测试时适应和直接预测。
在第一阶段,作者同时训练自监督任务和分类任务:
其中 是一个 SSL 投影头, 表示其参数。在第二阶段,给定 的类集 ,作者使用文本导向的 SSL 任务进行适应,解耦 test-time adaptation(类理解)与具体的测试样本():
通过 Eq. 6 进行优化的提示直接应用于预测 中的样本,不需要进一步调整,从而简化了 test-time adaptation,将其转变为预处理步骤,并在推理时显著减少了计算成本。在3.3节,作者将详细介绍 Self-TPT 框架中使用的具体 SSL 任务,并在3.4节中实证演示如何使用作者的 SSL 任务提高分类性能。
Contrastive Prompt Tuning
在自监督Pretraining(TPT)框架中,核心设计是其自监督组件。正如Sun等人(2020)所指出的,辅助任务(在这个情况下,是排序学习任务)应与主要任务(在这个情况下,是分类任务)具有强烈相关性以保持有效性。在自监督学习领域,对比学习方法(Chen等人,2020;He等人,2020)已经获得了令人瞩目的分类结果,即使通过冷冻视觉表示进行线性检测。这证明了对比任务和分类任务之间存在积极关联,从而促使作者在顺序学习任务设计中优先考虑对比学习。
为了构建对比任务,作者遵循分类任务的本质,即同一类的嵌入应紧密对齐,不同类的嵌入应保持独特以确保类间可区分性。为此,作者引入了一个名为对比学习提示调优(CPT)的新任务。这个任务在提示序列中改变类标记["[CLS]"]的插入点来生成正样本。如图2(a)所示,CPT策略地将["[CLS]"]标记放在可学习提示的开始、结束和中间位置:
.
此外,Zhu等人(2022)提出了一种简单的手工制作提示(例如,“一张...的照片”),它包含了预训练期间习得的一般知识,可以减轻过拟合。基于这个洞察,作者将这类提示纳入CPT以调节对比学习过程:
等式7和等式8为每个类别建立了四种不同的视角。用i表示任意类别的任何具体视角的索引。作者定义其余三种视角的索引集合为$mathcal{P}_{(i)}equiv{ibmod 4C},即i除以4C的余数。然后,作者定义CPT损失函数:
其中,表示经过投影的文本特征,计算方式为,是一个缩放温度参数,默认为0.07。
Gradient Matching
一个问题适时提出了:CPT在适应性调整过程中如何进行分类?为了找出潜在的原因,作者进行了一项实证分析,通过测量分类损失和CPT损失之间的梯度余弦相似度,该相似度表示为:
其中表示每个损失的梯度。是通过在数据集中对所有图像进行平均计算,以保证统计显著性得到的。得到的相似度分数,如图2(b)中的蓝色三角形所示,在所检查的11个数据集中有10个数据呈现出正相关。这些梯度的方向表明,在测试时间的适应性调整阶段,即使没有地面真标签,CPT也可以有效地与分类任务的优化途径对齐。
受到这一发现的启发,作者提出了一种基于梯度匹配(GM)的损失来显式地提高两个任务之间的梯度相似度。在训练过程中,作者注意到对小的批量大小具有一定的敏感性。为了获得分类任务的稳定优化方向,作者采用了指数移动平均(EMA)(Heckert和Filliben,2003)来整合过去和当前的梯度趋势:
在这里,是衰减率,表示在步骤的交叉熵损失的梯度,表示当前的步骤索引。GM损失随后计算为:
使用GM损失,如图2(b)中的橙色点所示,在11个数据集中的8个数据集中观察到了梯度相似度的显着增加,表明两个任务之间的相关性得到了加强。
4 Experiments
Experimental Setup
表1:比较推理计算成本。 “FPS” 表示每秒帧数。“Self-TPT-v” 已在实施细节中引入。
数据集。 作者使用11个数据集,涵盖一系列识别任务:ImageNet(Deng等人,2009年)和Caltech101(Fei-Fei等人,2004年)用于通用物体识别,OxfordPets(Parkhi等人,2012年),StanfordCars(Krause等人,2013年),OxfordFlowers(Nilsback和Zisserman,2008年),Food101(Bossard等人,2014年)和FGVCircraft(Maji等人,2013年)用于细粒度分类,SUN397(Xiao等人,2010年)用于场景识别,DTD(Cimpoi等人,2014年)用于纹理分类,EuroSAT(Helber等人,2019年)用于卫星识别,以及UCF101(Soomro等人,2012年)用于动作识别。此外,还有四个ImageNet变体数据集:ImageNetV2(Recht等人,2019年),ImageNetSketch(Wang等人,2019年),ImageNet-A(Hendrycks等人,2021年)和ImageNetR(Hendrycks等人,2021a)。
评估设置。 作者使用三个基准进行评估,并报告top-1准确性:
(i)跨数据扩展:ImageNet作为源数据集,其余10个数据集作为目标数据集。
(ii)基础到新扩展:每个数据集分为相等的两个子集,基础类和新类。基础子集作为源数据集,新子集作为评估目标数据集。
(iii)域扩展:ImageNet作为源数据集,4个变体数据集作为目标数据集。
实现细节。 Self-TPT基于Coop(Zhou等人,2022b),在CLIP-B/16上进行实现。所有结果平均通过三个种子。作者将提示数量M设置为4。在阶段1中,作者使用SGD作为优化器,学习率为0.002,批处理量为4。提示在源数据集上进行训练,采用16-shot方式。对于基础到新设置,提示进行10次迭代。对于跨数据集和域扩展设置,提示进行5次迭代。在阶段2中,作者更新提示10步,采用SGD作为优化器,学习率调整为0.1。现有TPT方法使用输入图像及其63个增强视作为输入。为了确保公平比较,作者还包含63个增强图像并执行输出集成。作者称此特定方法为Self-TPT-v。
Comparison with the State-of-the-Art Methods
表2:跨数据集泛化性能。 16-shot ImageNet被用作源数据集。作者在10个目标数据集上报告了各个方法的最佳性能(%)和第二最佳性能(井号下划线)。
作者将自适应提示学习方法与三种方法进行了比较:**i)在源数据集上优化提示的提示学习方法,ii)在测试时调整提示的提示学习方法,iii)**利用LLM(如GPT-3)来产生类描述的方法。 表1展示了自回归自回归(Self-TPT)和其他基于TPT的方法之间的推理成本比较。Self-TPT在CLIP-B/16上的推理速度比PromptAlign快25倍,比DiffTP快65倍,同时还显著减少了图形内存使用。尽管使用了额外的63个增强图像,但与PromptAlign相比,Self-TPT-v的五个速度优势仍然保持不变,并降低了15倍相对于PromptAlign的内存使用。考虑到基础模型的快速扩展,Self-TPT的高效性突显了其在大规模VLMs中的可扩展稳定性潜力。
表2比较了自回归自回归(Self-TPT)与现有最先进方法的跨数据集性能。作者的方法在10个数据集中的8个上超过了最先进方法,平均相对于PromptAlign提高了0.93%。请注意,仅仅结合提示学习和测试时间适应并不总是产生最佳结果。例如,MaPLe TPT相对于MaPLe只取得了0.2%的轻微改进,这表明TPT可能不会持续产生显著的性能改进。相反,尽管没有暴露于特定测试图像,自回归自回归(Self-TPT)仍然展示了优越的性能,突显了作者提出的框架的有效性。
从基础到新的泛化。在基于基础的新设置(表3),作者的方法在11个数据集上的表现优于其他方法,平均相对于PromptSRC提高了1.37%,比之前的最佳方法快了0.71%。值得注意的是,CoOp TPT相对于CoOp仅记录了0.71%的改进,而MaPLe TPT则出现了0.19%的下降,这再次突显了TPT可能的不稳定性能提升。此外,基于LLM的方法在需要高度理解的场景下往往表现不足,例如等。
,ucf101,这需要复杂的人类行为理解。
领域泛化(Domain generalization) 作者在表4中展示了Self-TPT在四种带有域转移的ImageNet变体数据集上的结果。值得注意的是,Self-TPT在这三个数据集上达到了新的状态最先进水平,这显示了其对域转移的鲁棒性和适应性以及在不同图像分布下的变化。尽管Self-TPT在ImageNet-V2上的表现被Coop TPT和Coop DiffTPT超过,但作者推测这是因为ImageNet-V2与源数据集ImageNet的数据分布非常接近。Coop众所周知在源数据上过拟合。
Ablation Study
在开发基于Coop的Self-TPT时,作者取得了三个关键的进展。首先,在源提示学习阶段整合了CPT,目的是培养更强大和通用的特征表示。其次,在测试时适应阶段应用CPT,在预测阶段改善对新类别的理解。最后,作者在源提示学习阶段引入了GM损失,以明确加强CPT和分类任务之间的梯度相关性。每个组件的有效性在表4(a)中进行了定量评估。结果表明,Self-TPT的每个组件都对整体性能的提升做出了贡献。
在CPT的不同视角研究中,如图2(a)所示,Self-TPT为每个类别使用四种不同的视角进行对比学习。在表4(b)中,作者通过逐个去除一个视角进行ablation study,结果表明性能一致下降。当两个视角被移除时,降解变得更为明显。这些发现表明,融合多个视角可以增强对比提示调优任务的有效性。
在梯度匹配(GM)损失的研究中,如图4(c)所示,作者替换了余弦相似性损失为均方误差(MSE)。作者观察到效果下降。这表明,为了强制执行两个不同任务之间的梯度精确数值相等可能是不切实际的。另外,作者评估了使用指数滑动平均(EMA)的影响,并观察到一致的改进,这强调了维持GM损失的稳健梯度方向的重要性。
在源数据数量和质量的研究中,作者认为源数据对于提示学习和基于Self-TPT的方法至关重要。在表7中,作者研究了减少数据量对模型性能的影响。该分析涵盖了默认数据量的25%,50%,75%和100%。作者发现即使使用有限的源数据,Self-TPT也可以保持强大的性能,突显了其在数据利用率方面的效率。此外,作者进行了一个关键问题的研究:拥有更多的类别还是每个类别更多的实例更有利?这个问题涉及到每个类别中的射击数量和类别数量的变化。四种方法的结果如图4所示。结果表明,类别数量减少会导致显著的性能下降,强调了在为实际应用收集数据时应优先考虑类别的多样性。
在模型多变的 studies中,在表5(a)中,作者将Self-TPT适应到各种 Backbone 架构,包括ResNet(He等人,在2016年)和ViT(Dosovitskiy等人,在2020年),横跨不同尺度。值得注意的是,Self-TPT在所有测试 Backbone 上都实现了性能改进,证明了其广泛适用性和强大的有效性。此外,作者将Self-TPT和其他几种具有竞争力的方法扩展应用到另一个VLM,EVA-CLIP(Sun等人,2023年):如表5(b)所示,Self-TPT在竞争方法上表现出明显的优势,进一步证实了其有效性和泛化能力。
5 Conclusion
在本文中,作者提出了Self-TPT,这是一个用于测试时间提示调优的新颖框架。通过将文本导向的自监督学习纳入新的类适应性中,Self-TPT解决了我方使用现有TPT基础方法观察到的推理效率问题。
作者将自监督的对比提示调优(CPT)任务引入。
实验结果证明了CPT与分类任务具有正的梯度相关性,解释了其有效性。
基于这些发现,作者提出了一种梯度匹配损失,以进一步增强这种相关性。在三个基准测试中进行了广泛测试,证实了作者的方法的有效性和效率。
参考
[1].Efficient Test-Time Prompt Tuning.