Mobile net V系列详解 理论+实战(1)

news2024/9/19 13:39:04

请添加图片描述

Mobilenet 系列

  • 论文精讲部分
    • 0.摘要
    • 1. 引文
    • 2. 引文
    • 3. MobileNet 模型架构
      • 3.0 卷积个人理解
      • 3.1 深度可分离卷积
      • 3.2 网络结构和训练
      • 3.3 宽度乘数:更细的模型 α
      • 3.4 分辨率乘数:降低表示的维度ρ
    • 4. 实验
      • 4.1 模型选择
      • 4.2. 模型缩减超参数
      • 4.3. 细粒度识别
      • 4.4. 大规模地理定位
      • 4.5. 脸部属性
      • 4.6. 物体检测

论文精讲部分

通过引文格式标注自己对当前部分的理解,可能存在歧义各位酌情理解。当前章节为论文呢部分下一小节为代码实战。

0.摘要

我们提出了一类高效的模型,称为 MobileNets,用于移动和嵌入式视觉应用。MobileNets 基于一个精简的架构,该架构使用深度可分离卷积来构建轻量级的深度神经网络。 我们引入了两个简单的全局超参数,这些超参数有效地在延迟和准确率之间进行权衡。这些超参数允许模型构建者基于问题的约束来选择适合其应用的正确大小模型。我们提供了关于资源和准确率权衡的广泛实验,并展示了与其他流行模型在 ImageNet 分类上的强劲性能比较。随后,我们展示了 MobileNets 在包括对象检测、细粒度分类、面部特征和大规模地理定位等广泛应用和用例中的有效性。

摘要简述,其模型应用落地场景移动嵌入式,主要是强调其实际应用能力,作为一种精简架构其性能主要来源于亮点。

  • 通过深度可分离卷积实现的参数减少。
  • 引入全局超参数实现的整体参数量和性能的平衡。

1. 引文

自从AlexNet 在 ImageNet 挑战赛:ILSVRC 2012 中夺冠后,深度卷积神经网络就在计算机视觉领域变得无处不在。普遍的趋势是为了达到更高的准确性而构建更深、更复杂的网络。然而,这些为了提高准确性而做出的进步,并不一定让网络在大小和速度方面变得更高效。在许多现实世界应用中,比如机器人、自动驾驶汽车和增强现实中,识别任务需要在计算能力有限的平台上及时进行。
本文描述了一种高效的网络架构以及一组两个超参数,以便构建非常小巧、低延迟的模型,这些模型能够轻松匹配移动和嵌入式视觉应用的设计需求。第 2 节回顾了构建小型模型的先前工作。第 3 节描述了 MobileNet 架构和两个超参数 —— 宽度乘子和分辨率乘子,用以定义更小、更高效的 MobileNets。第 4 节描述了在 ImageNet 以及各种不同应用和使用情景中的实验。第 5 节以总结和结论结束。

论文的传统艺能辣菜Alex传统卷积网络就是单纯的参数增加嘛,其本质是证明了参数上升带来的性能提升,在那个GPU不行的年代通过两个显卡巧妙的证明了参数提升带来性能提升的可行性,你很行但是你复杂你参数多,在学术能力上强,但是你不实用,再次强调有两个牛逼的超参数用来控制参数的整体规模,然后介绍一下文章整体结构。
AlexNet 的设计通过利用两个 GPU 并行处理来克服硬件资源的限制,其本质上仍然是一个统一的卷积神经网络(CNN)。这种并行处理的策略允许模型具有更多的参数和更深的网络结构,从而能够学习到更加复杂和抽象的特征表示,这直接带来了性能上的显著提升

2. 引文

近期的文献中越来越重视构建小而高效的神经网络,例如 [16, 34,12, 36, 22]。许多不同的方法可以大致分为两类:压缩预训练网络或直接训练小型网络。本文提出了一类网络架构,允许模型开发者特定选择一个符合他们应用的资源限制(延迟、大小)的小型网络。 MobileNets 主要关注优化延迟,但也产生了小型网络。许多关于小型网络的论文仅关注大小,而没有考虑速度。
MobileNets 主要由最初在 [26] 中介绍、随后在 Inception 模型 [13] 中用于减少前几层计算量的深度可分离卷积构建。 扁平化网络 [16] 由完全分解的卷积构建网络,并展示了极度分解网络的潜力。与本文独立,因子化网络 [34] 引入了类似的因子化卷积以及使用拓扑连接。随后,Xception 网络 [3] 演示了如何扩展深度可分离滤波器以超越 Inception V3 网络的性能。另一个小型网络是 Squeezenet [12],它使用瓶颈方法设计了一个非常小的网络。其他减少计算的网络包括结构化变换网络 [28] 和深度炸制卷积网 [37]。
获得小型网络的另一种方法是通过压缩预训练网络进行缩减、因子化或压缩。基于积分量化 [36]、哈希 [2] 的压缩,以及修剪、向量量化和 Huffman 编码 [5] 已经在文献中被提出。此外,还提出了各种因子化方法来加速预训练网络 [14, 20]。训练小型网络的另一种方法是蒸馏 [9],它使用一个更大的网络来教导一个更小的网络。这与我们的方法是互补的,在第 4 节的一些用例中有所涵盖。另一个新兴的方法是低比特网络。

压缩预训练网络

这种方法主要目标是减小已经训练好的深度学习模型的大小,以便它们能在内存和计算能力有限的设备上运行。典型的技术有:

  1. 知识蒸馏(Knowledge Distillation):这种方法通过训练一个较小的“学生”模型来模仿一个较大的“老师”模型的行为。一个典型的代表是Hinton等人提出的知识蒸馏框架。

  2. 剪枝(Pruning):剪枝技术通过移除模型中的一些不重要的参数(例如权重接近于0的)来减少模型大小。剪枝可以是结构化的(比如移除整个卷积核或神经元)或非结构化的(仅移除个别权重)。

  3. 量化(Quantization):量化技术将模型中的浮点数参数转换为低精度形式(例如,从32位浮点数转换为8位整数)。这可以显著减少模型需要的存储空间并加速推理过程。

  4. 参数共享(Parameter Sharing):通过在模型的多个部分共享参数,以减少模型的总参数量。

直接训练小型网络

这类方法从头开始设计和训练体积较小、计算高效的网络,以适应资源受限的环境。典型代表包括:

  1. SqueezeNet:采用了Fire Module结构,通过使用1x1卷积核和减少输入通道数的策略来减小模型大小和计算成本,同时试图保持准确率不变。

  2. MobileNets:使用深度可分离卷积(一种组合了深度卷积和1x1卷积的方法),提高了模型在移动和嵌入式设备上的运行效率。

  3. ShuffleNet:采用分组卷积和通道洗牌操作,以进一步提高模型的计算效率。

  4. EfficientNet:通过复合缩放方法(同时调整网络的宽度、深度和输入图像的分辨率)来系统地扩展网络,达到在保持模型高效的同时获得更好的准确率。

这些模型和技术展示了在模型压缩和设计高效网络架构方面的多种可能性,它们各自都有针对特定场景和目标的优化。选择使用哪一种方法或模型取决于具体应用的需求,包括对准确率、模型大小、推理速度和能耗等方面的考量。(最近查资料看的知识蒸馏现阶段在大模型上用的多)

3. MobileNet 模型架构

在这一部分中,我们首先描述了 MobileNet 构建所依赖的核心层,即深度可分离滤波器。然后,我们介绍了 MobileNet 网络结构,并以两个模型缩减超参数 —— 宽度乘数和尺寸乘数的描述结束。

阐述整体论文的核心,通过深度可分离卷积核来实现参数的缩减,其通过超参数及用户自平衡实现性能和参数的的平衡。
前面强调过这个深度可分离卷积Inception 模型 [13] 中用于减少前几层计算量的深度可分离卷积构建。 看了gooLenet发现,其本质就是通过多个不同感受野的卷积核去拟合系数神经网络这一特性性能的提升,通过这种方式发现小卷积核替代大卷积核的能力。从而减少参数保证了性能。

3.0 卷积个人理解

在这里插入图片描述
可以看到上图是一个三通道的特征图,二维卷积核只能实现像素级别,即下一个特征图的一个像素数值是由其自身及其邻居信息决定,这本身符合人类对看图的认识,但是一个图点的具体颜色是由其红黄蓝三原色调配,具体决定当前像素的数值, 因此单纯的考虑红色数值是不全面的,因此采用和特征图一致的高维卷积核厚度来实现通道间的通信,从而生成一张一维的特征图。由于其每次随机生成的卷积核仅能从特定角度观察这一图像,因此采用多个高维卷积核理解这个图片信息,故此还是会由一个特征图生成多个特征图,由于其都是由一个图泛化而来故此相同像素位置还和之前是一致的存在相关性,再次将多个特征图作为特征,使用和卷积核个数一致厚度的新卷积核进行特征提取,从而完成最终的图片特征抽象。周而复始,不断的聚合。二维度卷积核实现图片上的邻域聚合,而高维度卷积核实现通道级别的聚合。而多个卷积核的设定一方面满足了多个视角看待图片的问题,另一方面又一次满足了这一高维卷积核所需要的基础特征的生成,周而复始从而完成对特征图的抽象认识。

可以加深网络层数完成对图的高维度抽象,多个高维度卷积核是完全符合逻辑的。高维度卷积核实现了通道层面的聚合信息,而多个卷积核保证了在不断卷积的过程中通道不至于被压缩,以至于仅有一个通道应对下次的聚合。

那么问题来了如何实现在减少参数的情况下,还能满足这样的逻辑呢实现对图像的高质量抽象应对后续的下游任务。

其实看待CNN聚合操作无非就是两个层面(单一高维度卷积核内部的聚合操作(二维层面的和通道层面的),卷积核外部多个通卷积核的聚合)这两种。由于上文中说过多个卷积核外部的后续还是会内化成多个特征图再通过高维度的卷积核聚合循环,因此仅需要设计出多个高维度卷积核就可了。按照卷积行为就会不断的重复迭代。首先满足单一高维度卷积核先来满足二维图上的邻域聚合那么就是简单的通过设计一个二维卷积核就可以了,还有通道层面的聚合没满足呢?多通道就是将由三个卷积核计算得到的同一个一个像素点的数值得到的进行聚合呗,相同像素的位置的多个数值相加。一方面可以看成多不同数值加和,另一方面可以看成同一个数值的不同占比呗。因此下面公式就成功的设计出了一组卷核,将得到的同一个特征图通过不同占比的组合也能满足类似卷积核的操作。

a + b + c = x × 30 % + y × 20 % + z × 50 % a+b+c = x \times 30\% + y \times 20\% + z \times 50\% a+b+c=x×30%+y×20%+z×50%

那么多个卷积核就其本质就是多个不同的参数数值,就可以写成不同的占比情况啊,那么如何设计呢就通过下面的一个卷积核就能完成了:
1 ∗ 1 ∗ 上一层卷积核个数的 ( 特征图厚度 ) 1*1*上一层卷积核个数的(特征图厚度) 11上一层卷积核个数的(特征图厚度)
实现通道层面的操作,多种权重实现多个卷积核行为,从而大幅的减少参数的同时实现了多通道高维度卷积操作。
但是值得注意的是,这终究只是一种泛化而你想象一下实际上的卷积核是能达到像素位级别的聚合,而这会仅仅是一种泛化概括,所以精度肯定是没人家那么高。但是其在优化过程中是可以通过调整卷积核参数去调整的因此这种卷积核看图的方式可能和传统的卷积核存在差异。人家不按之前的看了全新的理解图结构。

下面是官方一点的理解
卷积本质上就是:

  1. 邻域聚合:通过二维卷积核实现的局部邻域聚合是CNN的核心,能够捕获空间结构信息。这种方法符合人类对视觉信息的处理方式,即局部区域的视觉特征对理解整体图像极为重要。

  2. 通道聚合:通过通道聚合,CNN能够在多通道数据中捕获深层次的语义信息,每个通道可以被视为捕捉图像中某种特定类型的特征。通过多个卷积核的组合使用,网络能够从多个视角分析图像,增加了模型的表达能力。

将传统的卷积操作分为两个步骤来减少模型参数和计算量:

  • 深度卷积(Depthwise Convolution) 负责处理二维图上的邻域聚合,每个通道独立应用卷积核,减少了参数数量。
  • 逐点卷积(Pointwise Convolution),通常是1x1的卷积,这一步用于聚合深度卷积的输出,整合不同通道的信息,再次减小参数量的同时,实现通道间的有效组合。

以下部分可以不看这是之前的笔记:

传统卷积操作:

在卷积神经网络中,当说到一个“卷积核”时,特别是针对具有多个通道(如RGB图像)的数据时,这个卷积核实际上是三维的(或者说是一个三维过滤器)。对于一个有多输入通道的图像,卷积核将具有相匹配的深度,以确保可以对每个输入通道进行操作。

  • 例如,如果输入数据是一个100×100×3大小的图像(宽100像素,高100像素,3个颜色通道),一个5×5大小的卷积核用于此输入,实际上它的大小将是5×5×3。这确保卷积核与输入数据的每个通道都进行了互动。

  • 在卷积操作中,这个5×5×3的卷积核滑动遍历整个输入图像,对于卷积核覆盖的每个局部区域,都会对卷积核与输入图像局部区域的每个通道进行逐元素相乘,然后把这些结果相加起来(累加求和),最终得到一个单一的输出值(产生输出特征图的一个像素)。这个过程在卷积核滑过整个输入图像时重复进行,生成整个输出特征图。

一个高维度的卷积核实现了多个通道特征的聚合,并且单一通道的卷积核切片在进行特征提取,如果采用多个卷积核,就能实现多种的通道特征聚合方式和特征采集行为。(当然这都是多个高维度卷积核的好处,其本质就是单层特征提取利用多个卷积核实现了同一特征的多种采样,每个通道聚合在多个卷积核下形成了可能带来了性能的提醒)换言之就是一个是单一通道利用多核卷积核实现了单一通道特征图的多样化采集,在多通道层米上多卷积核实现了多个通道特征的不同聚集情况。那么如何替代或者是在减少参数的情况下,实现这一目的呢,如果一个聚合一个通道的卷积情况使用一个二维卷积核,那么对其进行使用倍数是不是也是一种让卷积片数增多的能力,通过多种加权求和的方式是不是也能实现多种多个通道进行聚合的方式呢,因此实现了这个下面放你

总结一下保证性能的前提条件:

  • 多通道间不同聚合行为
  • 单通道特征的多种提取行为

深度可分离卷积:

相比之下,深度可分离卷积通过分解标凈卷积操作来减少参数量和计算成本:

  1. 深度卷积(Depthwise Convolution):首先,对输入图像的每个通道独立进行卷积,使用的卷积核大小与标准卷积一样(比如5×5),但每个通道都有自己的单通道卷积核,不跨通道进行操作。一个通道仅使用了一个卷积核,怎么变成单通道特征多种方式提取呢,乘倍数呗就是下面的1×1的卷积核

  2. 逐点卷积(Pointwise Convolution):然后,使用1×1的卷积核(实质上是逐点操作)将深度卷积的输出通道组合起来,生成最终的输出特征图。
    如何实现多个通道的不同聚合方式呢。将这个1×1的卷积核变成向量,做乘积就是加权求和嘛
    所以,深度可分离卷积首先分别地通过深度卷积提取每个输入通道上的空间特征,然后通过1×1的卷积实现特征的跨通道组合,以此达到降低计算复杂度的目的,同时保持对特征的有效捕获。

3.1 深度可分离卷积

MobileNet模型基于深度可分离卷积 ,这是一种分解卷积形式,将标准卷积分解为深度卷积和1×1的点卷积,后者被称为逐点卷积。

仅通过多通道分离操作再通过1*1的卷积核进行模拟多个高维度卷积核的操作,试图通过加权求和的方式拟合多个卷积核形式,由于其本质上只能对整体参数去拟合情况,即通过倍数去拟合一个卷积核的总体数值,其精度肯定是无法追赶传统卷积操作,但其参数骤减明显。适合在实践中使用。

在MobileNets中,深度卷积对每个输入通道应用单个滤波器。然后逐点卷积采用1×1的卷积来组合深度卷积的输出。标准卷积在一个步骤中同时过滤和组合输入,以产生一组新的输出。深度可分离卷积将此分解为两层,一个用于过滤的层和一个用于组合的层。这种分解大大减少了计算量和模型大小。图2展示了如何将标准卷积2(a)分解为深度卷积2(b)和1×1逐点卷积2©。
请添加图片描述

一个标准的卷积层以DF×DF×M的特征图F为输入,并产生一个DF×DF×N的特征图G,其中DF是输入特征图的空间宽度和高度,M是输入通道数(输入深度)和卷积核深度一致,DG是输出特征图的空间宽度和高度,N是输出通道数(输出深度)和卷积核个数一致。

标准卷积层由大小为DK×DK×M×N的卷积核K参数化,其中DK是假设为正方形的核的空间维度,M是输入通道数,N是前面定义的输出通道数卷积核个数。

假设步长为一且有填充,标准卷积的输出特征图计算为:

G k , l , n = ∑ i , j , m K i , j , m , n ⋅ F k + i − 1 , l + j − 1 , m G_{k,l,n} = \sum_{i,j,m} K_{i,j,m,n} · F_{k+i−1,l+j−1,m} Gk,l,n=i,j,mKi,j,m,nFk+i1,l+j1,m

标准卷积的计算成本为:

D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F DK · DK · M · N · DF · DF DKDKMNDFDF

其中,计算成本乘性地依赖于输入通道数M、输出通道数N,内核尺寸Dk × Dk和特征图尺寸DF × DF。MobileNet模型针对这些术语及其交互进行了优化。首先,它使用深度可分离卷积来打破输出通道数与内核尺寸之间的关系。

这段可以看到其计算成本,卷积核大小和特征图大小不可变的情况下,卷积核的个数和深度就变成了影响计算量的重要因素

标准卷积操作具有基于卷积内核过滤特征和组合特征的效果,以产生新的表示。过滤和组合步骤可以通过使用被称为深度可分离卷积的分解卷积分为两步进行,显著降低计算成本。

深度可分离卷积由两层组成:深度卷积和逐点卷积。我们使用深度卷积对每个输入通道(输入深度)应用单个滤波器。然后使用简单的1×1卷积(逐点卷积)来创建深度层输出的线性组合。MobileNets对这两层都使用批归一化和ReLU非线性功能。

深度卷积花费的计算成本是:

D K ⋅ D K ⋅ M ⋅ D F ⋅ D F DK · DK · M · DF · DF DKDKMDFDF

深度卷积相对于标准卷积极为高效。然而,它仅过滤输入通道,并不组合它们以创建新特征。因此,需要额外的层通过1×1卷积计算深度卷积输出的线性组合以生成这些新特征。

在第一次卷积仅采用了传统卷核中一个卷积核的情况即N=1

深度卷积和1×1卷积(逐点)的组合称为深度可分离卷积,最初在[26]中引入。

深度可分离卷积的总成本是:

其后续采用了这种 1 ∗ 1 1*1 11,分层就会导致将乘法变成加法,因此计算量下降,后续所采用的多个卷积核又因为是 1 ∗ 1 1*1 11在计算量上也不会提升

D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + M ⋅ N ⋅ D F ⋅ D F DK · DK · M · DF · DF + M · N · DF · DF DKDKMDFDF+MNDFDF

这是深度和1×1逐点卷积之和的总和。

通过将卷积表示为过滤和组合的两步过程,我们获得了计算成本的显著降低。MobileNet使用3×3深度可分离卷积,比标准卷积的计算需求少了8到9倍,正如第4节中所见,准确率仅有轻微下降。

3.2 网络结构和训练

MobileNet的结构是基于深度可分离卷积构建的,正如前一节所述,除了第一层是全卷积以外。通过以这样简单的术语定义网络,我们能够轻松探索网络拓扑以找到一个好的网络。MobileNet架构定义在表1中。所有层之后都是批归一化(batchnorm)[13]和ReLU非线性操作,除了最后的全连接层,它没有非线性,并且直接连接一个softmax层进行分类。
请添加图片描述
图3对比了一个带有常规卷积、批归一化和ReLU非线性的层,以及一个拥有深度卷积、1×1逐点卷积以及在每个卷积层之后的批归一化和ReLU的分解层。下采样在深度卷积中以及第一层中通过带步长的卷积处理。最终的平均池化将空间分辨率降低到1,然后是全连接层。如果将深度卷积和逐点卷积算作单独的层,MobileNet有28层。
请添加图片描述

仅仅用少量的乘加操作(Mult-Adds)定义网络是不够的。也很重要的是要确保这些操作可以有效地实现。例如,非结构化的稀疏矩阵操作通常不会比稠密矩阵操作快,直到达到很高的稀疏度。我们的模型结构将几乎所有计算放入到密集的1×1卷积中。这可以通过高度优化的通用矩阵乘法(GEMM)函数实现。通常卷积通过GEMM实现,但需要一个称为im2col的内存重排操作,以将其映射到GEMM上。例如,这种方法在流行的Caffe软件包[15]中使用。1×1卷积不需要这种内存重排,可以直接用GEMM实现,GEMM是最优化的数值线性代数算法之一。MobileNet的95%计算时间花在1×1卷积上,其中也有75%的参数,正如表2所示。几乎所有其他参数都在全连接层中。

MobileNet模型是在TensorFlow [1]中使用RMSprop [33]和异步梯度下降训练的,类似于Inception V3 [31]。然而,与训练大型模型不同,我们使用较少的正则化和数据增强技术,因为小型模型在防止过拟合方面问题较小。在训练MobileNets时,我们不使用辅助头(side heads)或标签平滑,并且通过限制大型Inception训练中使用的小裁剪的大小,减少了图像扭曲的数量。此外,我们发现对深度滤波器施加非常少或没有权重衰减(l2正则化)是重要的,因为它们的参数非常少。对于下一节中的ImageNet基准测试,所有模型都是用相同的训练参数训练的,不论模型大小如何。

3.3 宽度乘数:更细的模型 α

尽管基础的MobileNet架构已经很小并且延迟低,但很多时候特定的用例或应用可能需要模型更小、更快。为了构建这些更小且计算成本更低的模型,我们引入了一个非常简单的参数 α,称为宽度乘数。宽度乘数 α 的作用是在每层均匀地减薄网络。对于给定的层和宽度乘数 α,输入通道数 M 变为 αM,输出通道数 N 变为 αN。

使用宽度乘数 α 的深度可分离卷积的计算成本为:为什么看起来奇怪人家改的是输入的厚度,因此整体嘛,模型都在变瘦,而且第一层采用使用普通卷积作为第一层,这主要是因为第一层接收原始的输入特征图(如图像),需要执行跨通道的信息整合。使用普通卷积能够实现这一目的,并为后续的深度可分离卷积层提供适合的特征图。通过对这一层应用宽度乘数 α,可以控制后续层的输入和输出通道数,从而全面控制整个网络的规模。
D K ⋅ D K ⋅ α M ⋅ D F ⋅ D F + α M ⋅ α N ⋅ D F ⋅ D F ( 6 ) DK \cdot DK \cdot \alpha M \cdot DF \cdot DF + \alpha M \cdot \alpha N \cdot DF \cdot DF \quad (6) DKDKαMDFDF+αMαNDFDF(6)
其中 α ∈ (0, 1],典型设置为1, 0.75, 0.5和 0.25。α = 1是基线MobileNet,而α < 1是缩减的MobileNets。宽度乘数的效果是通过大约 α² 二次减少计算成本和参数数量。宽度乘数可以应用于任何模型结构来定义一个新的较小的模型,这个模型在准确率、延迟和大小之间有合理的权衡。它用于定义一个需要从头开始训练的新的缩减结构。

简而言之,宽度乘数是调整MobileNet模型大小和计算复杂度的一个有效工具。通过调整α值,开发者可以根据具体应用的需求和资源限制,灵活地缩放模型的宽度,从而实现性能和效率之间的最佳平衡。这意味着,即使在资源受限的环境中,也能够部署有效的深度学习模型来解决复杂的视觉任务。

个人理解

  1. 深度卷积(DW)的使用:深度卷积层通过对每个输入特征图的通道独立应用一个卷积核(filter)来实现空间特征提取。这意味着,如果一个层有20个通道,普通的深度卷积会使用20个卷积核来分别处理这20个通道。在使用宽度乘数α来缩减模型时,实际上操作的是输入和输出通道数的缩减,而不是直接减少卷积核的数量,因为在深度卷积中,每个卷积核已对应于一个通道。即固定的了,在最初整体的卷积规模就要设定好

  2. 第一层的普通卷积:确实,MobileNet模型使用普通卷积作为第一层,这主要是因为第一层接收原始的输入特征图(如图像),需要执行跨通道的信息整合。使用普通卷积能够实现这一目的,并为后续的深度可分离卷积层提供适合的特征图。通过对这一层应用宽度乘数α,可以控制后续层的输入和输出通道数,从而全面控制整个网络的规模。这才是可实现卷积宽度可控的能力来源,不是单纯的就删减输入特征图的维度

  3. 宽度乘数的全面效应:通过在模型的早期层次使用普通卷积,并对其输出应用宽度乘数α,可以在不牺牲太多信息整合能力的前提下,全面减小模型规模。这种设计使得MobileNet不仅在参数数量和计算成本上高效,而且还保持了良好的性能。

通过精心设计,MobileNet通过在第一层使用普通卷积,并在整个模型中使用宽度乘数α和深度可分离卷积,达到了在轻量化模型设计中的出色平衡,使其成为移动和嵌入式设备上理想的视觉处理模型。

3.4 分辨率乘数:降低表示的维度ρ

第二个用于减少神经网络计算成本的超参数是分辨率乘数 (ρ)。我们将这个参数应用于输入图像,从而每个层的内部表示也会被相同的乘数所减少。实际操作中,我们通过设置输入分辨率隐式地设定了 (ρ)。现在,我们可以表达核心层(即深度可分离卷积层)的计算成本,该核心层使用了宽度乘数 (α) 和分辨率乘数 (ρ):

很好理解就是单纯的降低分辨率从而减少特征图大小,降低就按成本

D K ⋅ D K ⋅ α M ⋅ ρ D F ⋅ ρ D F + α M ⋅ α N ⋅ ρ D F ⋅ ρ D F ( 7 ) DK \cdot DK \cdot αM \cdot ρDF \cdot ρDF + αM \cdot αN \cdot ρDF \cdot ρDF \quad (7) DKDKαMρDFρDF+αMαNρDFρDF(7)

其中 (ρ ∈ (0, 1]),通常被隐式设置,以便网络的输入分辨率是 224, 192, 160 或 128。(ρ = 1) 是基线MobileNet,而 (ρ < 1) 的情况代表计算成本被减少的MobileNets。分辨率乘数的效果是通过 ρ 2 ρ^2 ρ2
减少计算成本。
请添加图片描述
作为一个示例,我们可以看一下MobileNet中的典型层,看看深度可分离卷积、宽度乘数和分辨率乘数是如何减少成本和参数的。表3展示了一层的计算量和参数数量,随着架构缩减方法依次被应用于该层。第一行展示了完全卷积层的Mult-Adds和参数数量,该层的输入特征图大小为 14 × 14 × 512 14 \times 14 \times 512 14×14×512,卷积核 (K) 的大小为 3 × 3 × 512 × 512 3 \times 3 \times 512 \times 512 3×3×512×512。在下一节中,我们将详细查看资源和精确度之间的折衷。

通过使用分辨率乘数 (ρ),MobileNets允许模型开发者基于所需的性能和可用的计算资源灵活地调整模型的输入分辨率,从而进一步减少模型的计算需求,这对于在资源受限的设备上部署深度学习模型尤其有用。与宽度乘数 (α) 一起,分辨率乘数 (ρ) 提供了一种有效的方法来调整模型的大小和性能,满足不同应用场景的需求。

4. 实验

在本节中,我们首先调查了深度卷积的效果以及通过减少网络宽度而不是层数来缩小网络的选择。然后,基于两个超参数:宽度乘数和分辨率乘数,展示了缩减网络的权衡,将结果与一些流行模型进行了比较。接着,我们探讨了将MobileNets应用到多种不同应用中的情况。

4.1 模型选择

首先,我们展示了使用深度可分离卷积的MobileNet与使用全卷积构建的模型的结果对比。在表4中,我们看到与全卷积相比,使用深度可分离卷积在ImageNet上的准确率仅降低了1%,但在乘加操作和参数数量上节省了大量。

表4. 深度可分离卷积与全卷积MobileNet对比

模型ImageNet准确率Million Mult-AddsMillion Parameters
Conv MobileNet71.7%486629.3
MobileNet70.6%5694.2

接下来,我们展示了使用宽度乘数的较薄模型与使用更少层数的较浅模型的结果对比。为了使MobileNet变得更浅,在表1中的具有特征尺寸为 14 × 14 × 512 14 \times 14 \times 512 14×14×512 的5层可分离滤波器被移除。表5显示,在类似的计算和参数数量下,使MobileNets变细比使它们变浅好3%。

表5. 较窄与较浅的MobileNet对比 证明其模型变细对性能影响不大

模型ImageNet准确率Million Mult-AddsMillion Parameters
0.75 MobileNet68.4%3252.6
Shallow MobileNet65.3%3072.9

接着,我们展示了不同宽度乘数下MobileNet-224的效果:

表6. MobileNet宽度乘数 宽度指数调试

宽度乘数ImageNet准确率Million Mult-AddsMillion Parameters
1.070.6%5694.2
0.7568.4%3252.6
0.563.7%1491.3
0.2550.6%410.5

最后,我们探讨了改变输入分辨率对MobileNet模型影响:

表7. MobileNet分辨率 # 引入肉的参数选择

分辨率ImageNet准确率Million Mult-AddsMillion Parameters
1.0 MobileNet-22470.6%5694.2
1.0 MobileNet-19269.1%4184.2
1.0 MobileNet-16067.2%2904.2
1.0 MobileNet-12864.4%1864.2

这些实验表明,深度可分离卷积相较于全卷积能够显著减少模型的计算成本和参数数量,而在模型压缩策略方面,适当缩小网络宽度相比减少网络深度(即层数)能够更有效地保持性能。通过调整宽度乘数和分辨率乘数,可进一步根据特定应用场景的需要调优模型性能和计算成本之间的权衡。

4.2. 模型缩减超参数

主要就是讨论性能了可以略过
表6展示了通过宽度乘数 α 缩减MobileNet架构的准确度、计算量和大小之间的权衡。准确度平稳下降,直到架构在 α = 0.25 时变得过小。

表7展示了通过训练不同输入分辨率的MobileNets,不同分辨率乘数带来的准确度、计算量和大小之间的权衡。准确度在不同分辨率下平稳下降。

图4展示了由宽度乘数 α ∈ {1, 0.75, 0.5, 0.25} 和分辨率 {224, 192, 160, 128} 的交叉产品构成的16个模型之间ImageNet准确度和计算量的权衡。结果是对数线性的,当模型在 α = 0.25 时变得非常小,会出现一个跳跃。
请添加图片描述

图5展示了由宽度乘数 α ∈ {1, 0.75, 0.5, 0.25} 和分辨率 {224, 192, 160, 128} 的交叉产品构成的16个模型之间ImageNet准确度和参数数量的权衡。

请添加图片描述
表8将完整的MobileNet与原始的GoogleNet [30] 和 VGG16 [27] 进行了比较。MobileNet几乎与VGG16一样准确,但大小小32倍,计算量少27倍。它比GoogleNet更准确,同时更小,并且计算量少超过2.5倍。

表9比较了一个缩减的Mobilenet,其宽度乘数 α = 0.5 且分辨率减少到 160×160。缩减的MobileNet比AlexNet [19] 好4%,而且大小小45倍,计算量少9.4倍。它也比Squeezenet [12] 好4%,大约相同的大小和22倍更少的计算量。

这一部分的研究表明了通过调整模型的宽度乘数和分辨率乘数,可以有效地在模型的准确度、大小和计算量之间找到平衡点。MobileNet利用它的灵活性,在保持合理准确度的同时显著减小了模型的复杂度和资源需求,使其非常适合于资源有限的环境下使用。

4.3. 细粒度识别

我们在斯坦福狗数据集(Stanford Dogs dataset)[17]上训练了MobileNet以进行细粒度识别。我们扩展了[18]的方法,并从网络上收集了比[18]更大但嘈杂的训练集。我们使用这些嘈杂的网络数据来预训练一个细粒度的狗识别模型,然后在斯坦福狗训练集上对模型进行微调。斯坦福狗测试集上的结果见表10。MobileNet几乎可以实现[18]中报告的最新成果,而计算和大小大大减少。

4.4. 大规模地理定位

PlaNet [35]将确定地球上照片拍摄位置的任务视为一个分类问题。这种方法将地球划分为一系列地理单元网格,这些网格作为目标类,并在数百万张地理标签照片上训练卷积神经网络。已经证明PlaNet能够成功定位大量不同的照片,并且表现优于解决同一任务的Im2GPS [6, 7]。我们使用MobileNet架构重新训练PlaNet,使用相同的数据。全尺寸的PlaNet模型基于Inception V3架构[31],有5200万参数和57.4亿次乘加操作。而MobileNet模型只有1300万参数,通常300万用于主体,1000万用于最后一层,以及580万次乘加操作。如表11所示,尽管MobileNet版本更为紧凑,其性能只是略有下降,而且仍然大幅领先于Im2GPS。

4.5. 脸部属性

MobileNet的另一个用例是压缩具有未知或神秘训练程序的大型系统。在脸部属性分类任务中,我们展示了MobileNet和蒸馏[9]之间的协同关系,蒸馏是一种深度网络的知识转移技术。我们的目标是简化一个有7500万参数和16亿次乘加操作的大型脸部属性分类器。该分类器在类似于YFCC100M [32]的多属性数据集上进行训练。我们使用MobileNet架构对脸部属性分类器进行蒸馏。蒸馏[9]的工作原理是通过训练分类器模仿更大模型的输出而不是真实标签,从而实现从大型(潜在无限)未标记数据集上进行训练。通过结合蒸馏训练的可扩展性和MobileNet的经济参数化,最终系统不仅不需要正则化(例如权重衰减和早停),而且还展示了增强的性能。从表12中可以看出,基于MobileNet的分类器对于激进的模型缩减具有韧性:它实现了与内部模型相似的平均精度(mean AP),同时只消耗1%的乘加操作。

4.6. 物体检测

MobileNet也可以作为现代物体检测系统中有效的基础网络部署。我们报告了基于2016年COCO挑战赛获胜作品的MobileNet训练的物体检测在COCO数据上的结果。在表13中,MobileNet与VGG和Inception V2 [13]在Faster-RCNN [23]和SSD [21]框架下进行了比较。在我们的实验中,SSD使用300输入分辨率(SSD 300)进行评估,Faster-RCNN比较了300和600输入分辨率(Faster-RCNN 300, Faster-RCNN 600)。Faster-RCNN模型每张图片评估300个RPN提议框。这些模型在COCO train+val训练,除去8k minival图像,并在minival上进行评估。对于两个框架,MobileNet都实现了与其他网络相当的结果,仅用一小部分的计算复杂性和模型大小。

好了好了终于结束了,开始实际代码阶段吧。

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

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

相关文章

YOLOv9改进策略【卷积层】| HWD,引入`Haar小波变换`到下采样模块中,减少信息丢失

一、本文介绍 本文记录的是利用Haar小波下采样对YOLOv9网络进行改进的方法研究。传统的卷积神经网络中常用的最大池化、平均池化和步长为2的卷积等操作进行下采样可能会导致信息丢失&#xff0c;为了解决信息丢失问题&#xff0c;HWD作者受无损信息变换方法的启发&#xff0c;…

python本地进程通讯----共享内存变量

背景 最近在开发实践中&#xff0c;接触到了需要多进程开发的场景。众所周知&#xff0c;进程和线程最大的区别就在于&#xff1a;进程是资源分配的最小单位&#xff0c;线程是cpu调度的最小单位。对于多进程开发来说&#xff0c;每一个进程都占据一块独立的虚拟内存空间&#…

大数据新视界 --大数据大厂之探索ES:大数据时代的高效搜索引擎实战攻略

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

致计算机新生们

欢迎你们踏入计算机科学的世界&#xff0c;这是一个充满挑战与机遇的领域。在你们即将开始的大学旅程中&#xff0c;了解计算机专业的就业方向和行业现状是非常重要的。以下是一些关于计算机专业就业方向和行业现状的介绍&#xff0c;希望能够帮助你们更好地规划自己的未来。 …

土豆王国小乐队携手阿派朗创造力乐园,打造2024年okgo儿童音乐节

艺术与科技的完美融合&#xff0c;为首都少年儿童带来音乐盛宴 北京&#xff0c;2024年9月19日 —— 备受期待的2024年okgo儿童音乐节即将于9月21日至22日在北京阿派朗创造力乐园盛大开幕。这场由土豆王国小乐队与阿派朗创造力乐园联合举办的音乐节&#xff0c;旨在为首都及全国…

波分技术基础 -- WDM/OTN介绍

什么是WDM WDM&#xff08;Wavelength Division Multiplexing&#xff09;&#xff1a;波分复用技术&#xff0c;将不同波长的光信号复用到一根光纤中进行传送的方式&#xff08;每个波长承载一个业务信号&#xff09;&#xff0c;主要功能是传送和复用。在波分技术出现之前&am…

Gephi 0.9.2中文版百度云下载(附教程)

如大家所了解的&#xff0c;Gephi常用于各种图形和网络的可视化和探索&#xff0c;是最受欢迎的网络可视化软件之一。在生物科学领域&#xff0c;常用于基因共表达网络、蛋白互作网络、微生物相互关系网络等等类似的网络图形绘制。 目前用的比较多的版本为Gephi 0.9.2&#xf…

使用rust自制操作系统内核

一、系统简介 本操作系统是一个使用rust语言实现&#xff0c;基于32位的x86CPU的分时操作系统。 项目地址&#xff08;求star&#xff09;&#xff1a;GitHub - CaoGaorong/os-in-rust: 使用rust实现一个操作系统内核 详细文档&#xff1a;自制操作系统 语雀 1. 项目特性 …

深度学习自编码器 - 使用自编码器学习流形篇

序言 在数据科学的浩瀚宇宙中&#xff0c;深度学习如同一颗璀璨的星辰&#xff0c;引领着我们对复杂数据内在规律的探索。其中&#xff0c;自编码器作为深度学习家族中的一位独特成员&#xff0c;以其非凡的能力——通过无监督学习捕捉数据的有效表示&#xff0c;而备受瞩目。…

Tomcat_WebApp

Tomcat的目录的介绍 /bin&#xff1a; 这个目录包含启动和关闭 Tomcat 的脚本。 startup.bat / startup.sh&#xff1a;用于启动 Tomcat&#xff08;.bat 文件是 Windows 系统用的&#xff0c;.sh 文件是 Linux/Unix 系统用的&#xff09;。shutdown.bat / shutdown.sh&#xf…

Java 实现桌面烟花秀

前言 今天&#xff0c;我们将展示如何使用 Java Swing 创建一个烟花效果&#xff0c;覆盖整个桌面。我们将重点讲解如何在桌面上展示烟花、如何实现发射和爆炸效果&#xff0c;以及如何将这些效果整合到一个完整的程序中。 效果展示 如上图所示&#xff0c;我们在桌面实现了&…

【开源大模型生态9】百度的文心大模型

这张图展示了百度千帆大模型平台的功能架构及其与BML-AI开发平台和百度百舸AI异构计算平台的关系。以下是各个模块的解释&#xff1a; 模型广场&#xff1a; 通用大模型&#xff1a;提供基础的自然语言处理能力。行业大模型&#xff1a;针对不同行业的定制化模型。大模型工具链…

新的 MathWorks 硬件支持包支持从 MATLAB 和 Simulink 模型到高通 Hexagon 神经处理单元架构的自动化代码生成

MathWorks 今天宣布&#xff0c;推出针对 Qualcomm Hexagon™ 神经处理单元&#xff08;NPU&#xff09;的硬件支持包。该处理单元嵌入在 Snapdragon 系列处理器中。MathWorks 硬件支持包&#xff0c;则专门针对 Qualcomm Technologies 的 Hexagon NPU 架构进行优化&#xff0c…

基于SSM的“校园外卖管理系统”的设计与实现(源码+数据库+文档+开题报告)

基于SSM的“校园外卖管理系统”的设计与实现&#xff08;源码数据库文档开题报告) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 消费者系统结构图 商户系统结构图 管理员系统结构图 校…

数据脱敏 (Jackson + Hutool 工具包)

一、简介 系统使用 Jackson 序列化策略&#xff0c;对标注了 Sensitive 注解的属性进行脱敏处理 基于Hutool 脱敏案列&#xff1a; Retention(RetentionPolicy.RUNTIME) Target(ElementType.FIELD) JacksonAnnotationsInside// 表示只对有此注解的字段进行序列化 JsonSeriali…

MySQL高阶1831-每天的最大交易

题目 编写一个解决方案&#xff0c;报告每天交易金额 amount 最大 的交易 ID 。如果一天中有多个这样的交易&#xff0c;返回这些交易的 ID 。 返回结果根据 transaction_id 升序排列。 准备数据 Create table If Not Exists Transactions (transaction_id int, day date, …

吹爆上海交大的大模型实战教程!!—《动手学大模型》附实战教程及ppt

今天分享一个上海交大的免费的大模型课程&#xff0c;有相关教程文档和Slides&#xff0c;目前是2.2K星标&#xff0c;还是挺火的&#xff01; 《动手学大模型》系列编程实践教程&#xff0c; 由上海交通大学2024年春季《人工智能安全技术》课程&#xff08;NIS3353&#xff09…

深入剖析Docker容器安全:挑战与应对策略

随着容器技术的广泛应用&#xff0c;Docker已成为现代应用开发和部署的核心工具。它通过轻量级虚拟化技术实现应用的隔离与封装&#xff0c;提高了资源利用率。然而&#xff0c;随着Docker的流行&#xff0c;其安全问题也成为关注焦点。容器化技术虽然提供了良好的资源隔离&…

SHAP 模型可视化 + 参数搜索策略在轴承故障诊断中的应用

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Python轴承故障诊断入门教学-CSDN博客 Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客 Python轴承故障诊断 (14)高创新故障识别模型-CSDN…

Linux用户组管理

目录 一、增删改用户组 1.1. 创建一个新的用户组 1.2. 创建用户组并指定ID 1.3. 修改用户组的名 1.4. 修改用户组的ID 1.5. 删除一个用户组 二、用户组中的用户操作 2.1. 添加用户到一个已存在的用户组 2.2. 从用户组中移除用户 注&#xff1a;本章内容全部基于Centos…