MobileNetV1学习笔记

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications(MobileNets:用于移动视觉应用的高效卷积神经网络)

摘要:

我们提出了一类称为MobileNets的高效模型,用于移动和嵌入式视觉应用。MobileNets基于一种流线型架构,使用深度可分离卷积来构建轻量级深度神经网络。我们引入了两个简单的全局超参数,可以有效地在延迟和准确性之间进行权衡。这些超参数允许模型构建者根据问题的约束为他们的应用程序选择正确大小的模型。我们在资源和准确度权衡方面进行了广泛的实验,与其他流行的ImageNet分类模型相比,表现出了强大的性能。然后,我们在广泛的应用程序和用例中演示了MobileNets的有效性,包括对象检测、细颗粒分类、面部属性和大规模地理定位。

1.介绍

自从AlexNet通过赢得ImageNet挑战赛:ILSVRC 2012而普及了深度卷积神经网络以来,卷积神经网络在计算机视觉中已经无处不在。为了达到更高的精度,一般的趋势是构建更深、更复杂的网络。然而,这些提高准确性的进步并不一定会使网络在规模和速度方面更有效。在许多现实世界的应用中,如机器人、自动驾驶汽车和增强现实,识别任务需要在计算有限的平台上及时执行

本文描述了**一种高效的网络架构和一组两个超参数,以构建非常小,低延迟的模型,可以很容易地匹配移动和嵌入式视觉应用程序的设计需求。**第2节回顾了先前在构建小型模型方面的工作。第3节描述了MobileNet体系结构和两个超参数宽度乘数和分辨率乘数,以定义更小、更高效的MobileNet。第4节描述了ImageNet上的实验以及各种不同的应用程序和用例。第5节以总结和结论结束。

2.之前的工作

在最近的文献中,人们对构建小型高效神经网络越来越感兴趣,例如[16,34,12,36,22]。许多不同的方法通常可以分为压缩预训练网络或直接训练小型网络。本文提出了一类网络架构,允许模型开发人员为其应用程序专门选择与资源限制(延迟、大小)相匹配的小型网络。mobilenet主要专注于优化延迟,但也产生小型网络。许多关于小型网络的论文只关注规模,而不考虑速度。

mobilenet主要由深度可分离卷积构建,最初在[26]中引入,随后在Inception模型[13]中使用,以减少前几层的计算量。扁平化网络[16]用完全因式卷积构建了一个网络,展示了极因式网络的潜力。独立于这篇论文,分解网络[34]引入了类似的分解卷积以及拓扑连接的使用。随后,Xception网络[3]演示了如何扩展深度可分离过滤器,以超越Inception V3网络。另一个小型网络是Squeezenet[12],它使用瓶颈方法设计了一个非常小的网络。其他简化计算网络包括结构变换网络[28]和油炸卷积网络[37]。

获得小型网络的另一种方法是收缩、分解或压缩预训练网络。文献中提出了基于积量化[36]、哈希[2]、剪枝、矢量量化和霍夫曼编码[5]的压缩方法。此外,还提出了各种因子分解来加速预训练网络[14,20]。另一种训练小型网络的方法是蒸馏[9],它使用较大的网络来教授较小的网络。它是我们方法的补充,在第4节的一些用例中有介绍。另一种新兴的方法是低比特网络[4,22,11]。

3.MobileNet架构

在本节中,我们首先描述MobileNet所构建的核心层,这些核心层是深度可分离的过滤器。然后描述了MobileNet网络结构,并对两种模型的收缩超参数宽度乘法器和分辨率乘法器进行了描述。

3.1. 深度可分离卷积

MobileNet模型基于深度可分离卷积,这是一种分解卷积的形式,它将标准卷积分解为深度卷积和称为点卷积的1 × 1卷积。对于mobilenet,深度卷积对每个输入通道应用一个过滤器。然后,点卷积应用1 × 1卷积将深度卷积的输出组合起来。标准卷积在一个步骤中过滤并将输入组合成一组新的输出。深度可分离卷积将其分成两层,一个单独的层用于过滤,另一个单独的层用于组合。这种因式分解大大减少了计算量和模型大小。图2显示了如何将标准卷积2(a)分解为深度卷积2(b)和1 × 1点卷积2©。
在这里插入图片描述

标准卷积层以 D F × D F × M D_{F}\times D_{F}\times M DF×DF×M特征图F为输入,生成 D F × D F × N D_{F}\times D_{F}\times N DF×DF×N特征图G,其中 D F D_{F} DF为正方形输入特征图1的空间宽度和高度, M M M为输入通道数(输入深度), D G D_{G} DG为正方形输出特征图的空间宽度和高度, N N N为输出通道数(输出深度)

标准卷积层由大小为 D K × D K × M × N D_{K}\times D_{K}\times M\times N DK×DK×M×N的卷积核K参数化,其中 D K D_{K} DK是假设为平方的核的空间维度, M M M是输入通道的数量, N N N是前面定义的输出通道的数量。

假设步幅为1且填充为1的标准卷积的输出特征图计算如下:
G k , l , n = ∑ i , j , m K i , j , m , n ⋅ F k + i − 1 , l + i − 1 , m G_{k,l,n}=\sum_{i,j,m}K_{i,j,m,n}\cdot F_{k+i-1,l+i-1,m} Gk,l,n=i,j,mKi,j,m,nFk+i1,l+i1,m
标准卷积的计算代价为:
D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F D_{K}\cdot D_{K}\cdot M\cdot N\cdot D_{F}\cdot D_{F} DKDKMNDFDF
其中,计算代价与输入通道数 M M M、输出通道数 N N N、核大小 D k × D k D_{k}\times D_{k} Dk×Dk和特征映射大小 D F × D F D_{F}\times D_{F} DF×DF相乘。MobileNet模型处理了这些术语及其相互作用。首先,它使用深度可分离卷积来打破输出通道数量和核大小之间的相互作用。

深度可分离卷积由两层组成:深度卷积和点卷积。我们使用深度卷积对每个输入通道(输入深度)应用单个过滤器。然后使用点卷积(一个简单的1×1卷积)创建深度层输出的线性组合。mobilenet在这两层都使用了批模和ReLU非线性。

每个输入通道一个滤波器的深度卷积(输入深度)可以写成:
G ^ k , l , n = ∑ i , j , m K ^ i , j , m , n ⋅ F k + i − 1 , l + i − 1 , m \hat G_{k,l,n}=\sum_{i,j,m}\hat K_{i,j,m,n}\cdot F_{k+i-1,l+i-1,m} G^k,l,n=i,j,mK^i,j,m,nFk+i1,l+i1,m
其中: K ^ \hat K K^ D K × D K × M D_{K}\times D_{K}\times M DK×DK×M大小的深度卷积核,其中 K {K} K中的第 m m m个滤波器应用于F中的第 m m m个通道,生成经过过滤的输出特征图 G ^ \hat G G^G的第 m m m个通道。

深度卷积相对于标准卷积是非常有效的。然而,它只是过滤输入通道,并没有将它们组合起来创建新的功能。因此,需要一个额外的层,通过1 × 1卷积计算深度卷积输出的线性组合,以生成这些新特征。

深度卷积和1 × 1(点)卷积的组合被称为深度可分离卷积,它最初在[26]中介绍。

深度可分离卷积代价:
D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + M ⋅ N ⋅ D F ⋅ D F D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F = 1 N + 1 D K 2 \frac{D_{K}\cdot D_{K}\cdot M\cdot D_{F}\cdot D_{F}+M\cdot N\cdot D_{F}\cdot D_{F}}{D_{K}\cdot D_{K}\cdot M\cdot N\cdot D_{F}\cdot D_{F}} = \frac{1}{N} + \frac{1}{D^2_{K}} DKDKMNDFDFDKDKMDFDF+MNDFDF=N1+DK21
MobileNet使用3 × 3深度可分离卷积,其计算量比标准卷积少8 - 9倍,精度仅略有降低,如第4节所示.

在空间维度上的额外因式分解(如[16,31])并没有节省太多的额外计算,因为在深度卷积中花费的计算非常少。

3.2. 网络结构与训练

MobileNet结构是建立在上一节中提到的深度可分离卷积之上的,除了第一层是完全卷积。通过用如此简单的术语定义网络,我们可以很容易地探索网络拓扑,从而找到一个好的网络。表1定义了MobileNet体系结构。所有层后面都有一个batchnorm[13]和ReLU非线性,除了最后的全连接层,它没有非线性,并馈送到一个softmax层进行分类。图3将具有正则卷积、batchnorm和ReLU非线性的层与具有深度卷积、1 × 1点卷积以及每个卷积层后的batchnorm和ReLU的分解层进行了对比。在深度卷积和第一层中使用跨步卷积处理下采样。最终的平均池化将空间分辨率降低到全连接层之前的1。将深度卷积和点卷积作为单独的层来计算,MobileNet有28层。
在这里插入图片描述

在这里插入图片描述

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

MobileNet模型在TensorFlow[1]中使用RMSprop[33]进行训练,并使用类似于Inception V3[31]的异步梯度下降。然而,与训练大型模型相反,我们使用较少的正则化和数据增强技术,因为小型模型在过拟合方面的麻烦较少。当训练mobilenet时,我们不使用侧头或标签平滑,并且通过限制大型Inception训练[31]中使用的小作物的大小来减少图像失真的数量。此外,我们发现在深度滤波器上放置很少或没有权重衰减(l2正则化)是很重要的,因为它们的参数很少。对于下一节中的ImageNet基准测试,所有模型都使用相同的训练参数进行训练,而不考虑模型的大小。

3.3. 宽度倍增器:更薄的模型

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

宽度乘子α的深度可分离卷积的计算代价为:
D K ⋅ D K ⋅ α M ⋅ D F ⋅ D F + α M ⋅ α N ⋅ D F ] ⋅ D F D_{K}\cdot D_{K}\cdot \alpha M\cdot D_{F}\cdot D_{F}+\alpha M\cdot \alpha N\cdot D_{F]}\cdot D_{F} DKDKαMDFDF+αMαNDF]DF
其中α∈(0,1],典型设置为1、0.75、0.5和0.25。α = 1为基线MobileNet, α < 1为降阶MobileNet。宽度乘法器具有减少计算量和参数数量约为 α 2 \alpha^2 α2倍的效果。宽度乘法器可以应用于任何模型结构,以定义一个新的更小的模型,具有合理的精度、延迟和尺寸权衡。它用于定义一个需要从头训练的新的简化结构。

3.4. 分辨率乘数:减少表示

减少神经网络计算成本的第二个超参数是分辨率乘数ρ。我们将其应用到输入图像上,然后每个层的内部表示都被相同的乘法器减少。在实践中,我们通过设置输入分辨率隐式地设置ρ。

现在,我们可以将网络核心层的计算成本表示为具有宽度乘数α和分辨率乘数ρ的深度可分离卷积:
D K ⋅ D K ⋅ α M ⋅ ρ D F ⋅ ρ D F + α M ⋅ α N ⋅ ρ D F ⋅ ρ D F D_{K}\cdot D_{K}\cdot \alpha M\cdot \rho D_{F}\cdot \rho D_{F}+ \alpha M\cdot \alpha N\cdot \rho D_{F}\cdot \rho D_{F} DKDKαMρDFρDF+αMαNρDFρDF
其中ρ∈(0,1],它通常被隐式设置,使得网络的输入分辨率为224,192,160或128。ρ = 1是基线MobileNet, ρ < 1是减少的计算MobileNet。分辨率乘法器具有降低计算成本 ρ 2 \rho^2 ρ2的效果。

作为一个例子,我们可以看看MobileNet中的一个典型层,看看深度可分离卷积、宽度乘数和分辨率乘数如何降低成本和参数。表3显示了一个层的计算和参数的数量,因为架构收缩方法依次应用于该层。第一行显示了一个完整卷积层的多添加和参数,其输入特征图大小为14 × 14 × 512,内核K大小为3 × 3 × 512 × 512。我们将在下一节中详细讨论资源和准确性之间的权衡。

4.实验

在本节中,我们首先研究深度卷积的影响,以及通过减少网络宽度而不是层数来收缩的选择。然后,我们展示了基于两个超参数(宽度乘法器和分辨率乘法器)减少网络的权衡,并将结果与一些流行模型进行比较。然后,我们将研究mobilenet应用于许多不同的应用程序.

4.1. 模型的选择

首先,我们展示了与用全卷积构建的模型相比,深度可分离卷积的MobileNet的结果。在表4中,我们看到,与全卷积相比,使用深度可分离卷积仅在ImageNet上降低了1%的精度,大大节省了多添加和参数.
在这里插入图片描述

接下来,我们将展示使用宽度倍增器的较薄模型与使用较少层的较浅模型的比较结果。为了使MobileNet更浅,去掉表1中特征大小为14 × 14 × 512的5层可分离滤波器。表5显示,在类似的计算和参数数量下,使mobilenet变薄比使它们变浅好3%。
在这里插入图片描述

4.2. 模型收缩超参数

表6显示了使用宽度乘数α缩小MobileNet架构的准确性、计算量和大小权衡。精度平稳下降,直到架构在α = 0.25时变得太小。
在这里插入图片描述

表7显示了通过训练降低输入分辨率的mobilenet,不同分辨率乘数的准确性、计算量和大小权衡。精度在分辨率上平稳下降。
在这里插入图片描述

图4显示了16个模型的ImageNet精度和计算之间的权衡,这些模型由宽度乘子α∈{1,0.75,0.5,0.25}和分辨率{224,192,160,128}的叉积组成。当模型在α = 0.25时变得非常小时,结果与跳跃呈对数线性。
在这里插入图片描述

图5显示了由宽度乘子α∈{1,0.75,0.5,0.25}和分辨率{224,192,160,128}的叉积制成的16个模型的ImageNet精度和参数数量之间的权衡。
在这里插入图片描述

表8比较了完整的MobileNet与原始的GoogleNet[30]和VGG16[27]。MobileNet几乎和VGG16一样精确,但体积是VGG16的1 / 32,计算量是VGG16的1 / 27。它比GoogleNet更精确,但体积更小,计算量少2.5倍以上
在这里插入图片描述

表9比较了宽度倍增器α = 0.5和分辨率降低160 × 160时减小的MobileNet。MobileNet比AlexNet[19]好4%,比AlexNet小45倍,计算量少9.4倍。在相同的尺寸和22倍的计算量下,它也比Squeezenet[12]好4%。
在这里插入图片描述

4.3. 细粒度识别

我们在斯坦福狗数据集[17]上训练MobileNet进行细粒度识别。我们扩展了[18]的方法,从网络上收集了一个比[18]更大但有噪声的训练集。我们使用噪声网络数据预训练一个细粒度的狗识别模型,然后在斯坦福狗训练集上对模型进行微调。斯坦福狗测试集的结果见表10。MobileNet几乎可以在大大减少计算和大小的情况下实现[18]的最先进结果。
在这里插入图片描述

4.4. 大规模地理定位

PlaNet[35]将确定照片在地球上的位置作为一个分类问题。该方法将地球划分为一个地理单元格网格,作为目标类,并在数百万张地理标记照片上训练卷积神经网络。PlaNet已被证明成功地本地化了大量不同类型的照片,并优于处理相同任务的Im2GPS[6,7]

我们在相同的数据上使用MobileNet架构重新训练PlaNet。而基于Inception V3架构的完整PlaNet模型[31]有5200万个参数和57.4亿个多重添加。MobileNet模型只有1300万个参数,通常主体有300万个参数,最后一层有1000万个参数,还有58万个多重添加参数。如表11所示,与PlaNet相比,MobileNet版本的性能仅略有下降,尽管它要紧凑得多。此外,它仍然比Im2GPS有很大的优势。

4.5.人脸属性

MobileNet的另一个用例是压缩具有未知或深奥训练过程的大型系统。在一个人脸属性分类任务中,我们展示了MobileNet和用于深度网络的知识转移技术蒸馏[9]之间的协同关系。我们寻求减少一个具有7500万个参数和16亿个多重添加的大型人脸属性分类器。分类器在类似于YFCC100M[32]的多属性数据集上进行训练。

我们使用MobileNet架构提取一个人脸属性分类器。蒸馏[9]通过训练分类器来模拟更大模型的输出,而不是基本真理标签,因此可以从大型(可能是无限的)未标记数据集进行训练。**结合了蒸馏训练的可扩展性和MobileNet的简约参数化,最终系统不仅不需要正则化(例如权重衰减和早期停止),而且还展示了增强的性能。**从表12中可以明显看出,基于mobilenet的分类器对激进的模型收缩具有弹性:它实现了与内部相似的跨属性的平均平均精度(平均AP),而只消耗了1%的multi - add。
在这里插入图片描述

4.6. 目标检测

MobileNet还可以作为现代目标检测系统的有效基础网络。我们根据最近赢得2016年COCO挑战[10]的工作,报告了针对COCO数据进行目标检测的MobileNet训练的结果。在表13中,MobileNet在fast - rcnn[23]和SSD[21]框架下与VGG和Inception V2[13]进行了比较。在我们的实验中,SSD以300输入分辨率(SSD 300)进行评估,fast - rcnn与300和600输入分辨率(fastrcnn 300, fast - rcnn 600)进行比较。fast - rcnn模型对每张图像评估300个RPN建议框。在剔除8k minival图像的COCO train+val上训练模型,并在minival上进行评估。对于这两种框架,MobileNet实现了与其他网络相当的结果,而计算复杂性和模型大小只有一小部分。
在这里插入图片描述

4.7. 人脸嵌入

FaceNet模型是目前最先进的人脸识别模型[25]。它基于三元组损失构建人脸嵌入。为了建立一个移动FaceNet模型,我们**使用蒸馏来训练,通过最小化FaceNet和MobileNet输出在训练数据上的平方差异。**非常小的MobileNet模型的结果可以在表14中找到。
在这里插入图片描述

5.总结

我们提出了一种新的基于深度可分离卷积的模型架构,称为MobileNets。我们调查了一些导致高效模型的重要设计决策。然后,我们演示了如何使用宽度倍增器和分辨率倍增器来构建更小、更快的mobilenet,通过权衡合理的精度来减少大小和延迟。然后,我们将不同的mobilenet与展示出更大、速度和精度特征的流行模型进行了比较。最后,我们展示了MobileNet应用于各种任务时的有效性。为了帮助MobileNets的采用和探索,我们计划在Tensor Flow中发布模型。

使用宽度倍增器和分辨率倍增器来构建更小、更快的mobilenet,通过权衡合理的精度来减少大小和延迟。然后,我们将不同的mobilenet与展示出更大、速度和精度特征的流行模型进行了比较。最后,我们展示了MobileNet应用于各种任务时的有效性。为了帮助MobileNets的采用和探索,我们计划在Tensor Flow中发布模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值