《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.基准设定
- 从基本类到新类的泛化:
- 跨数据集评价:
- 领域概括:
- 数据集:
- 实现细节:
- 4.2.用视觉语言提示CLIP
- 4.3.“基础到新”的泛化
- 4.4.跨数据集评价
- 4.5.域泛化
- 4.6.消融实验
- 5.结论
题目:《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。超参数在所有数据集上都是固定的。
4.2.用视觉语言提示CLIP
4.2.通过视觉语言提示识别变体识别CLIP:我们首先评估不同可能的提示设计选择的性能,作为对我们提出的分支感知多模态提示MaPLe的消融。这些变体包括浅层Maple、深层语言提示、深层视觉提示和独立的V-L提示。在表1中,我们给出了11个图像识别数据集的平均结果。浅Maple(第1行)在泛化方面提供了对CoOp和Co-CoOp的持续改进。深度语言提示(行3)示出了相对于深度视觉提示(行2)的改进,表明在语言分支学习的提示提供了CLIP的更好适应。虽然单独结合上述两种方法(第4行)进一步提高了性能,但它很难从语言和视觉分支中获得综合优势。我们假设这是由于学习的视觉和语言提示之间缺乏协同作用,因为它们在训练过程中不会相互作用。与此同时,与深度提示(第4行)相结合的Maple结合了两个分支中提示的好处,通过对语言提示的视觉提示的明确条件反射来加强交互。它提供了改进的新的和基本类的准确性,导致最好的HM的78.55%。我们探索了其他可能的设计选择,并在附录B中介绍了消融。
不同提示设计的MaPLe在基础到小说概括中的比较。结果是11个数据集的平均值。HM是指调和平均数。
4.3.“基础到新”的泛化
**对未知类别的泛化:**表3显示了MaPLe在11个识别数据集上从基础到新的泛化设置中的性能。我们将其性能与CLIP zero-shot以及最近的即时学习作品(包括CoOp [49]和Co-CoOp [48])进行了比较。在CLIP的情况下,我们使用专门为每个数据集设计的手工提示。
与最先进的Co-CoOp相比,Maple在所有11个数据集上的基础和新类别上都显示出改进的性能,除了Caltech 101的基础类别性能的边际降低。通过分支感知多模态提示的相互协同,与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的训练策略可用于大幅提高普通CoOp的泛化性能(在新类中提高6.8%)。因此,我们将我们的方法与CoOp†进行比较,后者在CoCoOp设置中训练CoOp(更多详细信息请参见附录A)。
与CoOp相比,vanilla CoOp模型似乎在基类上过拟合。与CoOp†相比,其平均碱基准确度为80.85%,MaPLe显示出1.43%的改进,平均碱基准确度为82.28%(表2)。
4.4.跨数据集评价
我们通过在所有1000个ImageNet类上学习多模态提示,然后直接在剩余的10个数据集上传输,来测试Maple的跨数据集泛化能力。表4显示了MaPLe、CoOp和Co-CoOp之间的性能比较。在ImageNet源数据集上,MaPLe实现了与竞争方法相当的性能,但通过在9/10数据集中超过CoOp和在8/10数据集中超过Co-CoOp,表现出更强的泛化性能。总体而言,Maple显示出具有竞争力的性能,导致最高的平均准确率为66.30%。这表明在Maple中使用分支感知的V-L提示有助于更好的泛化。
Maple与现有跨数据集评估方法的比较。总体而言,Maple实现了具有竞争力的性能,提供了最高的平均精度,表明更好的泛化能力。
4.5.域泛化
我们表明,Maple推广有利的out-ofdistribution数据集相比,CoOp和Co-CoOp。我们评估了ImageNet训练模型到各种域外数据集的直接可移植性,并观察到它与所有现有方法相比都有持续改进,如表5所示。这表明利用多模态分支感知提示有助于MaPLe增强CLIP等V-L模型的泛化和鲁棒性。
Maple与现有方法在领域泛化设置中的比较。Maple在所有目标数据集上显示出持续的改进。
4.6.消融实验
**提示深度:**在图4(左)中,我们分别说明了Maple和消融的提示深度J对语言和视觉分支深度的影响。一般来说,性能随着提示深度的增加而提高。我们注意到,当随机初始化提示插入到模型特征空间已经成熟的冻结模型的更深层时,性能敏感度会增加。类似的趋势也被报道[16]。由于早期的方法利用浅层语言提示(J = 1),我们比较我们的方法与深层语言提示。总体而言,Maple实现了比深度语言提示更好的性能,并在深度为9时实现了最大性能。
**提示长度:**图4(右)显示了提示长度对Maple的影响。随着提示长度的增加,基类的性能通常会保持不变,而新类的准确性会降低。这表明过度拟合,这本质上损害了对新类的泛化。
在MaPLe中按提示深度(左侧)和提示长度(右侧)进行消融。我们报告所有数据集的保留验证集的平均结果。
**多模式识别的有效性:**图5显示了对所选数据集的每类准确度的分析,以增加域偏移的顺序。它表明,与Co-CoOp相比,Maple的性能增益在不同的数据集上有所不同。对于与CLIP的预训练数据集相比具有较大分布变化的数据集,以及通常罕见且不太通用的视觉概念,Maple提供了比Co-CoOp显著的收益。进一步详细分析见附录C。
Maple表现出比Co-CoOp更高性能的类的百分比,随着数据集域从通用类别转移的增加而增加(→)。
**计算复杂度:**表6显示了与其他方法相比,Maple的计算复杂度。虽然Maple使用多模式提示,但其总体FLOPS(浮点运算)仅比CoOp和Co-CoOp高出0.1%。独立的V-L提示也提供了可比较的FLOP计数。就推理速度而言,Co-CoOp明显较慢,并且随着批量大小的增加,FPS(每秒帧数)保持不变。相比之下,Maple没有这样的开销,并提供更好的推理和训练速度。此外,与Co-CoOp相比,Maple提供了更好的收敛性,因为它只需要一半的训练时期(5 vs 10个时期)。Maple在CLIP的基础上增加了约2.85%的训练参数。为了研究性能增益是否主要归因于更多参数,我们使用MaPLe†进行实验,它对所有层提示使用统一的V-L耦合函数。参数比MaPLe少9倍的MaPLe也比现有方法有所改进。我们还在附录D中通过比较Maple与更重的CoCoOp进行了消融。
不同提示方法的计算复杂度比较。MaPLe†是一个MaPLe版本,它对所有层都使用了一个通用的V-L耦合函数。
5.结论
大规模V-L模型的调整,例如,CLIP [32]到下游任务是一个具有挑战性的问题,因为大量的可调参数和下游数据集的大小有限。提示学习是一种有效且可扩展的技术,可以将V-L模型定制为新的下游任务。为此,目前的提示学习方法要么只考虑视觉提示,要么只考虑语言提示。我们的工作表明,对视觉和语言分支进行提示,以适当地调整V-L模型以适应下游任务至关重要。此外,我们提出了一个策略,以确保视觉语言模态之间的协同作用,明确条件的视觉提示文本提示跨不同的Transformer阶段。我们的方法提高了对新类别,跨数据集传输和数据集域转移的泛化能力。
相关文章:

《MaPLe: Multi-modal Prompt Learning》中文校对版
系列论文研读目录 文章目录 系列论文研读目录题目:《Maple:多模态提示学习》摘要1.简介2.相关工作视觉语言模型:提示学习:视觉语言模型中的提示学习: 3.方法3.1.回看CLIP编码图像:编码文本:Zero…...

MFC修改控件ID的详细说明
控件的ID可以在该对话框的.rc中修改 首先需要开启资源视图 然后在资源视图中打开该对话框 选中某个控件,就可以在属性面板中修改ID了 在此处修改ID后,对应Resource.h中也会发生变化 若在.rc中创建了一个控件时,Resource.h中会生成一个对应…...

MySQL高可用配置及故障切换
目录 引言 一、MHA简介 1.1 什么是MHA(MasterHigh Availability) 1.2 MHA的组成 1.3 MHA的特点 1.4 MHA工作原理 二、搭建MySQL MHA 2.1 实验思路 2.2 实验环境 1、关闭防火墙和安全增强系统 2、修改三台服务器节点的主机名 2.3 实验搭建 1、…...

AI模型一体机:智能办公的未来
引言 随着人工智能技术的飞速发展,我们正步入一个全新的智能办公时代。AI模型一体机,作为这个时代的先锋产品,正以其强大的功能和便捷的操作,改变着我们的工作方式。它不仅仅是一个硬件设备,更是一个集成了最新人工智…...

jina的Embedding Reranker
插入向量库是否需要使用 Jina 的 Embedding 和 Reranker 取决于你希望如何处理和优化语义搜索的质量。以下是使用 Jina Embedding 和 Reranker 的原因,以及它们如何作用于插入向量库的流程。 1. Jina 的 Embedding 作用 Jina 是一个流行的开源框架,用于…...

Prompt Engineer: 使用Thought来提升LLM的回复能力
这是一个小的实验, 用来测试思维导图这种表达形式对于LLM在答案组织上是否会有帮助 结构化Prompt 根据目前的测试来看, 结构化Ptompt在实践中有着很好的可读性以及可维护性. (通常来说我使用Markdown格式来作为输入的格式, 虽然在内容完整性上存在问题, 但是我是不喜欢写丑陋…...
tekton构建标准ci(clone repo, test, build push img)
场景介绍 我们在上一篇文章中构建了一个最简单的ci,接下来我们对我们的github的项目构建一个较标准的ci。 Tekton简介,安装和构建最简单ci/cd-CSDN博客文章浏览阅读239次,点赞2次,收藏2次。本文介绍了tekton是什么,如…...

【电力系统】复杂网络分析在电力系统规范中的应用
摘要 复杂网络分析在电力系统中的应用为理解和优化电力系统的运行提供了新的视角。本文探讨了复杂网络理论在电力系统规范中的应用,通过分析电力系统的拓扑结构、节点重要性和脆弱性,提出了优化电力系统设计和运行的新策略。仿真结果表明,复…...

CDGA|推动数据治理与传统产业深度融合:策略与实践路径
在数字化浪潮席卷全球的今天,数据已成为推动经济社会发展的关键生产要素。传统产业,作为国民经济的基石,正面临着前所未有的转型挑战与机遇。如何让数据治理这一现代管理理念与实践方法深度融入传统产业,促进其转型升级与高质量发…...

【FastAPI】离线使用Swagger UI 或 国内网络如何快速加载Swagger UI
在FastAPI中,默认情况下,当应用启动时,Swagger UI 会通过在线加载 Swagger UI 的静态资源。这意味着如果应用运行在没有互联网连接的环境中,默认的 Swagger 文档页面将无法加载。 为了在离线环境中使用 Swagger UI,你…...

Linux:从入门到放弃
目录 一、基础巩固Linux:常用命令 二、实战应用Linux:CentOS7基础配置Linux:CentOS7安装MySQL 三、常见问题Linux:yum源失效问题 一、基础巩固 Linux:常用命令 二、实战应用 Linux:CentOS7基础配置 Lin…...

SVM 监督学习
一、分类问题 利用一条直线分类存在很多问题 二、SVM 支持向量机 其核心思想是通过在特征空间中找到一个最优的超平面来进行分类,并且间隔最大。分类面尽可能远离样本点,宽度越大越好。 适用于中小型复杂数据集的分类。 三、硬间隔和软间隔 硬&#x…...

奖励模型的训练
文章目录 训练方法训练策略代码实践由于 RLHF 的训练过程中需要依赖大量的人类偏好数据进行学习,因此很难在训练过程中要求人类标注者实时提供偏好反馈。为此,我们需要训练一个模型来替代人类在 RLHF 训练过程中实时提供反馈,这个模型被称为奖励模型。在训练开始前,我们需要…...

Ubuntu22.04之禁止内核自动更新(二百六十八)
简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…...

kaggle题-房价预测(Pytorch),手把手教,全文代码解释
房价预测 本题是经典的通过表格数据去预测最终值,主要分为几大步骤: 一.将数据集修改为可以代入到网络模型的数字,因为给的数据大部分都是str类型,是无法直接放到网络模型里跑的,例如下图,很多标签值为str类…...

PulseSensor心率传感器详解(STM32)
目录 一、介绍 二、传感器原理 1.接线图 2.引脚描述 3.工作原理:光电容积法原理 4.工作原理:心率采样数据处理算法 三、程序设计 main.c文件 adcx.h文件 adc.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 PulseSensor传感器是一种基…...

NISP 一级 | 3.1 网络基础知识
关注这个证书的其他相关笔记:NISP 一级 —— 考证笔记合集-CSDN博客 0x01:Internet 和 TCP/IP 协议 因特网(Internet)通过 TCP/IP 协议将遍布在全世界各地的计算机互联,从而形成超级计算机网络。因特网为用户提供了非…...

模拟网络丢包常用方法以及工具
文章目录 背景常用方法代码实现使用方法测试代码 使用网络流量控制工具 常用工具Clumsy 背景 在软件开发过程中,经常需要模拟不同的网络环境来测试应用在不同条件下的表现。 这些模拟可以采用多种方式进行,包括在代码中实现随机丢包、随机延时、乱序&am…...
ABC 370 E - Avoid K Partition
原题链接:E - Avoid K Partition 题意:给长度为n的数组,将数组划分成任意份,但是每一份的总和都不能是k,问有多少种分割方法。 思路:dp,f[i],代表前i个元素满足题意的划分的总和&a…...

C++: set与map容器的介绍与使用
本文索引 前言1. 二叉搜索树1.1 概念1.2 二叉搜索树操作1.2.1 查找与插入1.2.2 删除1.2.3 二叉搜索树实现代码 2. 树形结构的关联式容器2.1 set的介绍与使用2.1.1 set的构造函数2.1.2 set的迭代器2.1.3 set的容量2.1.4 set的修改操作 2.2 map的介绍与使用2.2.1 map的构造函数2.…...

单片机-STM32 看门狗(八)
目录 一、看门狗概念 1、定义: 二、单片机中的看门狗 1、功能描述: 2、看门狗设置部分 预分频寄存器(IWDG_PR) 3、窗口看门狗 特性: 4、看门狗配置: 一、看门狗概念 看门狗--定时器(不属于基本定时器、通用定…...

iOS 18.1将上线新功能,可惜这波国内的小伙伴无缘了
在科技巨头苹果持续推动其生态系统全球化的进程中,最新的iOS 18.1、iPadOS 18.1及macOS 15.1开发者测试版发布,不仅为开发者们带来了新功能的预览,还悄然间对Apple智能功能的地区限制进行了微妙而重要的调整。 这一变化,虽看似细…...

MySQL中DML操作(二)
默认值处理(DEFAULT) 在MySQL中可以使用DEFAULT为列设定一个默认值。如果在插入数据时并未指定该列的值,那么MySQL将默认值添加到该列中。 创建表时指定列的默认值 CREATE TABLE 表名(列名 类型 default 默认值......); 示例:…...

LLMs技术 | 整合Ollama实现本地LLMs调用
前言 近两年AIGC发展的非常迅速,从刚开始的只有ChatGPT到现在的很百家争鸣。从开始的大参数模型,再到后来的小参数模型,从一开始单一的文本模型到现在的多模态模型等等。随着一起进步的不仅仅是模型的多样化,还有模型的使用方式。…...

【C-实践】文件服务器(3.0)
文件服务器1.0文件服务器2.0文件服务器4.0 概述 使用了 tcp epoll 线程池 生产者消费者模型,实现文件服务器 有两个进程,主进程负责接收退出信号用来退出整个程序;子进程负责管理线程池、客户端连接以及线程池的退出 子进程中的主线程生…...

LeetCode 2181.合并零之间的节点
题目描述 给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val 0 。 对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 …...

千益畅行,共享旅游卡,引领旅游新潮流
千益畅行旅游卡是一款专为旅游爱好者打造的超值卡片。它就像一把神奇的钥匙,为您打开国内丰富多彩的旅游世界。 我们的旅游卡拥有众多令人惊喜的特点。首先,它涵盖了国内 40 多条精心策划的旅游线路,无论您是向往历史文化名城的厚重底蕴&…...

K均值聚类
根据到给点样本的距离,来聚类。 1.曼哈顿距离、 2.欧几里得距离 直线距离 3.切比雪夫距离 4.闵氏距离 5.余弦相似度 对数据大小/长度等不关注,只关注相似度。 6.汉明距离 二进制距离 二、密度聚类 DBSCAN 前提是样本是根据紧密程度分布的。 先用超参…...

【Ubuntu】安装常用软件包
安装java 直接输入java,如果没有安装的话会提醒你输入命令安装,类似 Command java not found, but can be installed with: sudo apt install jdkxxxxxxxxxxxxxx然后选一个版本安装就好,我这里选的jdk17,安装完确认一下 ubuntuVM-4-13-ubu…...

探索全光网技术 | 全光网产品解决方案整理-(宇洪科技)
探索全光网技术 |全光网产品解决方案整理-宇洪科技 目录 一、数据中心场景1、方案概述2、方案需求3、相关产品4、产品推荐5、方案价值 二、教育场景1、方案概述2、方案需求3、相关产品4、方案价值 三、医疗场景1、方案概述2、方案需求3、相关产品4、方案价值 注:本文…...