MobileViT v3论文超详细解读(翻译+精读)

news2024/11/29 0:30:51

前言 

今天读一下MobileViT v3的论文《MOBILEVITV3: MOBILE-FRIENDLY VISION TRANS-
FORMER WITH SIMPLE AND EFFECTIVE FUSION OF LOCAL, GLOBAL AND INPUT FEATURES》
这篇论文的实验部分写得还是很不错的,很值得我们借鉴。

论文原文:  https://arxiv.org/abs/2209.15159

源码地址:https://github.com/micronDLA/MobileViTv3

目录

前言 

ABSTRACT—摘要

一、INTRODUCTION—简介

二、RELATED WORK—相关工作

三、NEW MOBILEVIT ARCHITECTURE—新的移动端架构

3.1 MOBILEVITV3 BLOCK—MobileViTV3模块

(1)在融合块中用1x1卷积层替换3x3卷积层

(2)局部和全局特征融合

(3)融合输入端特征

(4)局部表征块中使用深度卷积层

3.2 SCALING UP BUILDING BLOCKS—模型构建块

四、 EXPERIMENTAL RESULTS—实验结果

4.1 IMAGE CLASSIFICATION ON IMAGENET1K—IMAGENET1K上的图像分类

4.1.1 IMPLEMENTATION DETAILS—实验细节

4.1.2 COMPARISON WITH MOBILEVITS—与之前MobileViT版本比较

4.1.3 COMPARISON WITH VITS—与ViT系列比较

4.1.4 COMPARISON WITH CNNS—与CNN系列比较

4.2 SEGMENTATION—分割

4.2.1 IMPLEMENTATION DETAILS—实验细节

4.2.2 RESULTS—结论

4.3 OBJECT DETECTION—目标检测

4.3.1 IMPLEMENTATION DETAILS—实验细节

4.3.2 RESULTS—结论

4.4 IMPROVING LATENCY AND THROUGHPUT—提高延迟和吞吐量

4.4.1 IMPLEMENTATION DETAILS—实验细节

4.4.2 RESULTS—结论

4.5 ABLATION STUDY OF OUR PROPOSED MOBILEVITV3 BLOCK—消融实验

4.5.1 IMPLEMENTATION DETAILS—实验细节

4.5.2 WITH 100 TRAINING EPOCHS—100轮Epoch的结果

4.5.3 WITH 300 TRAINING EPOCHS—300轮Epoch的结果

五、 DISCUSSION AND LIMITATIONS—结论和展望

 

ABSTRACT—摘要

翻译

        MobileViT(MobileViTv 1)结合了卷积神经网络(CNN)和视觉转换器(ViT),为移动视觉任务创建轻量级模型。虽然主MobileViTv 1块有助于实现具有竞争力的最新结果,但MobileViTv 1块内的融合块会带来扩展挑战,并且具有复杂的学习任务。我们提出了简单有效的融合块的变化,以创建MobileViTv 3块,它解决了缩放和简化学习任务。我们提出的MobileViTv 3-block用于创建MobileViTv 3-XXS,XS和S模型,在ImageNet-1 k,ADE 20 K,COCO和PascalVOC 2012数据集上优于MobileViTv 1。在ImageNet-1 K上,MobileViTv 3XXS和MobileViTv 3-XS分别超过MobileViTv 1-XXS和MobileViTv 1-XS 2%和1.9%。最近发布的MobileViTv 2架构去除了融合块,并使用线性复杂度变换器来执行比MobileViTv 1更好。我们将我们提出的融合块添加到MobileViTv 2中,以创建MobileViTv 3 - 0.5,0.75和1.0模型。与MobileViTv 2相比,这些新模型在ImageNet-1 k、ADE 20 K、COCO和PascalVOC 2012数据集上给予了更好的准确性。MobileViTv 3 -0.5和MobileViTv 3 -0.75在ImageNet-1 K数据集上的表现分别比MobileViTv 2 -0.5和MobileViTv 2 -0.75高出2.1%和1.0%。对于分割任务,MobileViTv 3 -1.0在ADE 20 K数据集和PascalVOC 2012数据集上的mIOU分别比MobileViTv 2 -1.0高2.07%和1.1%。我们的代码和经过训练的模型可在https://github.com/micronDLA/MobileViTv3上获得。


精读

主要内容:

(1)MobileViTv1的不足: 融合块造成复杂结构

(2)MobileViTv2较v1的改进: 删除了融合块,并使用线性复杂度的Transformer

(3)MobileViTv3主要思想: 提出一个更简单有效的融合块,将其添加到v2中

(4)主要成果: 提出了MobileViTv 3-XXS,XS和S模型和MobileViTv 3 - 0.5,0.75和1.0模型

(5)改进后效果: 在在ImageNet-1 k,ADE 20 K,COCO和PascalVOC 2012数据集上表现更好


一、INTRODUCTION—简介

翻译

       卷积神经网络(CNN)[如ResNet(He等人,2016)、DenseNet(Huang等人,2017)和EfficientNet(Tan & Le,2019)]被广泛用于视觉任务,例如分类,检测和分割,这是由于它们在Imagenet等已建立的基准数据集上的强大性能(Russakovsky等人,2019)。2015)、COCO(Lin等人,2014)、PascalVOC(Everingham等人,2015)、ADE 20 K(Zhou等人,2017)和其他类似数据集。当在通常资源受限的诸如移动的电话的边缘设备上部署CNN时,适合于这样的环境的轻量级CNN来自MobileNets模型家族(MobileNetvl、MobileNetv 2、MobileNetv 3)(霍华德等人,2019),ShuffleNets(ShuffleNetv1和ShuffleNetv2)(Ma et al.,2018年)和轻型版本的EfficientNet(Tan & Le,2019年)(EfficientNet-B 0和EfficientNet-B1)。与具有大参数和FLOP的模型相比,这些轻量级模型缺乏准确性。

       最近,视觉变换器(ViTs)已经成为CNN在这些视觉任务中的强大替代品。由于其架构设计,CNN与本地相邻像素/特征交互,以产生嵌入有本地信息的特征图。相比之下,ViTs中的自我注意机制与图像/特征图的所有部分相互作用,以产生具有嵌入其中的全局信息的特征。这已经被证明产生与CNN相当的结果,但是具有大量的预训练数据和先进的数据增强(Dosovitskiy等人,2020年)。此外,这种全局处理以大参数和FLOP为代价来匹配CNN的性能,如在ViT中所见(Dosovitskiy et al.2020),以及其不同版本如DeiTTouvron等人,2021)、SwinT(Liu等人,2021)、MViT(Fan等人,2021)、Focal-ViT(Yang等人,2021)、PVT(Wang等人,2021)、T2 T-ViT(Yuan等人,2021 b)、XCiT(Ali等人,2021年)。(Xiao例如,2021)表明ViT遭受对超参数(诸如优化器的选择、学习速率、权重衰减和缓慢收敛)的高敏感性问题。为了解决这些问题(Xiao等人,2021)提出在ViT中引入卷积层。

        许多最近的工作已经在ViT架构中引入了卷积层以形成混合网络,以提高性能,实现样本效率并使模型在参数和FLOP方面更有效,如MobileViT(MobileViTvl(Mehta & Rastegari,2021),MobileViTv 2(Mehta & Rastegari,2022)),CMT(Guo等人,2012年,2013年,2014年,2015年,2015年,202022)、CvT(Wu等人,2021)、PVTv 2(Wang等人,2022)、ResT(Zhang & Yang,2021)、MobileFormer(Chen等人,2022)、CPVT(Chu等人,2021)、MiniViT(Zhang等人,2022)、CoAtNet(Dai等人,2021)、CoaT(Xu等人,2021年a)。许多这些模型在ImageNet-1 K上的性能,以及参数和FLOP如图1所示。在这些模型中,只有MobileViT和MobileFormer是专门为移动设备等资源受限环境设计的。这两个模型实现了竞争力的性能相比,其他混合网络具有更少的参数和FLOPs。尽管这些小型混合模型对于移动的设备上的视觉任务至关重要,但在这方面的工作很少。

       我们的工作重点是改进一个名为MobileViTs的轻量级系列模型(MobileViTv 1(Mehta & Rastegari,2021)和MobileViTv 2(Mehta & Rastegari,2022))。与参数预算为600万(M)或更少的模型相比,MobileViTs在分类任务上通过简单的训练配方(基本数据增强)实现了具有竞争力的最先进结果。它还可以用作跨不同视觉任务(如检测和分割)的高效骨干。虽然只关注具有6 M或更少参数的模型,但我们提出了以下问题:是否有可能通过保持相似的参数和FLOP来改变模型架构以提高其性能?为此,我们研究了MobileViT-block架构的挑战,并提出了简单有效的方法来融合输入,本地(CNN)和全局(ViT)功能,从而在Imagenet-1 K,ADE 20 k,PascalVOC和COCO数据集上显着提高性能。

       我们提出了四个主要的变化MobileViTv 1块(三个变化w.r.t MobileViTv 2块),如图2所示。融合块中有三个变化:首先,3x 3卷积层被替换为1x 1卷积层。其次,局部和全局表示块的特征被融合在一起,而不是输入和全局表示块。第三,在生成MobileViT块的输出之前,将输入特征添加到融合块中作为最后步骤。第四个变化是在局部表示块,其中正常3x 3卷积层被深度3x 3卷积层替换。这些变化导致MobileViTv 1块的参数和FLOP减少,并允许缩放(增加模型的宽度)以创建新的MobileViTv 3-S,XS和XXS架构,其在分类(图1),分割和检测任务上优于MobileViTv 1。例如,MobileViTv 3-XXS和MobileViTv 3-XS在ImageNet-1 K数据集上使用相似的参数和FLOP时分别比MobileViTv 1-XXS和MobileViTv 1-XS好2%和1.9%。在MobileViTv 2中,不存在融合阻滞。我们提出的融合块中引入MobileViTv 2架构创建MobileViTv 3 -1.0,0.75和0.5架构。MobileViTv 3 -0.5和MobileViTv 3 -0.75分别比MobileViTv 2 -0.5和MobileViTv 2 -0.75高2.1%和1.0%,在ImageNet-1 K数据集上具有相似的参数和FLOP。


精读

之前研究的不足:

(1)轻量级CNN网络,如MobileNetvl-3、ShuffleNets和EfficientNet模型精确度不足

(2)ViT对超参数(诸如优化器的选择、学习速率、权重衰减和缓慢收敛)存在高敏感性

本文主要目的:

改进之前的MobileViT系列,使其在参数量更少的情况下精确度更高

本文主要改进:

首先,3x 3卷积层被替换为1x1卷积层

其次,局部和全局表征块的特征被融合在一起,而不是输入和全局表征块

第三,在生成MobileViT块的输出之前,将输入特征添加到融合块中作为最后步骤

第四,局部表征块中正常3x3卷积层被深度3x3卷积层替换

改进效果:

比v1参数和FLOP减少,和v2参数和FLOP相似(其实是比v2要多)

在ImageNet-1 K数据集上分类,分割和检测任务效果更好


二、RELATED WORK—相关工作

翻译

ViT:将用于自然语言处理任务的Transformer模型引入到视觉领域,特别是用于图像识别。后来,其不同版本如DeiT(Touvron等人,2021)通过引入新的训练技术和减少对大量预训练数据的依赖,提高了性能。专注于改善自我注意机制以提高性能的作品包括XCiT(Ali等人,2021)、SwinT(Liu等人,2021)、ViL(Zhang等人,2021)和Focal-transformer(Yang等人,2021年)。XCiT引入了互协方差注意,其中自我注意在特征通道上操作而不是令牌,并且交互基于密钥和查询之间的互协方差矩阵。SwinT修改了ViT,使其成为一个通用架构,可用于各种视觉任务,如分类,检测和分割。这是通过替换自注意机制与基于移位窗口的自注意,这允许模型适应不同的输入图像尺度,并通过实现与输入图像大小的线性计算复杂度关系来有效地做到这一点。ViL通过以多个尺度对图像进行编码来改进ViT,并且使用作为Longformer的变体的自注意机制(Beltagy等人,2020年)。最近的作品如T2 T-ViT(Yuan等人,2021 b)和PVT(PVTvl)(Wang等人,2021)还专注于通过降低每层之后输出的空间分辨率或令牌大小来引入类似CNN的分层特征学习。T2 T-ViT提出分层令牌到令牌转换,其中相邻令牌递归地聚合成一个令牌以捕获本地结构并减少令牌长度。PVT是一种金字塔视觉Transformer,它连续减小了特征图分辨率大小,降低了计算复杂度,并在ImageNet-1 K上实现了有竞争力的结果。很少有像CrossViT(Chen等人,2021)、MViT(Fan等人,2021)、MViTv 2(Li等人,2022)和Focal-transformer(Yang等人,2021)学习局部特征(具体地从相邻像素/特征/块学习的特征)和全局特征(使用所有像素/特征/块学习的特征)。焦点转换器用焦点自我注意代替自我注意,其中每个令牌能够以细粒度关注其最近的周围令牌,并且还可以以粗粒度关注远离令牌,捕获短距离和长距离视觉依赖。CrossViT分别处理小补丁和大补丁令牌,并通过多次注意力融合在一起以互补。MViT专为视频和图像识别而设计,学习多尺度金字塔特征,其中早期层捕获低层次的视觉信息,深层捕获复杂和高维特征。MViTv 2通过在其架构中结合位置嵌入和剩余池连接来进一步改进MViT。

CNN:ResNet(He等人,2016)是分类、分割和检测等视觉任务中使用最广泛的通用架构之一。ResNet架构,由于其剩余连接,有助于优化更深层,允许构建深度神经网络(deep CNN)。这些深度CNN能够在各种基准测试上实现最先进的结果。DenseNet(Huang等人,2017年)灵感来自ResNet,以前馈方式使用跳过连接将每一层连接到下一层。其他CNN如ConvNeXt(Liu等人,2022)、RegNetY(Radosavovic等人,2020)、SqueezeNet(Iandola等人,2016)和Inception-v3(Szegedy等人,2016年)也取得了竞争力最先进的性能。但是,性能最好的CNN模型通常在参数和FLOP的数量方面是高的。以更少的参数和FLOP实现有竞争力的性能的轻量级CNN包括EfficientNet(Tan & Le,2019)、MobileNetV 3(霍华德等人,2019)、ShuffleNetv 2(Ma等人,2018)和ESPNetv 2(Mehta等人,2019年)。EfficientNet研究了模型缩放并开发了一系列efficientnet模型,这些模型仍然是参数和FLOP方面最有效的CNN之一。MobileNetV 3属于专门为资源受限环境(如移动电话)开发的模型类别。MobileNetV 3架构的构建块使用MobileNetv 2(Sandler等人,2018)块和Squeeze-and-Excite(Hu等人,2018年,网络在其中。ShuffleNetv 2研究并提出了有效模型设计的指导方针,并产生了shufflenetv 2系列模型,这些模型也与其他轻量级CNN模型具有竞争力。ESPNetv 2使用深度扩展可分离卷积来创建EESP(极高效空间金字塔)单元,有助于减少参数和FLOP并实现竞争性结果。

混合:最近,提出了许多不同的模型,这些模型将CNN和ViT结合在一个架构中,以使用ViT的自注意机制捕获长距离依赖关系,并使用CNN中的本地内核捕获本地信息,以提高视觉任务的性能。MobileViT(MobileViTvl,MobileViTv 2)(Mehta & Rastegari,2021)和MobileFormer(Chen等人,2022)已经被专门设计用于像移动的设备这样的受限环境。MobileViTv 1和MobileViTv 2与参数预算为6 M或更少的型号相比,可实现最先进的结果。MobileFormer架构结合了MobileNetv 3和ViT,也实现了竞争结果。CMT(Guo等人,2022)架构在每个Transformer块之前具有卷积干、卷积层并且交替地堆叠卷积层和变换器层。CvT(Wu等人,2021)使用卷积令牌嵌入而不是ViT中使用的线性嵌入,以及利用这些卷积令牌嵌入来提高性能的卷积Transformer层块。PVTv 2(Wang等人,2022)相比于PVTvl,在变压器中使用卷积前馈层,重叠补丁嵌入和线性复杂度注意层以获得对PVT的改进。RestT(Zhang & Yang,2021)在自注意力中使用深度卷积(为了记忆效率)和补丁嵌入作为标记图上具有步幅的重叠卷积操作的堆栈。CoAtNet(Dai等人,2021)使用简单的相对注意力来统一深度卷积和自我注意力,还垂直堆叠卷积层和注意力层。PiT’s(Heo等人,2021)池化层使用深度卷积来实现空间减少以提高性能。LVT(Yang等人,2022)引入了卷积自注意力,其中在卷积核内引入了局部自注意力,并且还引入了递归自注意力以包含多尺度上下文以提高性能。ViTAE(Xu等人,2021 b)具有与多头自注意模块并行的卷积层,并且两者被融合并馈送到前馈网络,ViTAE也使用卷积层来将输入嵌入到令牌。CeiT(Yuan等人,2021 a)通过使用具有其他改变的深度卷积来引入局部增强的前馈,以实现有竞争力的结果。RVT(Mao等人,2022)使用卷积干生成补丁嵌入,并在Transformer中使用卷积前馈网络以实现更好的结果。


精读

  • ViT
  • CNN
  • 两者混合:MobileViT系列、MobileFormer系列、CvT、PVT、RestT、CoAtNet、LVT、ViTAE、CeiT和RVT等

这些不再细讲~


三、NEW MOBILEVIT ARCHITECTURE—新的移动端架构

3.1 MOBILEVITV3 BLOCK—MobileViTV3模块

(1)在融合块中用1x1卷积层替换3x3卷积层

翻译

在融合块中用1x1卷积层替换3x3卷积层:在融合中替换3x3卷积层存在两个主要动机。首先,融合局部和全局特征,独立于特征图中的其他位置,以简化融合块的学习任务。从概念上讲,3x3卷积层正在融合输入特征、全局特征以及存在于感受野中的其他位置的输入和全局特征,这是一项复杂的任务。融合块的目标可以通过允许其独立于特征图中的其他位置融合输入和全局特征来简化。为此,我们在融合中使用1x1卷积层而不是3x3卷积层。第二,是消除MobileViTv1架构扩展中的主要限制之一。将MobileViTv1从XXS扩展到S是通过改变网络的宽度并保持深度不变来完成的。改变MobileViTv1块的宽度(输入和输出通道的数量)会导致参数和FLOP数量的增加。例如,如果输入和输出声道在MobileViTvl块中加倍(2x),则到融合块内部的3x3卷积层的输入声道的数量增加4x并且输出声道增加2x,因为到3x3卷积层的输入是输入和全局表示块特征的级联。这导致MobileViTv1块的参数和FLOP的大幅增加。使用1x1卷积层避免了缩放时参数和FLOP的大幅增加。


精读

目的:

1.融合局部和全局特征,独立于特征图中的其他位置,以简化融合块的学习任务

2.消除MobileViTv1架构扩展中的主要限制之一,避免了缩放时参数和FLOP的大幅增加


(2)局部和全局特征融合

翻译

局部和全局特征融合:在融合层,从本地和全球表示块的功能连接在我们提出的MobileViTv3块,而不是输入和全球表示功能。这是因为与输入特征相比,局部表示特征与全局表示特征更紧密相关。局部表示块的输出通道略高于输入要素中的通道。这导致到融合块的1x1卷积层的输入特征映射的数量增加,但是由于3x3卷积层到1x1卷积层的改变,参数和FLOP的总数显著小于基线MobileViTv1块。


精读

v1的方法: v1是输入端和全局表征模块融合

v3的方法: v3是将局部表征模块和全局表征模块融合

原因:

  • 局部表征模块特征与全局表征模块特征更紧密相关

  • 局部表征块的输出通道略高于输入端的通道


(3)融合输入端特征

翻译

融合输入功能:输入特征被添加到融合块中的1x1卷积层的输出。ResNet和DenseNet等模型中的剩余连接已被证明有助于优化架构中的更深层。通过将输入功能添加到融合块中的输出,我们在新的MobileViTv3架构中引入了这种残余连接。表6中所示的消融研究结果表明,该残余连接有助于0.6%的准确度增益。


精读

方法: 输入特征被添加到融合块中的1x1卷积层的输出

启发: ResNet和DenseNet等模型中的剩余连接已被证明有助于优化架构中的更深层


(4)局部表征块中使用深度卷积层

翻译

局部表示块中的深度卷积层:为了进一步减少参数,局部表示块中的3x 3卷积层被深度3x 3卷积层替换。如消融研究结果表6所示,该变化对Top-1 ImageNet-1 K准确度增益没有很大影响,并提供了良好的参数和准确度权衡。


精读

方法: 局部表征块中的3x3卷积层被深度3x3卷积层替换

目的: 进一步减少参数


3.2 SCALING UP BUILDING BLOCKS—模型构建块

翻译

应用第3.1节中提出的更改,允许通过增加层的宽度(通道数量)来扩展我们的MobileViTv 3架构。表1示出了MobileViTv 3-S、XS和XXS架构,其每层中具有输出通道、缩放因子、参数和FLOP

精读


四、 EXPERIMENTAL RESULTS—实验结果

翻译

我们的工作在4.1节中使用ImageNet-1 K显示了分类任务的结果,在4.2节中使用ADE 20 K和PASCAL VOC 2012数据集显示了分割任务的结果,在4.3节中使用COCO数据集显示了检测任务的结果。我们还在第4.4节中讨论了对我们提出的MobileViTv 3架构的更改,以改善延迟和吞吐量。


精读

数据集

分类—ImageNet-1 K

分割—ADE 20 K和PASCAL VOC 2012

检测—COCO


4.1 IMAGE CLASSIFICATION ON IMAGENET1K—IMAGENET1K上的图像分类

4.1.1 IMPLEMENTATION DETAILS—实验细节

翻译

除了批次大小之外,用于MobileViTv 3-S、XS和XXS的超参数与MobileViTv 1相似,用于MobileViTv 3 -1.0、0.75和0.5的超参数与MobileViTv 2相似。由于资源限制,我们仅限于使用384个总批次大小(每个GPU 32个图像)用于MobileViTv 3-S和XS上的实验。为了保持批量的一致性,MobileViTv 3-XXS还接受了批量384的培训。MobileViTv 3 - 0.5、0.75和1.0训练使用的批量大小为1020(每个GPU 85个图像)。

MobileViTv 3-S、XS和XXS:MobileViTv 1使用的默认超参数包括使用AdamW作为优化器,多尺度采样器(S =(160,160),(192,192),(256,256),(288,288),(320,320)),学习率从0.0002增加到0.002,用于前3 K次迭代,然后使用余弦时间表退火到0.0002,L2权重衰减0.01,基本数据增强,即随机调整大小的裁剪和水平翻转。

MobileViTv 3 -1.0、0.75和0.5:MobileViTv 2使用的默认超参数包括使用AdamW作为优化器,批量采样器(S =(256,256)),学习率在前20 K次迭代中从1 e-6增加到0.002,然后使用余弦调度退火到0.0002,L2权重衰减0.05,高级数据增强,即随机调整大小的裁剪,水平翻转,随机增强,随机擦除,混合和剪切混合。使用单一作物top-1准确度评估性能,使用模型权重的指数移动平均值进行推断。所有分类模型都是在ImageNet-1 K分类数据集上从头开始训练的。该数据集包含分别用于训练和验证的1.28M和50 K图像。


精读

  • 超参数:MobileViTv 3-S、XS和XXS的超参数与MobileViTv 1相似;MobileViTv 3 -1.0、0.75和0.5的超参数与MobileViTv 2相似
  • batch size:MobileViTv 3-S、XS和XXS:384;MobileViTv 3 - 0.5、0.75和1.0:1020
  • 优化器:AdamW
  • 学习率:MobileViTv 3-S、XS和XXS前3 K次迭代:0.0002增加到0.002;MobileViTv 3 -1.0、0.75和0.5前20 K次迭代:从1 e-6增加到0.002
  • 余弦退火:MobileViTv 3-S、XS和XXS:0.0002;MobileViTv 3 -1.0、0.75和0.5:0.0002

  • L2权重衰减:MobileViTv 3-S、XS和XXS:0.01;MobileViTv 3 -1.0、0.75和0.5:0.05

  • 数据增强:MobileViTv 3-S、XS和XXS:基本数据增强,即随机调整大小的裁剪和水平翻转;MobileViTv 3 -1.0、0.75和0.5:高级数据增强,即随机调整大小的裁剪,水平翻转,随机增强,随机擦除,混合和剪切混合


4.1.2 COMPARISON WITH MOBILEVITS—与之前MobileViT版本比较

翻译

表2表明,所有版本的MobileViTv 3的性能超过MobileViTv 1和MobileViTv 2版本,具有相似的参数和FLOP以及较小的训练批量大小。训练批次大小对MobileViTv 3的影响也在表2中示出。将总批次大小从192增加到384提高了MobileViTv 3-S、XS和XXS模型的准确性。这表明在MobileViTv 3-XXS、XS和S型号上批量大小为1024的情况下,有可能进一步提高准确性。同样重要的是要注意,使用基本数据增强训练的MobileViTv 3-S,XS和XXS模型不仅优于MobileViTv 1-S,XS,XXS,而且还超过了使用高级数据增强训练的MobileViTv21.0,0.75和0.5的性能。MobileViTv 3 -1.0、0.75和0.5的图像大小微调为384,也优于MobileViTv 2 -1.0、0.75和0.5的微调版本。


精读

表2:MobileViT V1,V2和V3在Top-1 ImageNet-1 k精度,参数和操作方面的比较。

结论:表2表明,所有版本的MobileViTv 3的性能超过MobileViTv 1和MobileViTv 2版本 


4.1.3 COMPARISON WITH VITS—与ViT系列比较

翻译

图1比较了我们提出的MobileViTv 3模型与其他ViT变体和混合模型的性能。在MobileViTv 1之后,我们主要比较参数预算在6 M左右或更少的模型。此外,当与大于6 M参数的模型进行比较时,我们将FLOP预算限制为2 GFLOP或更少,因为我们在这项工作中的最大模型具有2 GFLOP。

200万参数下的模型:据我们所知,只有MobileViT变体存在于此范围内。MobileViTv 3-XXS和MobileViTv 3 -0.5的性能优于其他MobileViT变体。MobileViTv 3 -0.5到目前为止在1-2百万参数预算模型(ViT或混合)中达到了72.33%的最佳准确度。

2-4百万参数之间的模型:MobileViTv 3-XS和MobileViTv 3 -0.75的性能优于该系列的所有型号。MobileViTv 3-XS在ImageNet-1 k上的Top-1准确率为76.7%,比Mini-DeiT-Ti高3.9%(Zhang et al.2022),比XCiT-N12高4.5%(Ali等人,2021),并且比PVTv 2-B 0高6.2%(Wang et al.2022年)。虽然Mobile-Former-53 M(Chen等人,2022年)仅使用53 GFLOP,它在准确性方面落后于MobileViTv 3-XS的12.7%。

4-8百万参数之间的模型:MobileViTv 3-S在此参数范围内达到最高精度。具有简单训练配方和300个epoch的MobileViTv 3-S比使用蒸馏,高级数据增强和400个epoch训练的XCiT-T12好0.7%。是1.8%,2.6%并且比Coat-Lite-Tiny好2.9%(Xu等人,2021 a)、ViL-Tiny-RPB(Zhang等人,2021)和CeiT-Ti(Yuan等人,2021a)。与CoaT-Tiny相比,MobileViTv 3-S在0.5x FLOP和类似参数下好1%(Xu等人,2021年a)。

超过800万个参数的模型:我们还将我们设计的模型与现有模型进行了比较,这些模型具有超过8 M的参数和大约2 GFLOPs。当与使用基本数据增强和300个epoch训练的MobileViTv 3-S相比时,CoaT-Lite-Mini实现了79.1%的竞争准确度,参数增加了2倍,类似的FLOP和高级数据增强,MobileFormer-508 M实现了79.3%的相似准确度,参数增加了2.5倍,FLOP减少了3.5倍,高级数据增强和450个训练epoch。Rest-Small(Zhang & Yang,2021)实现了79.6%的相似准确度,参数增加了2.5倍,类似的FLOP和高级数据增强。PVTv 2-B1(Wang等人,2022年)达到78.7%,参数增加了2.3倍,FLOP相似,数据增强先进。CMT-Ti(Guo等人,2022年)实现了79.1%,参数增加了1.6倍,FLOPs减少了2.9倍(由于输入图像大小为160 x160)和高级数据增强。


精读

图1:比较ImageNet-1 K数据集上MobileViTv 3,ViT变体和混合模型的Top-1准确度。

结论:

  • 200万参数下的模型:MobileViTv 3-XXS和MobileViTv 3 -0.5的性能优于其他MobileViT变体
  • 2-4百万参数之间的模型:MobileViTv 3-XS和MobileViTv 3 -0.75的性能优于该系列的所有型号
  • 4-8百万参数之间的模型:MobileViTv 3-S在此参数范围内达到最高精度
  • 超过800万个参数的模型:MobileViTv 3-S参数量小,精确度高

4.1.4 COMPARISON WITH CNNS—与CNN系列比较

翻译

图3将我们提出的模型与CNN模型进行了比较,CNN模型是轻量级的,参数预算为6M或更少,类似于MobileViTv 1(Mehta & Rastegari,2021)。

1-2百万参数范围内的模型:MobileViTv 3 -0.5和MobileViTv 3-XXS分别为72.33%和70.98%,是该参数范围内的最佳准确度。与MobileNetv 3-small(0.5)相比,MobileViTv 3 -0.5实现了超过2.5%的改进(霍华德等人,2019)、MobileNetv 3small(0.75)、ShuffleNetv 2(0.5)(Ma等人,2018)、ESPNetv 2 - 28 M(Mehta等人,2019)、ESPNetv 286 M和ESPNetv 2 - 123 M。

具有2-4百万个参数的模型:与MobileNetv 3-Large(0.75)、ShuffleNetv 2(1.5)、ESPNetv 2 - 284 M和MobileNetv 2(0.75)相比,MobileViTv 3-XS的性能提高了4%以上。

4-8百万参数的模型:MobileViTv 3-S的准确率比EfficientNet-B 0(Tan & Le,2019),MobileNetv 3-Large(1.25),ShuffleNetv 2(2.0),ESPNetv 2 - 602 M和MobileNetv 2(1.4)提高了2%以上。EfficientNet-B1的参数增加了1.3倍,FLOPs减少了2.6倍,准确率达到了79.1%,而MobileViTv 3-S的准确率为79.3%。


精读

图3:MobileViTv 3模型与ImageNet-1 K数据集上现有轻量级CNN模型之间的前1精度比较。

结论:

  • 1-2百万参数范围内的模型:MobileViTv 3 -0.5和MobileViTv 3-XXS是该参数范围内的最佳准确度
  • 2-4百万个参数的模型:MobileViTv 3-XS的性能提高了4%以上
  • 4-8百万参数的模型:MobileViTv 3-S的准确率比同等范围参数的模型提高了2%以上

4.2 SEGMENTATION—分割

4.2.1 IMPLEMENTATION DETAILS—实验细节

翻译

PASCALVOC 2012数据集:继MobileViTvl之后,MobileViTv 3与DeepLabv 3集成(Chen et al.2017)用于PASCAL VOC 2012数据集上的分割任务(Everingham等人,2015年)。额外的注释和数据来自(Hariharan et al.2011)和(Lin等人,2014),这是用于在PascalVOC 2012数据集上训练的标准实践(Chen等人,2017);(Mehta等人,2019年)。对于MobileViTv 3-S、XS和XXS,除了批量大小之外,训练超参数与MobileViTv 1相似。与MobileViTv 1的128(每个GPU 32个图像)相比,使用了较小的批量大小48(每个GPU 12个图像)。其他默认超参数包括,使用adamw作为优化器,权重衰减0.01,余弦学习率调度器,交叉熵损失和50个训练时期。对于MobileViTv 3 -1.0、0.75和0.5,所有超参数保持与MobileViTv 2 -1.0、0.75和0.5训练相同。默认超参数包括使用adamw作为优化器,权重衰减为0.05,余弦学习率调度器,交叉熵损失和50 epochs训练。在验证集上评价分割性能,并使用平均交集对并集(mIOU)进行报告。

ADE 20 K数据集(Zhou等人,2019):包含总共25 K图像,150个语义类别。在25 K图像中,20 K图像用于训练,3 K图像用于测试,2K图像用于验证。MobileViTv 2模型与MobileViTv 3 - 1.0、0.75和0.5模型使用相同的训练超参数。训练超参数包括使用SGD作为优化器,1 e-4的权重衰减,0.9的动量,余弦学习速率调度器,120个epoch训练,交叉熵损失,批量大小16(每个GPU 4个图像)。在验证集上评价分割性能,并使用平均交集对并集(mIOU)进行报告。


精读

PASCALVOC 2012数据集:

  • 超参数:MobileViTv 3-S、XS和XXS:除了批量大小之外,训练超参数与MobileViTv 1相似;MobileViTv 3 -1.0、0.75和0.5:所有超参数保持与MobileViTv 2 -1.0、0.75和0.5训练相同
  • 优化器:Adamw
  • 权重衰减:MobileViTv 3-S、XS和XXS:0.01;MobileViTv 3 -1.0、0.75和0.5:0.05

ADE 20 K数据集:

  • 超参数:MobileViTv 2模型与MobileViTv 3 - 1.0、0.75和0.5模型使用相同的训练超参数
  • 优化器:SGD
  • 权重衰减:1 e-4
  • 动量:0.9
  • epoch:120
  • 批量大小:16

4.2.2 RESULTS—结论

翻译

PASCAL VOC 2012数据集:表3a展示了具有48的较低训练批量大小的MobileViTv 3模型,其优于在128的较高批量大小上训练的MobileViTvl和MobileViTv 2的相应对应模型。MobileViTv 3 -1.0实现了80.04% mIOU,比MobileViTv 2 -1.0高出1.1%。MobileViTv 3-XS比MobileViTv 1XS好1.6%,MobileViTv 3 -0.5比MobileViTv 2 -0.5高1.41%。ADE 20 K数据集:表3b显示了MobileViTv 3 -1.0、0.75和0.5模型在ADE 20 K数据集上的结果。MobileViTv 3 -1.0、0.75和0.5型号的表现分别优于MobileViTv 2 -1.0、0.75和0.5型号2.07%、1.73%和1.64%。


精读

表3:比较PASCAL VOC 2012和ADE 20 K数据集上的MobileViTv 3分割任务结果。

结论:

  • 在PASCAL VOC 2012数据集上,MobileViTv 3优于在128的较高批量大小上训练的MobileViTvl和MobileViTv 2的相应对应模型
  • 在ADE 20 K数据集上,MobileViTv 3 -1.0、0.75和0.5的表现分别优于MobileViTv 2对应型号

4.3 OBJECT DETECTION—目标检测

4.3.1 IMPLEMENTATION DETAILS—实验细节

翻译

使用具有117 K训练和5 K验证图像的MS-COCO数据集来评估MobileViTv 3模型的检测性能。类似于MobileViTvl,我们将预训练的MobileViTv 3集成为单发检测网络(SSD)中的骨干网络(Liu等人,2016),并且SSD头中的标准卷积被替换为可分离卷积以创建SSDLite网络。SSDLite也被其他轻量级CNN用于评估检测任务的性能。此SSDLite具有预训练的MobileViTv 3 -1.0、0.75和0.5,在MS-COCO数据集上进行了微调。用于训练MobileViTv 3 -1.0、0.75和0.5的超参数与MobileViTv 2 -1.0、0.75和0.5保持相同。默认超参数包括使用输入大小为320 x 320的图像、AdamW优化器、权重衰减为0.05、余弦学习速率调度器、总批量大小为128(每个GPU 32张图像)、平滑L1和交叉熵损失分别用于对象定位和分类。MobileViTv 3-S、XS和XXS的训练超参数与MobileViTv 1-S、XS和XXS保持相同。默认超参数包括使用输入分辨率为320 x 320的图像、AdamW优化器、权重衰减为0.01、余弦学习速率调度器、总批量大小为128(每个GPU 32张图像)、平滑L1和交叉熵损失分别用于对象定位和分类。使用0.50:0.05:0.95度量的mAP@IoU对验证集进行性能评估。


精读

  • 数据集:MS-COCO
  • 超参数:MobileViTv 3 -1.0、0.75和0.5的超参数与MobileViTv 2 -1.0、0.75和0.5保持相同;MobileViTv 3-S、XS和XXS的训练超参数与MobileViTv 1-S、XS和XXS保持相同
  • 优化器:AdamW
  • 权重衰减:MobileViTv 3 -1.0、0.75:0.05;MobileViTv 1-S、XS和XXS:0.01
  • 总批量大小:128

4.3.2 RESULTS—结论

翻译

表4a和4b示出了COCO数据集的检测结果。MobileViT模型的# params仅指示编码器/骨干架构的参数的数量。MobileViTv 3与其他轻型CNN模型的比较示于表4a中。MobileViTv 3-XS的表现比MobileViTv 1-XS高0.8%,比MNASNet高2.6%。与表4 b中详述的重质CNN的比较。MobileViTv 3-XS和MobileViTv 3 -1.0分别超过MobileViTv 1-XS和MobileViTv 2 -1.0 0.8%和0.5% mAP。


精读

表4a和4b表示COCO数据集的检测结果。

结论:

MobileViTv 3-XS的表现比MobileViTv 1-XS高0.8%,比MNASNet高2.6%

MobileViTv 3-XS和MobileViTv 3 -1.0分别超过MobileViTv 1-XS和MobileViTv 2 -1.0 0.8%和0.5% mAP


4.4 IMPROVING LATENCY AND THROUGHPUT—提高延迟和吞吐量

4.4.1 IMPLEMENTATION DETAILS—实验细节

翻译

实施细节:我们使用GeForce RTX 2080 Ti GPU获取延迟时间。结果在10000次迭代上平均。定时结果可能变化±0.1 ms。XXS、XS和S的吞吐量在1000次迭代中计算,批量大小为100。表5中的“块”表示MobileViTv3架构(表1)的“层4”中的MobileViTv3块的数量。为了改善延迟,我们将“layer4”中的MobileViT块的数量从4减少到2。


精读

  • 硬件设备:GeForce RTX 2080 Ti GPU
  • epoch:10000
  • 批量大小:100

4.4.2 RESULTS—结论

翻译

结果:表5示出了延迟和吞吐量结果。MobileViTv 3-XXS,参数和FLOP与基线MobileViTv 1-XXS相似沿着准确度提高1.98%,实现了类似的7.1ms的延迟。MobileViTv 3-XXS具有两个MobileViT块而不是四个,FLOP减少了30%,实现了6.24 ms的延迟,比基线MobileViTv 1-XXS快了1 ms。在MobileViTv 3-XS和MobileViTv 3-S架构中进行了类似的更改,FLOP分别减少了13.5%和17.82%,延迟分别减少了1 ms和0.7 ms。


精读

表5显示了延迟和吞吐量结果。

结论:

在MobileViTv 3-XS比MobileViTv 3-SFLOP和延迟都减少了


4.5 ABLATION STUDY OF OUR PROPOSED MOBILEVITV3 BLOCK—消融实验

4.5.1 IMPLEMENTATION DETAILS—实验细节

翻译

我们研究了四个拟议的变化对MobileViTv 1-S块的影响,通过添加一个接一个的变化。所有四个变化的最终模型是我们的未缩放版本,我们将其命名为:MobileViTv 3-S(未缩放)。为了匹配MobileViTv 1的参数数量,我们增加MobileViTv 3-S的宽度(未缩放),得到MobileViTv 3-S。记录每个变更在ImageNet-1 K上排名前1的准确度,并与其他提议的变更进行比较。在这项消融研究中,我们训练了100个epoch的模型,使用192的批量大小(每个GPU 32张图像),其他超参数是默认的,如第4.1.1节所示。我们的工作中所有建议的变化应用在MobileViTv 1块,这是由局部表示,全局表示和融合块组成。在表6中,‘conv-3x 3’表示融合块中的3x 3卷积层,‘conv-1x 1’表示融合块中的1x 1卷积层,‘Input-Concat’表示将输入特征与融合块中的全局表示级联,‘Local-Concat’表示将局部表示块输出特征与融合块中的全局表示级联。“InputAdd”表示将输入特征添加到融合块的输出,“DWConv”表示在局部表示块中使用深度卷积层而不是正常卷积层,“Top-1”表示ImageNet-1 K数据集上的Top-1准确度。


精读

  • epoch:100
  • 数据集:ImageNet-1 K
  • 批量大小:192

4.5.2 WITH 100 TRAINING EPOCHS—100轮Epoch的结果

翻译

结果示于表6中。基线MobileViTv 1-S,在融合块中,将输入特征与全局表示块特征连接,并使用3x 3卷积层。此外,它在局部表示块中使用正常的3x 3卷积层。该基线达到73.7%的准确度。在融合块中用1x 1卷积层取代3x 3卷积,MobileViTv 3S(未缩放)实现了1.1%的改进。该结果支持以下假设:简化融合块的任务(允许融合层独立于其他位置的局部和全局特征来融合局部和全局特征)应有助于优化以获得更好的性能。与融合块中的1x 1卷积层一起,级联本地表示特征而不是输入特征导致与级联输入特征相比1%的类似性能增益。这允许我们合并下一个变化,即,将输入特征添加到融合块的输出,以创建剩余连接,以帮助优化模型中的更深层。通过这一变更,MobileViTv 3-S(未缩放)获得了比基线MobileViTv 1-S 1.6%的精度增益,比上一次变更获得了0.6%的增益,证明了这种剩余连接的明显优势。为了进一步减少MobileViTv 3块中的参数和FLOP的数量,在局部表示块中使用深度方向卷积层而不是普通卷积层。MobileViTv 3-S(未缩放)通过在基线上实现1.3%的增益来保持高精度增益。与之前的变更相比,可以观察到0.3%的准确度下降。我们采用此更改,因为它减少了参数和FLOP,而不会显著影响性能,并有助于MobileViTv 3块的扩展。


精读

表6:MobileViTv3的消融研究

结论:

MobileViTv 3-S(未缩放)获得了比基线MobileViTv 1-S 1.6%的精度增益,比上一次变更获得了0.6%的增益


4.5.3 WITH 300 TRAINING EPOCHS—300轮Epoch的结果

翻译

当训练300个epoch,批量大小为192时,基线MobileViTv 1-S达到了75.6%的Top1准确率,与在1024批量大小上训练的MobileViTv 1-S上报告的准确率相比低2.8%。结果示于表7中。在MobileViTv 1-S架构中实现所有四个提议的改变以形成MobileViTv 3-S(未缩放)的情况下,模型达到了77.5%的Top-1准确度,比基线高出1.9%,参数FLOP分别少22.7%和18.6%。

MobileViTv 3-S(未缩放)架构虽然比训练批量大小为192的基线MobileViTv 1-S更好,但比以1024的批量大小训练的MobileViTv 1-S表现更差。因此,MobileViTv 3-S、XS和XXS模型被缩放以具有与MobileViTv 1-S、XS和XXS相似的参数和FLOP,并且以384的批量进行训练。表7表明,在缩放之后,MobileViTv 3-S能够通过在类似的参数和FLOP下实现79.3%的准确度来优于MobileViTv 1-S。表2显示,MobileViTv 3-XS和XXS也能够在类似参数和FLOP的情况下分别超过MobileViTv 3-XS和XXS性能1.9%和2.0%。


精读

表7:MobileViTv 3-S(未缩放)、MobileViTv 1-S和MobileViTv 3-S Top-1 ImageNet-1 K准确度比较。

MobileViTv 3-S(未缩放)的情况下,模型达到了77.5%的Top-1准确度,比基线高出1.9%,参数FLOP分别少22.7%和18.6%。


五、 DISCUSSION AND LIMITATIONS—结论和展望

翻译

这项工作是努力提高性能的模型,如移动的电话的资源受限的环境。我们研究了减少内存(参数)、计算(FLOP)、延迟,同时提高准确性和吞吐量。通过对MobileViT模块的拟议更改,我们实现了更高的准确性,具有与基线MobileViTv1和v2相同的内存和计算,如第4.1节所示。表2显示了微调结果,其性能也优于微调MobileViTv2模型。第4.4节展示了如何在对模型准确性的影响最小的情况下实现更好的延迟和吞吐量。虽然MobileViTv3与其他移动CNN相比具有更高的准确性和更低或类似的参数,但其更高的FLOP对于边缘设备可能是一个问题(图3)。MobileViTv3架构的这种限制是从ViTs的自我注意模块继承的。为了解决这个问题,我们将进一步探索自我注意块的优化。

表2显示Imagenet-1 K的结果。在Imagenet-1 K上报告的MobileViTv 3-XXS,XS和S模型的准确性可以通过将训练批次大小增加到1024来进一步提高,类似于基线模型。本文中所示的输入特征、局部特征(CNN特征)和全局特征(ViT特征)的建议融合也可以在其他混合架构中探索。


精读

本文主要工作就是在MobileViTv1和v2的基础上,做了以下四个改进:

(1)融合块中用1x1卷积层替换3x3卷积层

(2)全局和局部特征融合

(3)融合输入端特征

(4)在融合模块中将一般卷积变成了深度可分离卷积

最后MobileViTv3提高准确性和吞吐量。

展望:将继续研究MobileViTv3架构的这种限制是从ViTs的自我注意模块继承的。


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

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

相关文章

迷茫

作者:阿秀 InterviewGuide大厂面试真题网站:https://top.interviewguide.cn 小伙伴们大家好,我是阿秀。 过去几年转码之风盛行,有些是通过报考培训班的形式转行,还有一些则是通过考研读研转码这种形式来转行&#xff0…

【Java 基础篇】Java Calendar 类:日期和时间处理指南

在 Java 中,日期和时间的处理是常见的任务之一。为了更灵活地处理日期和时间,Java 提供了 java.util.Calendar 类,它提供了一种面向对象的方式来操作日期和时间。本篇博客将详细介绍 Calendar 类的使用方法,特别是面向基础小白的读…

右值引用,移动语义,完美转发

文章目录 一、什么是左值、右值二、什么是左值引用、右值引用2.1 左值引用2.2 右值引用2.3 对左右值引用本质的讨论 三、右值引用和std::move使用场景3.1 右值引用优化性能,避免深拷贝浅拷贝重复释放深拷贝构造函数移动构造函数 3.2 移动语义(move&#…

js案例:选字游戏

目录 效果预览图 游戏规则 整体思路 完整代码 html部分 js部分 效果预览图 游戏规则 1.游戏时间为30s,30s倒计时结束弹出游戏结束和对应的游戏分数。 2.根据中间大字的颜色,点击下面对应的文字。 大字的颜色 点击的文字(列如&#…

外汇MT4教程:如何下载和安装MT4交易平台?

对于外汇爱好者来说,MT4交易平台是一个不可或缺的工具。如果您是新手,可能还不太了解如何下载和安装MT4交易平台。本文将为您介绍如何下载和安装MT4交易平台,以及如何使用它进行外汇交易。 第一步:下载MT4交易平台 首先您需要前往…

一款内网信息收集利用工具

FuckDomainMini 简介 这是一款基于java开发Windows的内网信息收集、利用工具 可以节省您的信息收集所花费的,又或者是做免杀所花费的时间 现在这个版本是先行版本,目前先行版只有一个功能,更多的功能还在调试与开发中。 尽情期待&#x…

成都瀚网科技有限公司:抖音商家怎么免费入驻?

随着抖音成为全球最受欢迎的短视频平台之一,越来越多的商家开始关注抖音上的商机。抖音商家的进驻可以帮助商家扩大品牌影响力和销售渠道。那么,如何免费进入抖音成为商家呢?下面就为大家介绍一下具体步骤。 1、抖音商家如何免费注册&#xf…

一元多项式

过程 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<map> #include<vector> #include<queue> #include<algorithm> using namespace std;int n;double cP(const vector<double>& a, double x…

【Java 基础篇】Java日期和时间格式化与解析指南:SimpleDateFormat详解

日期和时间在软件开发中经常被用到&#xff0c;无论是用于记录事件、计算时间间隔还是格式化日期以供用户友好的展示。Java 提供了强大的日期和时间处理工具&#xff0c;其中 SimpleDateFormat 类是一个重要的工具&#xff0c;用于格式化日期和时间&#xff0c;同时也支持解析日…

【Apollo 自动驾驶】Win11 中 WSL2 安装配置 Apollo 环境

【Apollo 自动驾驶】Win11 中 WSL2 安装配置 Apollo 环境 【1】Win11 WSL2 安装配置 Nvidia Cuda 【1.1】检查计算机硬件的显卡信息 计算机图标右击 -> 管理 -> 设备管理器 -> 显示适配器&#xff1b; 【1.2】检查对应显卡并安装 Nvidia 显卡驱动 下载对应的 Nv…

C#winform导出DataGridView数据到Excel表

前提&#xff1a;NuGet安装EPPlus&#xff0c;选择合适的能兼容当前.net framwork的版本 主要代码&#xff1a; private void btn_export_Click(object sender, EventArgs e) {SaveFileDialog saveFileDialog new SaveFileDialog();saveFileDialog.Filter "Excel Files…

Mybatis传参parameterType方法汇总记录

这里分别记录使用过的七种传参方式&#xff1a; 1、在入参只有一个的情况下,Mapper.java中直接传即可 2、而在参数有两三个的情况下,Mapper.java中可以用Param注解来指定入参 程序就知道哪个参对应拼接完SQL的哪个条件字段 并且Mapper.xml中parameterType不用去指定&#xff…

解决eNSP和HCL Cloud兼容性的问题

问题&#xff1a;eNSP或HCL无法启动 不兼容的原因&#xff1a;eNSP支持Virtual Box是5.2.44&#xff1b;HCL支持的Virtual Box版本是6.0.14 解决方案&#xff1a;注册表欺骗 再进行重新安装前先把之前的都卸载掉&#xff1a;eNSP、VirtualBox、HCL等 1、先安装Virtual Box 5.…

JS中call(),apply()是什么,call(),apply()的原理是什么?如何手写一个call(),apply()?Symbol是什么,怎么用Symbol调优?含详细解析

&#x1f389;call() &#x1f495;call()的参数 thisArg&#xff1a;在调用 func 时要使用的 this 值 arg1, …, argN &#xff08;可选&#xff09; 函数的参数 ✨call()的描述&#xff1a; 首先声明 func是一个函数&#xff0c;person是一个对象 针对这段代码&#xff1a;f…

python中如何使用正则表达匹配\本身?(文末赠书)

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 将军向宠&#xff0c;性行淑均。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python钻石群【空】问了一个Python正则表达式的问题&#xff0c;一起…

CSS笔记(黑马程序员pink老师前端)定位

定位可以让盒子自由的在某个盒子内移动位置或者固定在屏幕中某个位置&#xff0c;并且可以压住其他盒子。 定位 定位模式 边偏移 定位模式说明static静态定位,按标准流特性摆放,没有边偏移,很少用relative相对定位,相对自身原有位置移动,原有位置继续占有&#xff08;不脱标…

《好笑的爱》阅读笔记

《好笑的爱》阅读笔记 是暑期认识的一位川大的同学推荐的&#xff0c;说他喜欢的一个作家是米兰昆德拉&#xff0c;喜欢他的短篇小说集《好笑的爱》。于是去武汉中心书城顺便买了两本书&#xff0c;另外还买了一本是《帷幕》&#xff0c;至今还没有看。 这本书总共包含了几篇短…

JDK8的 ConcurrentHashMap 源码分析

目录 1. 导读 2. ConcurrentHashMap 成员变量解读 3. ConcurrentHashMap 初始化 3.1 ConcurrentHashMap 无参构造源码解读 3.2 ConcurrentHashMap 带参构造源码解读 3.3 tableSizeFor 方法作用解读 3.4 ConcurrenthashMap初始化总结 4. ConcurrentHashMap 添加元素方法…

14 - 多线程之锁优化(下):使用乐观锁优化并行操作

前两讲讨论了 Synchronized 和 Lock 实现的同步锁机制&#xff0c;这两种同步锁都属于悲观锁&#xff0c;是保护线程安全最直观的方式。 我们知道悲观锁在高并发的场景下&#xff0c;激烈的锁竞争会造成线程阻塞&#xff0c;大量阻塞线程会导致系统的上下文切换&#xff0c;增…

springBoot-使用idea创建项目添加依赖并实现数据查询

一、使用idea创建springBoot项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://mave…