Mobile net V系列详解 理论+实战(1)
Mobilenet 系列
- 论文精讲部分
- 0.摘要
- 1. 引文
- 2. 引文
- 3. MobileNet 模型架构
- 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 节的一些用例中有所涵盖。另一个新兴的方法是低比特网络。
压缩预训练网络
这种方法主要目标是减小已经训练好的深度学习模型的大小,以便它们能在内存和计算能力有限的设备上运行。典型的技术有:
知识蒸馏(Knowledge Distillation):这种方法通过训练一个较小的“学生”模型来模仿一个较大的“老师”模型的行为。一个典型的代表是Hinton等人提出的知识蒸馏框架。
剪枝(Pruning):剪枝技术通过移除模型中的一些不重要的参数(例如权重接近于0的)来减少模型大小。剪枝可以是结构化的(比如移除整个卷积核或神经元)或非结构化的(仅移除个别权重)。
量化(Quantization):量化技术将模型中的浮点数参数转换为低精度形式(例如,从32位浮点数转换为8位整数)。这可以显著减少模型需要的存储空间并加速推理过程。
参数共享(Parameter Sharing):通过在模型的多个部分共享参数,以减少模型的总参数量。
直接训练小型网络
这类方法从头开始设计和训练体积较小、计算高效的网络,以适应资源受限的环境。典型代表包括:
SqueezeNet:采用了Fire Module结构,通过使用1x1卷积核和减少输入通道数的策略来减小模型大小和计算成本,同时试图保持准确率不变。
MobileNets:使用深度可分离卷积(一种组合了深度卷积和1x1卷积的方法),提高了模型在移动和嵌入式设备上的运行效率。
ShuffleNet:采用分组卷积和通道洗牌操作,以进一步提高模型的计算效率。
EfficientNet:通过复合缩放方法(同时调整网络的宽度、深度和输入图像的分辨率)来系统地扩展网络,达到在保持模型高效的同时获得更好的准确率。
这些模型和技术展示了在模型压缩和设计高效网络架构方面的多种可能性,它们各自都有针对特定场景和目标的优化。选择使用哪一种方法或模型取决于具体应用的需求,包括对准确率、模型大小、推理速度和能耗等方面的考量。(最近查资料看的知识蒸馏现阶段在大模型上用的多)
3. MobileNet 模型架构
在这一部分中,我们首先描述了 MobileNet 构建所依赖的核心层,即深度可分离滤波器。然后,我们介绍了 MobileNet 网络结构,并以两个模型缩减超参数 —— 宽度乘数和尺寸乘数的描述结束。
阐述整体论文的核心,通过深度可分离卷积核来实现参数的缩减,其通过超参数及用户自平衡实现性能和参数的的平衡。
前面强调过这个深度可分离卷积Inception 模型 [13] 中用于减少前几层计算量的深度可分离卷积构建。 看了gooLenet发现,其本质就是通过多个不同感受野的卷积核去拟合系数神经网络这一特性性能的提升,通过这种方式发现小卷积核替代大卷积核的能力。从而减少参数保证了性能。
3.1 深度可分离卷积
传统卷积操作:
在卷积神经网络中,当说到一个“卷积核”时,特别是针对具有多个通道(如RGB图像)的数据时,这个卷积核实际上是三维的(或者说是一个三维过滤器)。对于一个有多输入通道的图像,卷积核将具有相匹配的深度,以确保可以对每个输入通道进行操作。
例如,如果输入数据是一个100×100×3大小的图像(宽100像素,高100像素,3个颜色通道),一个5×5大小的卷积核用于此输入,实际上它的大小将是5×5×3。这确保卷积核与输入数据的每个通道都进行了互动。
在卷积操作中,这个5×5×3的卷积核滑动遍历整个输入图像,对于卷积核覆盖的每个局部区域,都会对卷积核与输入图像局部区域的每个通道进行逐元素相乘,然后把这些结果相加起来(累加求和),最终得到一个单一的输出值(产生输出特征图的一个像素)。这个过程在卷积核滑过整个输入图像时重复进行,生成整个输出特征图。
一个高维度的卷积核实现了多个通道特征的聚合,并且单一通道的卷积核切片在进行特征提取,如果采用多个卷积核,就能实现多种的通道特征聚合方式和特征采集行为。(当然这都是多个高维度卷积核的好处,其本质就是单层特征提取利用多个卷积核实现了同一特征的多种采样,每个通道聚合在多个卷积核下形成了可能带来了性能的提醒)换言之就是一个是单一通道利用多核卷积核实现了单一通道特征图的多样化采集,在多通道层米上多卷积核实现了多个通道特征的不同聚集情况。那么如何替代或者是在减少参数的情况下,实现这一目的呢,如果一个聚合一个通道的卷积情况使用一个二维卷积核,那么对其进行使用倍数是不是也是一种让卷积片数增多的能力,通过多种加权求和的方式是不是也能实现多种多个通道进行聚合的方式呢,因此实现了这个下面放你
总结一下保证性能的前提条件:
- 多通道间不同聚合行为
- 单通道特征的多种提取行为
深度可分离卷积:
相比之下,深度可分离卷积通过分解标凈卷积操作来减少参数量和计算成本:
深度卷积(Depthwise Convolution):首先,对输入图像的每个通道独立进行卷积,使用的卷积核大小与标准卷积一样(比如5×5),但每个通道都有自己的单通道卷积核,不跨通道进行操作。一个通道仅使用了一个卷积核,怎么变成单通道特征多种方式提取呢,乘倍数呗就是下面的1×1的卷积核
逐点卷积(Pointwise Convolution):然后,使用1×1的卷积核(实质上是逐点操作)将深度卷积的输出通道组合起来,生成最终的输出特征图。
如何实现多个通道的不同聚合方式呢。将这个1×1的卷积核变成向量,做乘积就是加权求和嘛
所以,深度可分离卷积首先分别地通过深度卷积提取每个输入通道上的空间特征,然后通过1×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,m∑Ki,j,m,n⋅Fk+i−1,l+j−1,m
标准卷积的计算成本为:
D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F DK · DK · M · N · DF · DF DK⋅DK⋅M⋅N⋅DF⋅DF
其中,计算成本乘性地依赖于输入通道数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 DK⋅DK⋅M⋅DF⋅DF
深度卷积相对于标准卷积极为高效。然而,它仅过滤输入通道,并不组合它们以创建新特征。因此,需要额外的层通过1×1卷积计算深度卷积输出的线性组合以生成这些新特征。
在第一次卷积仅采用了传统卷核中一个卷积核的情况即N=1
深度卷积和1×1卷积(逐点)的组合称为深度可分离卷积,最初在[26]中引入。
深度可分离卷积的总成本是:
其后续采用了这种 1 ∗ 1 1*1 1∗1,分层就会导致将乘法变成加法,因此计算量下降,后续所采用的多个卷积核又因为是 1 ∗ 1 1*1 1∗1在计算量上也不会提升
D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + M ⋅ N ⋅ D F ⋅ D F DK · DK · M · DF · DF + M · N · DF · DF DK⋅DK⋅M⋅DF⋅DF+M⋅N⋅DF⋅DF
这是深度和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) DK⋅DK⋅αM⋅DF⋅DF+αM⋅αN⋅DF⋅DF(6)
其中 α ∈ (0, 1],典型设置为1, 0.75, 0.5和 0.25。α = 1是基线MobileNet,而α < 1是缩减的MobileNets。宽度乘数的效果是通过大约 α² 二次减少计算成本和参数数量。宽度乘数可以应用于任何模型结构来定义一个新的较小的模型,这个模型在准确率、延迟和大小之间有合理的权衡。它用于定义一个需要从头开始训练的新的缩减结构。
简而言之,宽度乘数是调整MobileNet模型大小和计算复杂度的一个有效工具。通过调整α值,开发者可以根据具体应用的需求和资源限制,灵活地缩放模型的宽度,从而实现性能和效率之间的最佳平衡。这意味着,即使在资源受限的环境中,也能够部署有效的深度学习模型来解决复杂的视觉任务。
个人理解
深度卷积(DW)的使用:深度卷积层通过对每个输入特征图的通道独立应用一个卷积核(filter)来实现空间特征提取。这意味着,如果一个层有20个通道,普通的深度卷积会使用20个卷积核来分别处理这20个通道。在使用宽度乘数α来缩减模型时,实际上操作的是输入和输出通道数的缩减,而不是直接减少卷积核的数量,因为在深度卷积中,每个卷积核已对应于一个通道。即固定的了,在最初整体的卷积规模就要设定好
第一层的普通卷积:确实,MobileNet模型使用普通卷积作为第一层,这主要是因为第一层接收原始的输入特征图(如图像),需要执行跨通道的信息整合。使用普通卷积能够实现这一目的,并为后续的深度可分离卷积层提供适合的特征图。通过对这一层应用宽度乘数α,可以控制后续层的输入和输出通道数,从而全面控制整个网络的规模。这才是可实现卷积宽度可控的能力来源,不是单纯的就删减输入特征图的维度
宽度乘数的全面效应:通过在模型的早期层次使用普通卷积,并对其输出应用宽度乘数α,可以在不牺牲太多信息整合能力的前提下,全面减小模型规模。这种设计使得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) DK⋅DK⋅α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-Adds | Million Parameters |
---|---|---|---|
Conv MobileNet | 71.7% | 4866 | 29.3 |
MobileNet | 70.6% | 569 | 4.2 |
接下来,我们展示了使用宽度乘数的较薄模型与使用更少层数的较浅模型的结果对比。为了使MobileNet变得更浅,在表1中的具有特征尺寸为 14 × 14 × 512 14 \times 14 \times 512 14×14×512 的5层可分离滤波器被移除。表5显示,在类似的计算和参数数量下,使MobileNets变细比使它们变浅好3%。
表5. 较窄与较浅的MobileNet对比 证明其模型变细对性能影响不大
模型 | ImageNet准确率 | Million Mult-Adds | Million Parameters |
---|---|---|---|
0.75 MobileNet | 68.4% | 325 | 2.6 |
Shallow MobileNet | 65.3% | 307 | 2.9 |
接着,我们展示了不同宽度乘数下MobileNet-224的效果:
表6. MobileNet宽度乘数 宽度指数调试
宽度乘数 | ImageNet准确率 | Million Mult-Adds | Million Parameters |
---|---|---|---|
1.0 | 70.6% | 569 | 4.2 |
0.75 | 68.4% | 325 | 2.6 |
0.5 | 63.7% | 149 | 1.3 |
0.25 | 50.6% | 41 | 0.5 |
最后,我们探讨了改变输入分辨率对MobileNet模型影响:
表7. MobileNet分辨率 # 引入肉的参数选择
分辨率 | ImageNet准确率 | Million Mult-Adds | Million Parameters |
---|---|---|---|
1.0 MobileNet-224 | 70.6% | 569 | 4.2 |
1.0 MobileNet-192 | 69.1% | 418 | 4.2 |
1.0 MobileNet-160 | 67.2% | 290 | 4.2 |
1.0 MobileNet-128 | 64.4% | 186 | 4.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都实现了与其他网络相当的结果,仅用一小部分的计算复杂性和模型大小。
好了好了终于结束了,开始实际代码阶段吧。