【自监督论文阅读笔记】MVP: Multimodality-guided Visual Pre-training

news2024/12/28 2:44:32

Abstract

        最近,掩码图像建模(MIM)已成为视觉预训练的一个有前途的方向。在vision transformers的上下文中,MIM 通过将 token-level 标记级特征 与 预定义空间 对齐来学习有效的视觉表示(例如,BEIT 使用在大型图像语料库上训练的 d-VAE 作为  tokenizer 标记器)。在本文中,我们更进一步,引入了来自其他模态的指导,并验证了这些额外的知识是否会为视觉预训练带来令人印象深刻的收益。所提出的方法被命名为多模态引导视觉预训练 (MVP),其中本文 用 CLIP 的视觉分支替换标记器,CLIP 是一种在 4 亿图像文本对上预训练的视觉语言模型。本文通过执行标准实验来证明 MVP 的有效性,即在 ImageNet 上预训练 ViT 模型并在一系列下游视觉识别任务上对其进行微调。特别是,对 ViT-Base/16 进行 300 个 epoch 的预训练,MVP 在 ADE20K 上报告了 52.4% 的 mIoU,以 6.8% 的令人印象深刻的利润率超过了 BEIT(基线和之前的最新技术水平)。


        深度神经网络一直是计算机视觉的基本工具,但它们通常需要大量带标签的训练数据 [9],而且模型有时会偏向语义标签缓解这些问题的一个有前途的方向是无监督视觉预训练,这在学术界和工业界都引起了越来越多的关注。在基于几何 [24,35] 和图像生成 [25,33] 的早期努力之后,对比学习 [17,6,4,29,28,36] 的出现在从大规模图像数据中学习方面取得了很大进展。在没有语义注释的情况下,这些方法报告了具有竞争力的下游迁移性能,有时甚至超过了受监督的对应方法 [18]。另一种有趣的方法称为掩码图像建模 (MIM)。 MIM [2,16,34,37,12,41] 从输入中删除了部分图像块,并要求目标模型恢复丢失的内容。目前,MIM 有两个主要方向:一个 [2,12] 是预测标记化特征(例如,通过 dVAE [39] 或 VQ-VAE [32]),另一个 [16,37] 是预测像素级信息MIM 特别适用于vision transformer 模型,例如,当允许对预训练的主干进行微调时,ImageNet-1K [9] 报告了最先进的图像分类精度。但是,我们注意到,当主干冻结时,此类模型很弱——例如,BEIT [2] 报告在 ImageNet-1K 的线性探测测试中的准确率为 37.6%; MAE [16] 将其提高到 67.8%,但仍明显低于对比学习报告的结果(例如,DINO 报告为 78.2%)。这使本文推测预训练模型学习了相对较弱的视觉表示语义特征

        本文的目标是 增强 MIM 的语义。为此,本文提出了多模态引导视觉预训练 (MVP),这是一个将多模态信息整合到 MIM 中的单一但有效的框架,特别是 BEIT 框架 [2]。如图 1 所示,本文的动机很简单,即多模态数据可以提供更多的语义知识。因此,本文没有使用 用纯图像数据预训练的tokenizer ,而是用 用图像-文本对预训练的tokenizer 替换它。我们希望后者提供弱语义指导(因为标记器需要对齐视觉和语言)开放域的表示能力(文本不受一组预定义类的约束)。据我们所知,这是第一项研究在 MIM 框架上使用多模态预训练的工作

        MVP 很容易在 BEIT 上实现,即 直接更改tokenizer 。特别是,本文参考了 CLIP [26] 的预训练模型,该模型已经看到了 4 亿个图像文本对,并直接将视觉分支作为tokenizer 。它取代了由 d-VAE [39] 预训练的原始 tokenizer。除了预测前置任务,BEIT 的其他部分几乎没有变化。有趣的是,这样一个简单的修改为一系列下游任务带来了巨大的好处。 MVP 报告在 ImageNet-1K 线性探测上的准确率为 75.4%,显著超过 BEIT(37.6%)和 MAE(67.8%)的数字,展示了其强大的语义学习能力。在微调测试中,MVP 报告 ViT-Base/16 和 ViT-Large/16 主干的准确率分别为 84.4% 和 86.3%,两者均超过 BEIT 基线 1% 以上。最值得注意的是,当将预训练的主干转移到 ADE20K [40] 上进行语义分割时,具有 ViT-Base/16 主干的 MVP 实现了 52.4% 的 mIOU,这比所有现有的基于 MIM 的方法高出 3.6% 的显著优势。

        本文的主要贡献可归纳如下:

- 本文分析了最近基于掩码图像建模 (MIM) 的缺乏语义知识的预训练方法,然后首先指出它们可以在其他模态的指导下得到增强

– 本文设计了一种简单而有效的算法来提高基于 MIM 的视觉预训练的迁移性能。通过借助使用多模态数据(图像-文本对)预训练的tokenizer ,MVP 为每个图像学习更丰富的语义知识。

– 本文通过大量实验评估了 MVP 的有效性,结果清楚地证明了 MVP 优于最近提出的视觉预训练方法


2 相关工作

        在深度学习时代,视觉识别的基本方法是训练深度神经网络。在标记训练数据不足的情况下,一种流行的流程是 使用来自其他来源(例如 ImageNet [9])的标记/未标记数据对模型进行预训练,并将模型迁移到特定领域。本文主要关注无监督(自监督)预训练。在本节中,我们回顾了该领域的两个子主题,即 视觉预训练多模态预训练


2.1 视觉预训练

        目前,由于具有对比损失的自监督学习方法[17,6,28,29]极大地提高了视觉模型的迁移性能,自监督学习已成为视觉预训练领域的主流。例如,He 等人 [17] 提出了一种动量对比框架来减少对批量大小要求的限制,并显著提高了预训练模型的迁移性能。同时,SimCLR [4] 被提出来验证不同数据增强策略在基于对比学习的方法中的效果。此外,为了避免采样的负噪声的混淆,BYOL [15] 旨在通过简单地将正对推在一起来获得有竞争力的结果。最近,与传统的卷积网络相比,基于vision transformer  的架构 [14,31] 已经在广泛的视觉任务中得到验证。为了提高vision transformer 的迁移性能,进一步提出了一些自监督的工作[3,7],以有效地预训练vision transformer 主干

        随着基于掩码语言建模 (MLM) 的方法 [11,20] 在自然语言处理领域取得巨大成功,越来越多的研究人员期望设计类似的前置任务来增强视觉预训练模型。受此启发,最近设计了基于掩码图像建模 (MIM) 的方法 并取得了有竞争力的结果。例如,通过简单地设计一个带有每个掩码图像块的视觉token预测的前置任务,BEIT [2] 大大提高了视觉模型的迁移性能。此外,通过对每个屏蔽patch 的像素级信息重建,MAE [16] 进一步改善了最终结果。同时,已经提出了一些类似的基于 MIM 的方案 [37,34,5],并推动了视觉预训练的发展。在这项工作中,我们还是利用基于 MIM 的框架,但设计了一个特殊的 多模态驱动的 前置任务 来 指导视觉模型学习更多的多模态语义知识


2.2 多模态预训练

        在真实场景中,信息通常被保留为不同的模态。由于其重要性日益增加,多模态预训练吸引了越来越多的研究人员 [26,19,21,8,22]。现有的多模态预训练工作可以根据网络架构主要概括为两个主流方向,即 基于单流多模态网络架构的方法 基于双流多模态网络架构的方法

对于大多数使用单流多模态架构的作品 [22,8,21],他们通常将语言和图像编码成离散的标记,然后在网络的早期阶段融合这些标记的信息。尽管这些工作在融合不同模态方面表现良好,但它们的推理效率相对较差

为了应对这一挑战,研究人员倾向于利用双流网络架构 [26,19] 来处理不同模态的交互。例如,CLIP [26],一种最近最先进的多模态预训练方法,用一个单独的分支提取每个模态信息,然后简单地将每个分支中提取的特征对齐到一个公共的多模态表示空间中。受益于在 4 亿个图像-文本对上进行的预训练,CLIP 极大地推动了多模态模型在广泛的下游任务中的迁移性能。在这项工作中,我们并不期望设计一个新的多模态预训练框架,而是利用预训练的多模态模型来指导视觉预训练模型的语义知识学习


3 Our Approach

3.1 Problem Setting

        给定大规模图像数据集  ,视觉预训练的目标是 引导计算模型 学习 D 上的可迁移知识。预训练后,具有预训练参数的视觉主干将被迁移到不同的视觉下游任务中以提高相应的性能。目前,许多自监督视觉预训练方案被提出来通过设计不同的前置任务来增强模型的迁移性能。给定前置任务 L(·) 和 视觉模型 自监督视觉预训练的目标可以写为

其中表示对整个训练数据集 D 的期望。


3.2 使用 Tokenizer 进行掩码图像建模

         如等式(1)所示,自监督视觉预训练的核心是 设计合适的前置任务。随着vision transformers [14,3] 在视觉识别任务上取得有竞争力的结果,研究人员 [2,12] 在自然语言处理中采用 BERT 式方案,并设计基于掩码图像建模 (MIM) 的前置任务来指导视觉预训练。给定一个图像 I ∈ RH×W ×3,它可以被分成几个图像块 {p1, p2, . . . , pM },其中 M 表示 patches 的数量,这些 patches 在vision transformers骨干中 被进一步编码为 单独的tokens  {t1, t2, . . . , tM } 。基于 MIM 的方法通常 将 标记的百分比 掩码为 ,其中 ^tm 表示第 m 个标记被 MASK 标记替换。然后,基于 MIM 的方法 [12,2,34] 通过预测这些掩码标记的信息(由 Tokenizer 提供)来利用前置来预训练视觉模型

        以BEIT(目前最先进的基于MIM的方法)为例,带有 Tokenizer 的 MIM 的优化目标可以表述为:

其中 损失是在提取的特征之间计算的, 

真值的引导为,

 

在上述等式中,M 表示 掩码标记 的集合Tokenizer(·) 表示用于从给定patches 提取视觉特征的视觉标记器(例如,BEIT中的d-VAE), 表示预测头,tCLS表示 vision transformer 中的CLS标记。在这项工作中,本文还 利用了与BEIT类似的框架,但在多模态知识的指导下修改了预测目标。 


3.3多模态引导的视觉预训练

        如第1节所述,先前基于MIM的方法 学习到的表示 语义辨别相对较弱,因为它们缺乏明确的语义学习指导。为了解决这个问题,本文要求基于MIM的方法[2,12]中的标记器 了解语义信息为了 利用弱监督 但 不偏向特定的语义空间,本文决定 使用 由多模态数据预训练的标记器。特别地,本文 采用 预训练的多模态模型 来 提取每个令牌的语义知识,然后 使用 多模态知识预测任务 预训练视觉模型。提出的方案被命名为多模态引导的视觉预训练(MVP),MVP的概述如图2所示。下面,我们将详细介绍MVP中的各个模块。 


多模态语义提取。

        本模块的目标是提取 辨别性的语义知识,但不偏向于特定的语义空间,用于视觉预训练目的。如图1所示,与单个带注释的标签相比,语言可以更好地描述每个图像中的语义。受此启发,本文的MVP利用最新的多模态预训练模型(CLIP,已在4亿图像文本对上进行预训练)来提取多模态语义知识。给定大规模图像文本对为 ,其中Tn描述每个图像Jn的语义内容(与In区分),CLIP的优化目标可以简单地表述为: 

其中,

其中<·, ·> 表示 余弦距离测量值。gvis() 和 glang() 分别代表 多模态模型(即CLIP)的视觉 和 语言分支。受益于等式(5),无论是视觉分支提取的视觉特征还是语言分支提取的文本特征 最终都被投影到一个共同的多模态空间中,并且 该空间的语义 对于它在庞大的图文对上的预训练来说无疑是有鉴别性的

        为了与MIM框架集成,本文的MVP 选择transformer架构 作为CLIP的视觉分支 来提取多模态语义。因此,每个单词的相应提取的多模态知识可以表示为:

其中Gvism 表示 视觉令牌tm的 特征,而GvisCLS表示 在CLS令牌上提取的 全局特征。 


多模态信息预测。

        在获得每个表征的多模态特征后,MVP进一步利用设计的多模态信息预测前置任务来指导视觉模型的预训练。与BEIT一样,MVP首先使用分块掩码方案[2]来掩码标记的百分比,然后将这些掩码的标记和剩余的未掩码的标记输入到视觉模型中,以提取视觉特征。此外,和BEIT一样,添加一个额外的预测头Phead(·),以将这些 令牌级视觉特征 投射到多模态空间中。因此,每个视觉标记的预测多模态信息可以被公式化为:

其中Fvism 表示 根据视觉模型的 视觉令牌tm的 预测的多模态特征,FvisCLS 表示 CLS令牌的 预测的全局多模态特征

        在根据等式(8)获得每个表征的预测多模态特征 和 由等式(7)生成的相应真值之后,MVP可以通过 实现这些特征的token级对齐 来指导视觉模型的预训练

        在等式(9)的对齐的驱动下,MVP可以很好地 指导 候选视觉模型 在全局级别(CLS标记上的对齐) 和 patch 级别(每个视觉标记上的对齐) 学习不同模态的共同语义知识。因此,与最近的自监督的视觉预训练方法相比,由MVP驱动的视觉模型的预训练知识将包含更具区分性但相对无偏的信息。第4节介绍了对MVP的更多评估和分析。


实施细节。

        遵循大多数基于MIM的方法[16,2,12],本文主要利用一系列ViT主干[14]来评估MVP的有效性。为了实现如等式(9)的令牌级对齐,本文直接利用 CLIP的ViT-Base/16主干的视觉分支 来提取多模态知识。值得注意的是,无论是用ViT-Base/16还是ViT-Large/16主干预训练视觉模型,CLIP中 视觉分支的主干 始终选择ViT-Base/16。在预训练期间,CLIP 中的视觉分支的参数被冻结,并且仅调整候选预训练视觉模型中的参数。对于本文中ViT的所有变体,输入的图像分辨率被设置为224 × 224,并且和BEIT [2]一样,采用分块掩码方案 将75个视觉标记掩码。此外,AdamW优化器和余弦衰减学习率调度程序被利用。初始学习速率和权重衰减分别设置为1.5e-3 和 5e-2。与大多数以前的作品相同[3,34],MVP在ImageNet-1K上进行预训练,持续300个epoches。在本文的下文中,分别将ViT-Base/16表示为ViT-B/16,将ViT-Large/16简称为ViT-L/16。 


3.4与先前工作的关系

        一些并发作品[10,38]看起来与本文的MVP类似,也是利用语言来指导视觉模型的预训练。但是,在动机和实现上与我们还是有差异的。Virtex [10] 利用重量级文本预测头(vision transformer 架构)来处理由卷积网络提取的视觉特征,然后 预测每个图像的相应字幕。尽管Virtex在不同的视觉下游任务上取得了有竞争力的迁移性能,但 仍然存在视觉模型的预训练能力严重依赖文本头的问题。然而,图像字幕预测任务是非常具有挑战性的,因为每个图像可以由不同的文本来描述。因此,Virtex很难在超大规模的图文数据集上进行预训练。不同的是,本文的MVP只是在视觉模型上设计了多模态语义预测任务,增加了一个轻量级的预测头(只有一个全连接层),引导视觉模型的预训练 学习不同模态的共同语义知识(由CLIP提供)。 

         另外,MaskFeat [34]是目前与本文最相似的作品。它也设计了一个基于掩码图像建模框架的特征预测任务。然而,MaskFeat 仅利用视觉特征(例如,HOG特征) 来监督视觉模型的预训练,从语义判别性的角度来看,这相对较弱。不同的是,本文的MVP的动机是 求助于不同模态的语义指导。为了实现这一点,MVP使用一个预先训练好的多模态模型 代替BEIT中的标记器,并设计了一个相应的特征预测前置任务。大量实验表明,与MaskFeat相比,本文的MVP在广泛的下游任务上享有很多好处。更多的比较和分析见第4节。


4实验结果

4.1数据集和下游评估设置        

与大多数以前的工作[2,16,12]一样,MVP主要在图像分类 和 语义分割任务上进行评估。本文使用的数据集和实验设置的细节将在接下来介绍。


数据集。

        本文主要在ImageNet-1K的图像分类任务上对MVP进行评测,该任务包含约1.3亿张标记图像。此外,ADE20K [40]是一个相对具有挑战性的语义分割数据集,它包含150个类别的25K个图像。本文还对ADE20K的语义分割任务进行了评测。与图像分类相比,语义分割是一项密集的视觉任务,每幅图像中包含多个实例。因此,对语义分割的评价 能够更好地反映 预训练视觉模型的语义能力


图像分类设置。

        当端到端微调由MVP预训练的视觉模型时,本文遵循工作中的大多数超参数设置[2]。使用AdamW优化器,重量衰减设置为5e-2。ViT-B/16的初始学习速率分别设置为4e-3,ViT-L/16设置为1e-3。此外,应用余弦衰减学习率调度器。对于ViT-L/16,本文微调ViT-B/16持续100个周期,其中20个预热周期,50个周期,其中5个预热周期。


语义分割设置。

        在ADE20K的语义分割任务上对预训练的视觉模型进行微调时,本文还遵循了BEIT [2]中的大多数超参数设置,其中输入图像的分辨率设置为512 × 512,应用AdamW优化器,初始学习速率分别设置为ViT-B/16的3e-4和ViT-L/16的2e-5。批量设置为16,模型最后微调160K步。


4.2图像分类的比较

        在本节中,首先在ImageNet-1K上使用端到端微调模式与最新的视觉预训练方法进行比较。如表1所示,本文的MVP在预训练不同的视觉模型时 持续取得有竞争力的成绩。例如,MVP在ImageNet-1K上实现了84.4%的ViT-B/16 Top-1准确率,优于基线(BEIT)的1.2%。至于ViT/L-16主干,MVP也以1.1%的最高精度超过了BEIT。此外,与也利用类似于MVP的特征预测方案的MaskFeat相比,本文的工作在ImageNet-1K上进行微调时仍然显示出更好的迁移性能,例如,在ViT/B-16上分别提高了0.4%和0.6%。

        MVP 还在 ImageNet-1K 的线性探测测试中进行了评估,它达到了 75.4% 的 Top-1 精度,这明显优于当前基于 MIM 的方法(例如,BEIT 报告的精度为 37.6%,MAE 的精度为 67.8%)。上述一致的改进清楚地证明了本文的多模态引导视觉预训练方案的优越性。更多的评估和分析可以在第 4.4 节中看到。本文承认,与以前的自监督学习方法(例如,DINO 报告准确率为 78.2%)相比,MVP 的线性探测任务仍然存在微弱的性能差,这可以归因于MIM框架将留待未来研究


4.3语义分割的比较

        与每个图像中存在单个对象的图像分类不同,语义分割是更具挑战性的任务,并且每个图像包含多个实例。鉴于文本可以充分描述每幅图像中呈现的实例及其关系,本文的多模态信息驱动的MVP应该在语义分割数据集上实现更好的迁移性能。 

        为了评估这一点,本文与ADE20K上的最新技术进行了广泛的比较。如表2所示,本文的MVP在这个任务上显示了显著的优势。例如,对于最近的 具有不同视觉特征 或 像素信息 重构前置任务的基于MIM的方法,它们实现了几乎相同的迁移性能,例如,在ViT/B-16上,BEIT的45.6% mIoU和MAE的48.1% mIoU。不同的是,在多模态语义知识的指导下,本文的MVP极大地推动了迁移结果,例如,与之前报告的ViT-B/16的最佳性能相比,提高了3.6%。

        我们承认,本文的MVP的上述显著改进可以归功于 CLIP预训练时的超大规模多模态数据集。为了验证这一点,本文还与在ImageNet-21K上预训练的BEIT模型进行了比较,该模型包含大约21K个类。如表3所示,MVP在迁移预训练的知识方面仍然显示出一贯的优势。值得注意的是,网站上有许多粗略对齐的图像-文本对,而且它们几乎是免费的。因此,具有预训练多模态模型的MVP的要求对于视觉预训练领域来说不是硬约束。


4.4消融研究

不同预训练时期的影响。

        在本节中,首先验证了不同的预训练阶段对MVP的影响。如表4所示,随着预训练epoch的增加,MVP的迁移能逐渐提高,如将预训练epoch从100扩大到300, ImageNet-1K的Top-1精度提高了0.5%,ADE20K的mIoU度量提高了0.4%。


不同知识的引导效果。

        还有一个问题是MVP的提升 是 靠设计的特征预测前置任务 还是 多模态语义知识的引导。一个间接证据是,与 MaskFeat 相比,本文的 MVP 在下游任务上实现了更好的迁移性能MaskFeat 是最近最先进的以重建 HOG 特征为前置的任务。但是 HOG特征的判别力相对较弱。为了更好地评估它,本文求助于最近的自监督视觉预训练方法 DINO [3] 的指导。与 MVP 类似,本文首先利用 DINO 预训练的 ViT-B/16 主干提取每个标记的视觉特征,然后将这些特征作为预测目标来指导视觉模型预训练。比较如表 5 所示。一般来说,与视觉预训练模型驱动的模型相比,具有预训练多模态模型指导的模型可以获得更好的结果,特别是在密集视觉下游任务上的评估,即 5.4% 的改进ADE20K。上述显著改进进一步评估了本文的多模态引导视觉预训练方案的优越性

 


MVP 中表示学习的分析。

        尽管 MVP 在不同的下游任务上取得了出色的迁移性能,但它是否像相应语言描述的那样学习了密集的视觉特征仍然存在问题。为了对此进行评估,本文对 MVP 的表示进行了可视化分析。由于对BEIT的CLS令牌没有明确的约束来提取全局特征,所以我们无法将学到的BEIT的全局表示与本文的MVP进行比较。为了分析 MVP 中表示的特征,本文利用最近最先进的自监督学习方法 DINO 进行比较。对于 MVP 和 DINO,本文使用 CLS 令牌作为查询来查找相应的响应映射。本文对 ViT-B/16 主干中所有头部的注意力图进行平均,然后在图 3 中显示结果。

 

        通常,之前的自监督学习方法(DINO)只关注特定的前景(如狗和北极熊),而忽略了其他有用的信息。不同的是,MVP可以更好地描述每张图像中的整体场景和实例,例如,“一个男人和他的狗在沙发上一起玩”,“狗在看日落”,等等。此外,对于ADE20K中复杂的图像,如“这个房间里有两把椅子和一张桌子”和“人们正在看墙上的多幅壁画”,MVP似乎有能力从注意力图的角度提取出每张图像内部的全部内容,这可能是MVP在语义分割任务上表现比以往视觉预训练作品好得多的原因

        如上所述,MVP可以更好地学习每个图像内部的多粒度密集语义知识。这一现象进一步反映了多模态语义知识驱动的视觉预训练的优越性。在未来,本文将在更密集的视觉下游任务上评估MVP。


4.5讨论和未来展望

        首先,我们应该认识到MVP依赖于多模态预训练带来的表征能力。所以MVP和纯视觉预训练算法的对比并不完全公平。然而,本文希望传递这样一个信息,即纯视觉预训练,特别是最近基于MIM的方法[2,16],受到了学习语义信息的限制——这似乎不能通过简单地使用更大的数据集来解决(例如,BEIT使用的ImageNet21K)。本文提倡使用多模态信息来实现潜在的突破。

        第二,我们注意到MVP和BEIT一样,是建立在预先训练好的tokenizer 之上的,因此会产生额外的训练成本。另一方面,MVP提供了一个多模态的预训练模型,在纯视觉领域具有更高的训练效率。沿着这个方向走得更远,可能会启发社区 将多模态预训练 建立为 单模态预训练的上游任务。在未来,将这个想法扩展到更多的语言[23]甚至更多的数据模态[1],观察它们对视觉表征学习的贡献将会很有趣。


5 结论

        在本文中,我们提出了多模态引导的视觉预训练(MVP ),这是第一个引入其他模态对掩码图像建模的指导的工作。通过 在BEIT上 用CLIP的视觉分支替换tokenizer,并简单地修改预测任务,MVP可以更好地学习每幅图像内部的多模态语义知识。在大范围的视觉下游任务上的广泛实验清楚地显示了MVP在预训练视觉模型上的有效性。重要的是,这项工作为其他形式的视觉预训练指明了新的方向。未来将会设计出更多数据形态指导的有效的视觉预训练方案。 

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

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

相关文章

03- 通过OpenCV进行图像变换 (OpenCV基础) (机器视觉)

知识重点 resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) 图像的放大与缩小, 变形 flip(src, flipCode) 图像的翻转 rotate(img, rotateCode) 图像的旋转 warpAffine(src, M, dsize, flags, mode, value) 仿射变换是图像旋转, 缩放, 平移的总称.具体的做法是通…

第四次作业

学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept)学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键课程表&#xff1a;Course (Cno, Cname)课程号&#xff0c;课程名 Cno为主键学生选课表&#xff1a;SC (Sno, Cno, Score)学号&…

九龙证券|豪掷超6000万,10转3派6元,今年第二只高送转股出炉!

新瀚新材高送转发布计划&#xff0c;股价年初以来大涨超50%。航运板块6股自2022年低点股价翻倍。 2月17日晚间&#xff0c;凯瑞德、新瀚新材2家公司发布了2022年年报&#xff1b;一起&#xff0c;新瀚新材高送转计划同步出炉。 报告显现&#xff0c;2022年度新瀚新材营业总收入…

软件测试简单面试

文章目录软件程序数据(库)文档服务 程序&#xff1a;完成预定功能、性能的可执行的指令操作信息的数据结构描述程序的操作和使用的文档 软件测试&#xff1a;使用技术手段来验证软件是否满足需求 软件质量&#xff1a; 满足软件需求&#xff0c;软件需求是度量软件质量的基础不…

尚医通 (十九)用户认证

目录一、对象存储OSS1、开通“对象存储OSS”服务2、创建Bucket3、上传默认头像4、创建RAM用户5、使用SDK二、后端集成OSS1、新建云存储微服务2、实现文件上传接口三、用户认证功能1、用户认证需求分析2、开发用户认证接口3、用户认证前端一、对象存储OSS 用户认证需要上传证件…

django项目实战二(django+bootstrap实现增删改查)进阶查询

目录 一、用例管理模块实现 1、创建表和数据 2、创建用例列表 1&#xff09;注册url&#xff08;用例列表&#xff09; 2)修改views.py新增case_list方法 3&#xff09;layout.html导航条新增一个用例管理 4&#xff09;新增case_list.html页面 3、新增用例页面开发 1&…

2023年TS4 入门笔记【慕课网imooc】【Vue3+React18 + TS4考勤系统】

目录 安装ts 基础 类型声明和变量声明 类型注解和类型判断 类型分类与联合类型与交叉类型​编辑 never类型与any类型与unknown类型 类型断言与非空断言 数组类型和元祖类型 对象类型与索引签名 函数类型与void类型 函数重载与可调用注解 枚举类型与const枚举 进阶…

机械革命黑苹果改造计划第四番-外接显示器、win时间不正确问题解决

问题 1.无法外接显示器 最大的问题就是目前无法外接显示器&#xff0c;因为机械革命大多数型号笔记本电脑的HDMI、DP接口都是直接物理接在独显上的&#xff0c;内屏用核显外接显示器接独显&#xff0c;英伟达独显也是黑苹果无法驱动的&#xff0c;而且发现机械革命tpyec接口还…

k8s的基础概念

目录 一、k8s概念 1、k8s是什么 2、为什么要用k8s 3、k8s的特性 二、kubernetes集群架构与组件 1、Master组件 1.1、Kube-apiserver 1.2、Kube-controller-manager 1.3、Kube-scheduler 2、配置储存中心 3、Node组件 3.1、Kubelet 3.2、Kube-Proxy 3.3、docker 或…

SAP S/4 HANA 现金流量表

S4 HANA中的现金流量表 引言&#xff1a;在传统SAP ECC中我们实现现金流量表的方式通常是定义一系列和现金流变动相关的原因代码&#xff08;Reason Code&#xff09;&#xff0c;然后在过账凭证里指定对应的Code&#xff0c;最后通过ABAP代码抓取这些数据产生现金流量表。此方…

力扣(LeetCode)417. 太平洋大西洋水流问题(2023.02.19)

有一个 m n 的矩形岛屿&#xff0c;与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界&#xff0c;而 “大西洋” 处于大陆的右边界和下边界。 这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights &#xff0c; heights[r][c]…

【pm2】pm2的安装与基本命令:

文章目录一、安装&#xff1a;二、基本命令&#xff1a;【1】启动命令&#xff1a;pm2 start app.js【2】命令行参数&#xff1a;pm2 start app.js --watch -i max【3】 查看有哪些进程&#xff1a;pm2 list【4】停止命令&#xff1a; pm2 stop app_name | app_id &#xff08;…

el-table 复杂表头行内增删改代码示例

效果如图 <template><div class"app-container"><el-card class"box-card item"><div slot"header" class"clearfix" click"showCondition !showCondition"><span><i class"el-ic…

外籍在读博士|赴新西兰奥克兰大学双院士导师麾下联合培养

N同学来自阿拉伯国家&#xff0c;但本硕博都是在我国某省属高校就读&#xff0c;现为材料学专业一年级博士生。联合培养首选澳洲国家&#xff0c;包括澳大利亚和新西兰&#xff0c;其次是美国&#xff0c;希望在2023年初出国&#xff0c;以完成整个学年的学习计划。在我们的帮助…

Android稳定性系列-01-使用 Address Sanitizer检测原生代码中的内存错误

前言想必大家曾经被各种Native Crash折磨过&#xff0c;本地测试没啥问题&#xff0c;一到线上或者自动化测试就出现各种SIGSEGV、SIGABRT、SIGILL、SIGBUS、SIGFPE异常&#xff0c;而且堆栈还是崩溃到libc.so这种&#xff0c;看起来跟我们的代码没啥关系&#xff0c;关键还不好…

Spark3每个job之间任务间隔过长

公司的跑批引擎从impala改成Spark3已经有一个多月了。 不得不说&#xff0c;跑批稳定了好多。资源控制有相对稳定了很多。Spark3比CDH的hive on spark2.4.0要快不少。AQE和CBO真的挺强的。但是使用中发现了一个很奇怪的事情。这个问题在网上搜过&#xff0c;并没有实际解决。 当…

【机器学习】决策树-ID3算法

1.ID3算法 ID3算法利用信息增益进行特征的选择进行树的构建。信息熵的取值范围为0~1&#xff0c;值越大&#xff0c;越不纯&#xff0c;相反值越小&#xff0c;代表集合纯度越高。信息增益反映的是给定条件后不确定性减少的程度。每一次对决策树进行分叉选取属性的时候&#x…

CANopen概念总结、心得体会

NMT网络管理报文&#xff1a; NMT 主机和 NMT 从机之间通讯的报文就称为 NMT 网络管理报文。常见报文说明&#xff1a; 0101---------------网络报文发送Nmt_Start_Node&#xff0c;让电机进入OP模式(此时还不会发送同步信号) setState(d, Operational)------------------开启…

拳打DALL-E 2脚踢Imagen,谷歌最新Muse模型刷新文本图像合成排行榜

原文链接&#xff1a;https://www.techbeat.net/article-info?id4501 作者&#xff1a;seven_ 论文链接&#xff1a; https://arxiv.org/abs/2301.00704 项目主页&#xff1a; https://muse-model.github.io/ 近期火爆AI社区的文本图像合成模型家族又添新成员了&#xff0c;之…

网络计划--时间参数的计算和优化

根据网络图的基本概念和原则绘制出网络图之后&#xff0c;我们可以计算网络图中有关的时间参数&#xff0c;主要目的是找出关键路线&#xff0c;为网络计划的优化、调整和执行提供明确的时间概念。如下图中从始点①到终点⑧共有4条路线&#xff0c;可以分别计算出每条路线所需的…