《COMMA: Co-articulated Multi-Modal Learning》中文校对版

系列论文研读目录


文章目录

  • 系列论文研读目录
  • 摘要
  • 导言
  • 相关工作
    • 视觉语言模型
    • 提示学习
    • 视觉语言模型中的提示学习
  • 方法
    • 准备工作
    • 提议方法
  • 实验
    • 基准设定
    • 基础到新的概括
    • 跨数据集传输
    • 消融实验
  • 结论


摘要

经过预训练的大规模视觉语言模型(如CLIP)已经在一系列下游任务中表现出了出色的泛化能力。但是,它们对输入文本提示的变化很敏感,并且需要选择提示模板以获得满意的性能。近来,已经提出了各种方法来动态地学习作为文本输入的提示,以避免在微调过程中对人工手工制作的提示工程的要求。我们注意到这些方法在两个方面是次优的。首先,这些方法中的视觉和语言分支的提示通常是分离的或单向相关的。因此,两个分支的提示不完全相关,并且可能不提供足够的指导来对齐两个分支的表示。其次,我们观察到,与CLIP相比,大多数先前的方法通常在可见类上实现更好的性能,但在不可见类上导致性能退化。这是因为在预训练阶段学到的基本通用知识在微调过程中被部分遗忘了。基于此,本文提出了一种联合连接的多模态学习算法(COMMA)。特别地,我们的方法考虑来自两个分支的提示以生成提示来增强两个分支的表示对准。此外,为了减少对基本知识的遗忘,我们在Transformer层后期的预训练CLIP中最小化了学习到的提示与手工嵌入的提示之间的特征差异。我们在三个典型的任务上评估了我们的方法,这三个任务是泛化到新的类、新的目标数据集和不可见的域转移。实验结果证明了该方法的优越性,在所有任务上都有较好的性能提升.代码可在https://github.com/hulianyuyy/COMMA上获得

导言

  1. 具有对齐的大规模文本图像对的网络数据的增加极大地促进了基础视觉语言模型(VLM)的开发,如CLIP(拉德福等人。2021)。由于自然语言提供的监督,这些模型在一系列下游任务中表现出出色的泛化性能,并且可以推理开放词汇视觉概念(Gao et al. 2021; Fang et al. 2021; Cheng et al. 2021)。在推理过程中,一组手工制作的提示,如“[类别]的照片”被用作文本编码器的查询。输出文本嵌入与图像编码器生成的视觉嵌入相匹配,以预测输出类。
  2. 尽管CLIP在新场景中具有令人印象深刻的通用性,但其庞大的模型规模和对训练数据的要求使得在下游任务中对完整模型进行微调是不可行的。对整个模型进行微调也很容易忘记在训练阶段获得的有益知识,并过度拟合下游数据。为了解决上述限制,一系列工作(拉德福等人,2021; Jin等人,2021)致力于设计更好的手工提示,以适应下游任务。然而,手工制作的提示需要仔细的选择与密集的劳动,这也可能是最佳的描绘新的场景的特点。最近,许多方法(Shu et al. 2022; Zhou et al. 2022 a,B)提出将提示视为文本嵌入,并在微调过程中更新它们以更好地与VLM协调。该方法只更新可学习的提示信息,并固定VLMs的原始参数,大大降低了计算量。
  3. 我们认为,这些方法仍然有两个主要缺点。首先,这些方法中的视觉和语言分支的提示通常是分离的或单向相关的(视觉分支仅受文本分支的单向影响)。由于VLM的目标是更好地匹配视觉和语言分支的嵌入,因此脱节的视觉和语言提示可能会阻碍对两个分支中的输出嵌入的相关性进行建模。第二,已经观察到,相比CLIP,大多数以前的方法通常在看得到的类上能发挥好的表现,但表现出较差的泛化能力上在看不见的类。这是因为在预训练过程中获得的基本通用知识在微调过程中部分被遗忘。
  4. 为了解决上述问题,本文提出了协同多模态学习(COMMA)。特别地,为了增强两个分支中提示的相关性,我们基于两个分支中的前一个提示生成下一层的提示。在这种情况下,两个分支的提示嵌入都很好地相关,并且可以为下一层提供足够的指导来对齐两个分支的表示。此外,为了减少对大规模训练数据中获得的基本知识的遗忘,我们试图最大限度地减少学习的提示和预训练的CLIP中手工制作的提示之间的差异。在微调阶段,可以更好地保存和适应新的类的一般知识。我们对三个关键的代表性设置进行了广泛的实验,包括基础到新的泛化,跨数据集评估和域泛化,证明了COMMA的实力。特别是,在基础到新的概括上,我们的方法在10/11数据集上优于其他方法,如图1所示。此外,我们的COMMA还在跨数据集传输和域泛化设置中对所有数据集表现出出色的泛化能力,实现了一致的性能提升。由于其流线型的设计,与以前的方法相比,COMMA具有更高的训练和推理效率。
    在这里插入图片描述

相关工作

视觉语言模型

近年来,大规模图文对的出现极大地促进了视觉语言模型的发展。以前的方法通常采用基于区域(安德森等人,2018)或基于网格(Jiang等人,2020; Nguyen,Goswami和Chen 2020)的方法来建模视觉和语言之间的相关性。然而,这两种模式之间的内在联系并没有完全捕捉到这样的设计。近年来,CLIP(拉德福et al. 2021)、ALIGN(Jia et al. 2021)、FLIP(Yao et al. 2021)和BLIP(Li et al. 2022)等一系列模型被引入,以对比的方式捕捉图像和文本之间的相关性。他们通过最大化积极对的相似性并推开那些消极对来学习联合图像语言表示。在自然语言监督的帮助下,它们在广泛的下游任务中表现出令人印象深刻的性能。然而,其庞大的模型规模和训练数据的要求限制了其在资源受限的下游任务中的应用。如何更好地发挥其潜力,在这些新的概念,高效率仍然是一个具有挑战性的问题。许多工作已经证明,通过使用定制的方法来调整VLM用于少数拍摄图像识别(Zhang et al. 2021; Sung,Cho和Bansal 2022),对象检测(Gu et al. 2021; Feng et al. 2022; Maaz et al. 2022)和分割(Ding et al. 2022; Lüuddecke和Ecker 2022),下游任务的性能更好。

提示学习

大型语言模型通常需要句子形式的指令,称为文本提示,以更好地理解任务。这些提示可以在微调过程中手工制作(Jin et al. 2021)或自动学习(Houlsby et al. 2019; Liu et al. 2023),而后者被称为提示学习。这一趋势首先出现在自然语言处理(NLP)领域,其中一些方法(Lester,Al-Rfou和Constant 2021; Li和Liang 2021; Liu等人2021)提出在输入或中间特征之前添加一系列可学习的提示,以使学习的表示适应新任务。视觉领域(Jia et al. 2022; Wang et al. 2022)和视觉语言领域(Gao et al. 2021; Khattak et al. 2023; Yao,Zhang,and Xu 2023)也出现了类似的趋势。虽然大多数以前的方法分别考虑多模态分支中的提示,但我们试图增强它们的相关性,以指导两个分支中的表示对齐。

视觉语言模型中的提示学习

受NLP中提示学习的启发,许多方法提出通过端到端微调学习提示标记来适应VLM。VLM的原始参数是固定的,在此过程中仅更新了一些额外的可学习提示参数。CoOp(Zhou等人,2022 b)首先在第一层用可学习的软提示替换手工制作的提示,以适应VLM。CoCoOp(Zhou et al. 2022 a)提出生成图像条件提示,以利用输入特征的力量。ProGrad(Zhu等人,2022)仅更新梯度与原始提示生成的“一般知识”一致的提示。KgCoOp(Yao,Zhang和Xu 2023)试图将文本编码器的输出嵌入与预训练的CLIP的输出嵌入对齐,以保留有益的信息。MaPLe(Khattak等人,2023)学习视觉和语言分支中的软提示,以更好地调整其表示。我们注意到,这些方法中的提示通常是分开的,这阻碍了采用多模态信息来更好地对齐两个分支的表示。此外,与CLIP相比,这些方法通常会导致不可见类的性能下降,具有更差的泛化能力。我们的工作是第一次探索从两个分支收集有益的信息,以更好地指导提示生成过程,以很好地对齐多模态表示。

方法

我们的方法侧重于如何提高一系列下游任务的大规模VLM的泛化性能。为了减少下游任务的过拟合,避免产生巨大的训练计算成本,原始VLM中的图像编码器和文本编码器的参数保持固定,而在微调过程中仅更新提示符的参数。为了更好地展示我们的COMMA的效果,我们首先以CLIP(拉德福et al. 2021)为例简要回顾了VLM,然后回顾了典型的视觉提示学习方法,如CoOp和MaPLe,以衍生我们的方法。

准备工作

在这里插入图片描述
我们基于预训练的VLM CLIP构建模型,CLIP由文本和视觉编码器组成。CLIP对图像I ∈ RH×W×3和并发的文本描述进行编码,以匹配它们的输出嵌入。我们遵循先前的方法使用基于视觉Transformer(ViT)(Dosovitskiy等人,2020)的CLIP模型。
编码图像:首先将图像I ∈ RH×W×3分割成M个等间隔的面片,然后将其整形并投影到面片嵌入E0 ∈ RM×dv中.这些补丁嵌入然后与可学习类令牌(CLS)ci一起被发送到K层Transformer V沿着。每个Transformer层的计算过程可以表示为:
为了获得输入图像I的最终表示,最后一个Transformer层的CLS令牌cK-1被提取并经由投影函数pv投影到公共V-L潜在嵌入空间,如下所示:
编码文本:输入的文本描述被标记化,然后被投影成词嵌入W 0 = [w1 0,w2 0,· · ·,wN 0 ] ∈ RN×dl,其中N表示词嵌入的长度。在每一层,嵌入Wi-1被发送到文本编码器的第i个Transformer层Li,如下:
最终的文本表示z是通过经由投影函数pl将最后一个Transformer层的最后一个标记wN K-1投影到公共V-L潜在嵌入空间来获得的:
zero-shot推理:在推理过程中,文本编码器的输入是手工编写的提示(例如,通过将占位符[类]替换为标签y∈[1,.。。,C]。然后,通过具有温度参数τ的余弦相似性函数sim()计算文本编码器和图像编码器的输出之间的相似性来测量第j类的分数:P(yj|x)=exp(sim(x,zj)/τ)ci=1exp(sim(x,zi)。(5)采用与最高分数对应的类名作为对输入图像I的预测结果。
在这里插入图片描述
文本编码器中的文本提示通常是手工制作的,这需要劳动密集型的手动搜索,并且对于下游任务来说可能不是最佳的。因此,近年来的方法提出将提示视为文本嵌入,并在微调过程中对其进行优化。
CoOp.CoOp将文本编码器中手工制作的提示替换为可学习的软提示,并在微调过程中直接更新它们。具体地,CoOp引入M个可学习的提示向量{p0,p1,…,pM−1},并将它们与第i个类的标记嵌入ci级联作为文本输入嵌入:tCoOp i = {p0,p1,…,pM−1,ci}。然后,将这些嵌入发送到文本编码器中以获得最终的文本表示。
Maple.地图MaPLe认为,在VLM的单个分支中使用提示可能不是最佳的,因为它不允许调整两个分支的表示以更好地匹配它们的输出嵌入。此外,仅在第一层中插入提示可能不足以对各种层级的有益信息进行编码。因此,MaPLe建议将提示插入到视觉和文本分支中,直到J层,以实现深度提示。在每一层中,图像编码器的提示由文本编码器的提示单向生成。

提议方法

与CLIP相比,以前的方法在下游任务上实现了相当大的性能提升,但它们仍然有两个主要限制。首先,视觉和文本分支中的提示通常是分离的或单向生成的。由于VLM的目标是匹配不同模态的输出嵌入以描述它们的关系,因此两个分支的提示应该密切相关,以提供适当的指导来对齐两个分支的表示。其次,尽管最近的方法在可见类上实现了令人印象深刻的性能提升,但与CLIP相比,它们通常会导致不可见类的性能退化(Yao,Zhang和Xu 2023; Zhou et al. 2022 a),表现出对新概念的更差泛化。这对现实生活中的场景是有害的,因为可能会出现大量的新类。原因是在微调过程中,部分通用知识被遗忘了。为了处理上述限制,我们联合收割机来自两个分支的有益信息,以生成与其输出嵌入匹配的提示。我们还建议在微调过程中保留预训练CLIP的通用表示,以减轻过拟合。我们提出的方法的概述在图2中给出。
在这里插入图片描述COMA的概述。这里,Lce表示交叉熵损失,Lkd表示两个分支之间的知识蒸馏损失。COMMA基于两个分支的先前提示生成视觉分支的提示,以聚合多模态有益信息来指导它们的表示对齐。此外,它让学习的提示近似于预先训练的CLIP模型中的手工制作的提示,以保留通用知识。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
相关提示生成。为了更好地引导和对齐两个分支的表示,我们提出基于两个分支的先前提示来计算提示,以聚合有益的多模态信息。特别地,遵循先前的方法(Khattak et al. 2023),我们在视觉和文本分支中插入可学习的提示直到特定深度J。以视觉分支为例,输入嵌入表示为{Pv 0,c 0,E0},其中P表示M长度的可学习提示。给出了ith(i ∈ [0,…,K-1])Transformer层Vi可以表示为:[,ci,Ei] = Vi([Pv i-1,ci-1,Ei-1])。(6)
我们不是将两个分支中的提示分开或单向控制,而是通过基于两个分支的先前提示计算图像分支中的提示来利用多模态信息。具体地,对于第i个Transformer层Vi,其提示是通过将视觉分支中第i-1层的提示Pv i-1作为查询,并将文本分支中第i-1层的提示Pl i-1作为键和值来动态生成的。这个过程表示为:Pv i = softmax(Pv i−1 · Pl i−1 <$P)Pl i−1。(7)
我们沿着令牌维度执行聚合。在这个意义上,视觉编码器中的提示聚合来自文本分支的补充信息,以指导其表示的对齐路径。实际上,我们仅在文本分支中的高级语义的指导下生成视觉分支中的提示,并且将文本分支中的提示随机初始化以进行反向传播,以避免损害其高级语义表示。

避免忘记一般知识。先前的工作(Khattak等人,2023; Yao、Zhang和Xu,2023)已经证明,预训练的CLIP模型中包含的通用知识在微调过程中很容易被遗忘。我们发现,在预先训练的CLIP学习提示和手工制作的提示之间的相似性是呈正相关的,他们的表现上的新类。图3描绘了关于CoOp中的可学习提示与预训练CLIP中的手工提示之间的距离的关系,其性能差距为跨不同层的Δ Acc。据观察,随着层的深入,性能下降的程度Δ Acc与即时嵌入距离更加一致。具体地,在前几层(例如,层3&6)中,在最后几层(例如,第9层和第12层),则PADAcc和提示距离之间的趋势变得更加正相关。这表明预训练CLIP中的可学习提示和手工提示之间的距离可以被视为指示下游任务的模型泛化性能的明显标志。基于前面的观察,我们建议最大限度地减少最后几个S层中预训练CLIP的可学习提示和手工提示之间的特征差异,以提高新类的泛化性能。具体来说,对于相互sth层,我们通过余弦相似性sim()最大化COMMA的文本分支中的可学习提示与预训练CLIP的文本分支中的手工提示之间的特征相似性:Lkd = Sim(Pl s,PCLIP s)(8)总体而言,我们最小化交叉熵损失以及特征差异损失,其中倒数S层上的权重λ训练我们的COMMA为:L总= Lce + λ <$S i=0(1 − Li kd)。
在这里插入图片描述关于性能下降程度的关系,即CoOp中的可学习提示与11个数据集上不同层的预训练CLIP中的手工提示之间的距离。

实验

基准设定

基础到新的泛化:数据集被分成基础和新的类,以零射击的方式评估模型。该模型在少量设置中在基类上进行训练,并在基类和新类上进行评估。
跨数据集评价:为了证明我们的模型在跨数据集传输中的能力,我们以少量的方式在ImageNet数据集上训练我们的模型,并直接在其他数据集上对其进行评估,而无需进一步微调。
领域概括:为了评估我们的模型对分布外数据的鲁棒性,我们直接在其他四个包含不同类型域偏移的ImageNet数据集上测试我们的ImageNet训练模型。
数据集:对于基础到新的泛化和跨数据集评估,我们遵循以前的方法(Khattak et al. 2023; Yao,Zhang和Xu 2023)在11个图像分类数据集上评估我们的方法的性能,包括两个通用对象数据集ImageNet(Deng等人,2009年)和Caltech 101(Fei-Fei、费尔格斯和Perona 2004);五个细粒度数据集,OxfordPets(Parkhi等人,2012年),StanfordCars(Krause等人,2013年),Flowers 102(Nilsback和Zisserman,2008),Food 101(Bossard,Guillaumin和货车Gool,2014年)和FGVCAircraft(Maji等人,2013年);场景识别数据集SUN 397(Xiao et al. 2010);动作识别数据集UCF 101(Soomro,Zamir和Shah 2012);纹理数据集DTD(Cimpoi等人2014)和卫星图像数据集EuroSAT(Helber等人2019)。对于域泛化,我们使用ImageNet作为源数据集,其四个变体作为目标数据集,包括ImageNet V2(Recht et al. 2019),ImageNet-Sketch(Wang et al. 2019),ImageNet-A(Hendrycks et al. 2021 b)和ImageNet R(Hendrycks et al. 2021 a)。
实现细节对于所有实验,我们默认使用预训练的ViT-B/16 CLIP模型,dl = 512,dl = 768。默认情况下,我们在所有实验中使用16次射击训练策略,为每个类随机采样16次射击。根据之前的方法(Khattak等人,2023),我们将提示深度J设置为9,语言和视觉提示长度设置为2。我们使用SGD优化器训练模型5个epoch,batchsize为4,学习率为0.0035。我们使用模板“a photo of a [category]”的预训练CLIP词嵌入来初始化第一层P0的语言提示,并随机初始化具有正态分布的后续层的提示。对于基础到新的推广,我们报告基础和新的类精度和他们的谐波平均值(HM)平均超过3次运行。对于跨数据集评估和域泛化,我们在ImageNet数据集上训练我们的模型作为源模型,学习率为0.0026,并将提示深度J设置为3。

基础到新的概括

我们将每个数据集分成两个不相交的组:基类(Base)和新类(New)。该模型在基类上进行训练,并直接在看不见的新类上进行评估,以验证其泛化能力。我们将我们的COMMA与表1中的最新方法进行比较。总的来说,与最先进的方法相比,COMMA在9/11数据集上的新类和10/11数据集上更高的谐波平均精度上实现了改进的性能,在新概念上表现出更好的泛化能力。具体来说,以前的方法,如CoOp,CoCoOp和KgCoOp通常实现了与CLIP相比基类的大幅度改进。然而,他们往往在小说类的表现较差。这是因为它们很容易过拟合训练数据,并且缺乏对未知数据的泛化。作为一个强大的竞争对手,Maple引入了多模态提示学习来缓解这个问题,并且与以前的方法相比,在新类上有了很大的改进。与CLIP相比,我们的COMMA不仅在所有基类上表现出更上级的性能,而且在大多数(9/11)新类上表现出更强的准确性,具有令人印象深刻的泛化能力,在所有数据集上具有更高的平均谐波平均准确度。值得注意的是,与以前的方法相比,我们的COMMA在基类上的3/11数据集上获得了更高的性能,但在新类上的9/11数据集上获得了更好的准确性。
在这里插入图片描述

跨数据集传输

我们在选项卡中测试了COMMA的跨数据集泛化。2.该模型在ImageNet数据集上进行训练,并在其余10个数据集上直接进行评价。据观察,COMMA在源ImageNet数据集上的性能与其他方法相当,但在目标数据集上的性能要强得多。特别是,COMMA在9/10的数据集上优于CoOp和Maple,并且在所有数据集上都优于CoCoOp。总的来说,COMMA在所有10个数据集上实现了最高的平均性能,在下游任务上具有更好的泛化能力。
在这里插入图片描述
领域泛化我们在源ImageNet数据集上训练我们的模型,并直接在四个分布外的数据集上对其进行评估,以测试其泛化能力。结果显示在选项卡中。3.我们的COMMA在源ImageNet数据集上与其他方法相比具有竞争力的性能,并且在所有其他数据集上始终优于其他方法。这表明增强多模态提示的相关性和注入通用知识可以增强CLIP等VLM的泛化性和鲁棒性。
在这里插入图片描述

消融实验

建议组件的有效性。我们验证了所提出的两个组件的效果,相关的即时概括和一般知识转移,在选项卡中。4.实验结果表明,在11个数据集上,添加关联提示和知识转移可以分别带来+2.16%和0.98%的平均性能提升。两者的结合进一步导致+3.18%的准确性提升,绝对准确性为79.04%。
在这里插入图片描述

多少层用于采用知识转移。我们使用倒易的S层将CLIP中手工制作的提示符的一般知识转移到COMMA中可学习的提示符。图4描绘了通过改变S,基本类、新类和调和平均值的精度变化。结果表明,精度随S的减小而不断提高,当S=2时达到最大值。这表明后几层的提示信息包含了更多的通用语义信息,能够更好地帮助后续任务的泛化性能。因此,我们设定S=2。
在这里插入图片描述

提示效率。我们在表中比较了COMMA算法和最近几种算法在参数和每秒帧数方面的效率。5.我们注意到,CoCoOp的FPS最低,这是因为它采用了受实例约束的设计。随着批量的增加,其FPS下降,严重阻碍了其在真实的生产中的应用。与以前的方法(CoOp、CoCoOp和KgCoOp)相比,MaPLe的准确度得到了提高,所需参数从2048增加到3.55M。与其他方法相比,我们的COMMA方法在所有11个数据集上的FPS相当的情况下,具有略微增加的参数和最高的平均性能,证明了在具有竞争力的计算成本的情况下具有更好的准确性。
在这里插入图片描述

λ的选取。我们在表中检验了知识转移损失Lkg的权重λ的选择。6.随着λ的增大,精度逐渐提高,当λ=1.0时,精度达到最大值。我们默认设置λ=1.0。
在这里插入图片描述

提示深度J和提示长度P的选择。我们在tab中烧蚀了提示深度J和提示长度P的选择。7.观察到J = 9和P = 2可以提供最佳结果。
在这里插入图片描述

结论

由于优化参数的规模很大,下游数据的大小有限,因此使大型VLM适应下游任务具有挑战性。提示学习是一种有效的有前途的方法,以适应新的概念的VLMs。为了提高VLM的泛化性能,我们建议在微调过程中增强多模态提示的相关性并保留通用知识。实验结果表明,我们的模型在一系列下游任务中是参数有效和鲁棒的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145466.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot Admin调整类的日志级别

进入 SpringBoot Admin &#xff0c;通过服务名称&#xff0c; 找到服务后。 点击 “日志” – “日志配置” &#xff0c;输入类名&#xff0c;即可调整 这个类的日志级别。

solidwork关闭阴影

在上方的菜单栏中找到“视图”选项&#xff0c;进行点击。 然后在出现的下拉菜单中选择“显示”选项&#xff0c;如图所示。 然后在出现的二级菜单中&#xff0c;点击选项“在上色模式中的阴影”&#xff0c;使此功能处于抑制状态。 完成以上设置后&#xff0c;即可关闭s…

攻防世界--->gametime

做题笔记。 前言&#xff1a; 因为有意思&#xff0c;所以&#xff0c;&#xff0c;&#xff0c;打通关了。。哈哈哈。 题外话&#xff1a;哦&#xff0c;程序结果还在&#xff0c;是因为我是在WSL—Debian上运行的。你还别说&#xff0c;真挺好用的&#xff0c;vm虚拟机能不…

无人机飞手培训机构六旋翼训练无人机技术详解

六旋翼无人机作为多旋翼无人机的一种&#xff0c;以其独特的稳定性、灵活性和载重能力&#xff0c;在航拍、农业、救援、物流等多个领域展现出广泛的应用前景。它采用六个旋翼产生升力&#xff0c;通过复杂的飞行控制系统实现悬停、前后左右飞行、翻滚等复杂动作&#xff0c;为…

深入解析 Apache Doris架构、应用场景与最佳实践

一、Doris 简介 Apache Doris 是一款现代化的 MPP&#xff08;Massively Parallel Processing&#xff09;数据库&#xff0c;专注于解决大规模数据分析和实时查询的需求。它最初源自百度的 Palo 项目&#xff0c;随后贡献给了 Apache 基金会&#xff0c;并在开源社区的共同努…

【STL】map和set相关知识详细梳理

1. 预备知识 1.1 关联式容器 在之前&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、 forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面 存储的是元素本身。…

【内积】内积计算公式及物理意义

内积&#xff1a; 内积又称标量积、点积、数量积 内积计算公式&#xff1a; 代数定义&#xff1a; 两个向量 a [a1,a2,a3,…,an] b [b1,b2,b3,…,bn] 则有&#xff1a; 几何定义&#xff1a; 物理意义&#xff1a; 当内积为正值时&#xff0c;两个向量指向大致相同方向&a…

实时美颜的技术突破:视频美颜SDK与直播美颜工具的开发详解

如今&#xff0c;视频美颜SDK和直播美颜工具的开发&#xff0c;为各类应用提供了技术支持&#xff0c;使得美颜效果更加智能、高效。本文将详细探讨实时美颜的技术突破及其在视频美颜SDK和直播美颜工具中的应用与开发。 一、视频美颜SDK的核心技术 1.人脸检测与特征点识别 视…

工业控制系统等保2.0定级备案经验分享

工业控制系统和传统IT系统有所差异&#xff0c;须单独划分定级对象 工业控制系统定级时将现场采集/执行、现场控制和过程控制等要素应作为一个整体对象定级&#xff0c;各要素不单独定级&#xff1b;生产管理要素可单独定级。对于大型工业控制系统&#xff0c;可以根据系统功能…

Python 中的 Kombu 类库

Kombu 是一个用于 Python 的消息队列库&#xff0c;提供了高效、灵活的消息传递机制。它是 Celery 的核心组件之一&#xff0c;但也可以单独使用。Kombu 支持多种消息代理&#xff08;如 RabbitMQ、Redis、Amazon SQS 等&#xff09;&#xff0c;并提供了消息生产者和消费者的功…

计算机的错误计算(九十九)

摘要 讨论 的计算精度问题。 计算机的错误计算&#xff08;五十五&#xff09;、&#xff08;七十八&#xff09;以及&#xff08;九十六&#xff09;分别列出了 IEEE 754-2019[1]中的一些函数与运算。下面再截图给出其另外几个运算。 另外&#xff0c;计算机的错误计算&…

风力发电机各部位边缘识别检测数据集 yolo数据集 共7300张

风力发电机各部位边缘识别检测数据集 yolo数据集 共7300张 风力发电机各部位边缘识别检测数据集 数据集描述 该数据集是一个专门用于风力发电机各部位边缘识别和检测的数据集&#xff0c;旨在帮助研究人员和开发者训练和评估基于深度学习的目标检测模型。数据集中的图像涵盖了…

卡牌抽卡机小程序:市场发展下的创新

今年以来&#xff0c;卡牌成为了行业中的黑马&#xff0c;在国内迅速流行&#xff0c;成为消费者的心头好。小小的卡牌创下了百亿的市场规模&#xff0c;发展前景巨大&#xff01; 不过&#xff0c;随着卡牌市场的不断增长&#xff0c;市场发展也需要进行创新。线上抽卡机小程…

系统架构设计师|数据库基础-006

&#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程师 &#x1f3c6; 近期荣誉&#xff1a;华为云云享专家、阿里云专家博主、 腾讯云优秀创作者、腾讯云TDP-KOL、墨天轮技术专家博主、ACDU成员 &#x1f3…

Linux top命令详解与重点内容说明

文章目录 重点说明基本信息进程(任务)信息cpu占用信息%Cpu(s)内存信息交换内存信息每列含义说明交互命令多窗口模式颜色配置命令参数 重点说明 top命令非常强大&#xff0c;也非常复杂&#xff0c;很难面面俱到&#xff0c;也没有必要&#xff0c;这篇文章的目的是介绍重点&am…

面试题给图例举测试用例或测试点

目录 从功能测试的角度考虑&#xff1a; 从性能角度考虑&#xff1a; 从兼容性的角度考虑&#xff1a; 从自动化角度考虑&#xff1a; 从安全性角度考虑&#xff1a; 用户体验的角度测试&#xff1a; 面试通常会有技术和人事两种&#xff0c;侧重点不一样。 今天聊一下测…

前端univer创建、编辑excel

前端univer创建、编辑excel 源码在线demo&#xff1a;https://codesandbox.io/p/sandbox/univer-q87kqg?file/src/Demo.jsx univer官网地址&#xff1a;https://univer.ai/zh-CN/guides/sheet/introduction 安装univer npm install univerjs/core univerjs/design univerjs…

音频北斗定位系统有什么用?

在当今科技飞速发展的时代&#xff0c;定位技术已经成为我们日常生活和各行各业不可或缺的一部分。其中&#xff0c;音频北斗定位系统作为一种新兴的定位技术&#xff0c;正逐渐展现出其独特的优势和应用价值。那么&#xff0c;到底音频北斗定位系统有什么用呢?我们一起来了解…

计算机网络nat 映射案列

1 拓扑案列 2 配置 pc 访问外网 # interface LoopBack192 ip address 192.168.1.1 255.255.255.0 # interface Vlan-interface1 ip address 10.1.1.1 255.255.255.0 # # ip route-static 0.0.0.0 0 10.1.1.2 # local-user admin class manage password hash $h$6$0XD4lC…

微信小程序. tarojs webView的 onload 事件不触发

功能需求&#xff1a;想再webView加载成功后做一些逻辑操作。使用onLoad事件 现象&#xff1a;在taro里面webView的onload。onError 事件不触发了 版本&#xff1a;taro 3.6版本 分析&#xff1a;刚开始想着可能是版本&#xff0c;然后用另外一个项目&#xff08;taro 3.4版…