摘要
我们提出了一类有效的模型称为移动和嵌入式视觉应用的移动网络。MobileNets是基于流线型架构,使用深度可分卷积来建立轻量级深度神经网络。我们介绍了两个简单的全局超参数,它们可以有效地在延迟和准确性之间进行权衡。这些超参数允许模型构建者根据问题的约束为其应用程序选择适当大小的模型。我们在资源和精度权衡方面进行了大量的实验,并与其他流行的ImageNet分类模型相比,显示了较强的性能。然后,我们演示了MobileNets在广泛的应用和用例中的有效性,包括目标检测、细粒度分类、人脸属性和大规模地理定位。
1、介绍
自从AlexNet通过赢得ImageNet挑战赛:ILSVRC 2012普及了深度卷积神经网络以来,卷积神经网络在计算机视觉中变得无处不在。为了获得更高的精度,一般的趋势是构建更深更复杂的网络。然而,这些提高准确性的进步并不一定使网络在规模和速度方面更有效率。在机器人、自动驾驶汽车和增强现实等许多现实应用中,识别任务需要在一个计算能力有限的平台上及时执行。
本文描述了一种高效的网络架构和两个超参数,以便构建非常小的、低延迟的模型,可以很容易地满足移动和嵌入式视觉应用程序的设计要求。第2节回顾了以前在构建小模型方面的工作。第3节描述了MobileNet架构和两个超参数宽度乘法器和分辨率乘法器,以定义更小和更有效的MobileNet。第4节描述了在ImageNet上的实验以及各种不同的应用程序和用例。第5节以总结和结论结束。
2、先前的工作
在最近的文献中,人们对构建小型而高效的神经网络的兴趣越来越大。许多不同的方法可以大致分为压缩预训练网络和直接训练小型网络。本文提出了一类网络体系结构,它允许模型开发人员为其应用程序选择与资源限制(延迟、大小)匹配的小型网络。MobileNets主要关注于优化延迟,但也产生小的网络。许多关于小型网络的论文只关注规模而不考虑速度。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、MobleNet结构
在这一节,我们首先描述的核心层,MobileNet是建立在其上的深度可分的过滤器。然后描述了MobileNet网络结构,并对两个模型进行了总结,即缩小超参数乘法器和分辨率乘法器。
3.1、切除分离卷积
MobileNet模型是基于深度可分卷积的,深度可分卷积是一种分解卷积的形式,它将标准卷积分解为深度卷积和1×1卷积,称为点卷积。对于MobileNets,深度卷积对每个输入通道应用一个单独的滤波器。点态卷积然后应用1×1的卷积来结合输出深度卷积。一个标准的卷积在一个步骤中过滤并将输入组合成一组新的输出。深度可分离卷积将其分为两层,一层用于滤波,另一层用于合并。这种因式分解的效果是大大减少了计算量和模型大小。图2展示了标准卷积2(a)是如何分解为深度卷积2(b)和1×1点卷积2(c)的。
标准的卷积层将作为输入DF×DF×M功能映射F和产生一个DF×DF×N特性图G, DF是输入特征图的高度和宽度,M是输入通道的数量(输入深度),DG是一个正方形的空间宽度和高度输出特性图和N是输出通道输出(深度)的数量。标准卷积层由大小为DK×DK×M×N的卷积核K参数化,其中DK为假设为平方的核的空间维数,M为输入通道数,N为前面定义的输出通道数。假设stride为1,padding为1,计算标准卷积的输出特征图为:
mathbf{G}_{k, l, n}=sum_{i, j, m} mathbf{K}_{i, j, m, n} cdot mathbf{F}_{k i-1, l j-1, m}
标准卷积的计算成本为:
D_{K} cdot D_{K} cdot M cdot N cdot D_{F} cdot D_{F}
其中,计算代价乘上输入通道M的数量,输出通道N的数量,核大小Dk×Dk, feature map大小DF×DF。MobileNet模型解决了这些术语及其相互作用。首先,它使用深度可分卷积来打破输出通道数量和内核大小之间的交互。标准卷积运算的作用是基于卷积核对特征进行滤波,并结合特征得到新的表示。滤波和组合步骤可分为两个步骤,通过使用分解卷积称为深度可分卷积,以大幅降低计算成本。深度可分卷积由两层构成:深度卷积和点卷积。我们使用深度卷积为每个输入通道应用一个过滤器(输入深度)。点态卷积,一个简单的1×1卷积,然后用来创建一个线性组合的输出的深度层。MobileNets对两个层都使用batchnorm和ReLU非线性。每个输入通道一个滤波器的深度卷积(输入深度)可表示为:
hat{mathbf{G}}_{k, l, m}=sum_{i, j} hat{mathbf{K}}_{i, j, m} cdot mathbf{F}_{k i-1, l j-1, m}
其中K^为大小为DK×DK×M的深度卷积核,其中K^中的第M个滤波器应用于F中的第M个信道,得到滤波后的输出特征映射G^的第M个信道。深度卷积的计算代价为:
D_{K} cdot D_{K} cdot M cdot D_{F} cdot D_{F}
深度卷积相对于标准卷积是非常有效的。但是,它只过滤输入通道,而不将它们组合起来创建新特性。因此,需要通过1×1的卷积来计算深度卷积输出的线性组合,以生成这些新特性。深度卷积和1×1(点态)卷积的组合称为深度可分离卷积,最早是在[26]中引入的。深度可分卷积的代价:
D_{K} cdot D_{K} cdot M cdot D_{F} cdot D_{F} M cdot N cdot D_{F} cdot D_{F}
它是深度卷积和1×1点卷积的和。将卷积表示为滤波和组合的两步过程,计算量减少为:
begin{aligned} & 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_{K}^{2}} end{aligned}
MobileNet使用3×3深度可分卷积,它使用的计算量是标准卷积的8到9倍,仅在精度上略有降低,如第4节所示。空间维度上的额外因式分解,并没有节省很多额外的计算,因为深度卷积的计算量很少。
3.2、卷积结构和训练
MobileNet结构是建立在前一节提到的深度可分卷积,除了第一层是一个完整的卷积。通过用如此简单的术语定义网络,我们可以很容易地探索网络拓扑以找到一个好的网络。MobileNet体系结构定义在表1中。除了最后的全连接层不存在非线性,并输入softmax层进行分类之外,所有层都遵循batchnorm和ReLU非线性。图3对比了一层与正则卷积、batchnorm和ReLU的卷积后的深度卷积、1×1点卷积的分解层和每一层卷积后的batchnorm和ReLU的非线性关系。下行采样在深度卷积和第一层卷积中都使用了strided convolution。最终的平均池将空间分辨率降低到全连接层之前的1。将深度卷积和点卷积计算为独立的层,MobileNet有28层。仅仅用少量的多添加来定义网络是不够的。确保这些操作能够有效地实现也很重要。例如,非结构化的稀疏矩阵操作通常不会比密集矩阵操作快,直到非常高的稀疏程度。我们的模型结构将几乎所有的计算都放在密集的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时,我们不使用侧头或标签平滑,并通过限制在大型初始训练[31]中使用的小型作物的大小来减少图像失真的数量。此外,我们发现在深度方向的滤波器上放很少或没有权值衰减(l2正则化)是很重要的,因为它们的参数很少。对于下一节中的ImageNet基准测试,所有模型都使用相同的训练参数进行训练,而不考虑模型的大小。
3.3、宽度倍增器:更薄的模型
尽管基本的MobileNet体系结构已经很小而且延迟很低,但是很多时候一个特定的用例或应用程序可能需要模型更小和更快。为了构建这些较小和较昂贵的模型计算我们介绍一个非常简单的参数α称为宽度乘数。宽度乘数α的作用是在每一层薄网络统一。对于一个给定的乘数α层和宽度的输入通道数M变成αM和输出通道的数目N变成αN。切除分离卷积的计算成本与宽度乘数α是:
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}
α2 (0;1]典型设置为1、0.75、0.5、0.25。α= 1基线MobileNet和α< 1 MobileNets减少。宽度乘数降低计算成本的影响,参数的数量大约α2平方。宽度乘法器可以应用于任何模型结构,以定义一个新的更小的模型,具有合理的准确性、延迟和大小权衡。它用于定义一个新的简化结构,需要从零开始训练。
3.4、分辨率倍增器:减少表示
第二个hyper-parameter减少神经网络的计算成本是一项决议乘数ρ。我们将其应用于输入图像,每一层的内部表示随后被相同的乘法器缩减。在实践中我们隐式地设置ρ通过设置输入分辨率。我们现在可以表达我们的网络的核心层次的计算成本与宽度切除可分离旋转乘数乘数ρα和解决:
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}
rho in(0,1],通常隐式设置,因此网络的输入分辨率为224、192、160或128。ρ= 1基线MobileNet和ρ< 1计算MobileNets减少。决议乘数的影响由ρ2降低计算成本。作为一个例子,我们可以看看一个典型的层在MobileNet和看到如何深度可分卷积,宽度乘子和分辨率乘子降低成本和参数。表3显示了一个层的计算和参数的数量,因为架构收缩方法依次应用于该层。第一行显示全卷积层的多加和参数,输入feature map大小为14×14×512,内核K大小为3×3×512×512。我们将在下一节详细讨论资源和准确性之间的权衡。
4、实验
在本节中,我们首先研究深度卷积的影响,以及通过减少网络宽度而不是层数来进行收缩的选择。然后,我们展示了基于两个超参数:宽度乘法器和分辨率乘法器减少网络的权衡,并将结果与一些流行的模型进行比较。然后,我们调查了MobileNets应用于许多不同的应用程序。
4.1、模型的选择
首先,我们展示了深度可分卷积的MobileNet与全卷积模型的比较结果。在表4中我们可以看到,使用深度可分卷积与全卷积相比,在ImageNet上只降低了1%的精度,这在多加和参数上节省了很多。接下来,我们将展示使用宽度倍增器的较薄模型与使用较少层的较浅模型的比较结果。为了使MobileNet更浅,删除了表1中的5层可分离滤波器,其特征尺寸为14×14×512。表5显示,在相似的计算和参数数量下,使MobileNets变薄比变浅好3%。
4.2、模型收缩参数
表6显示了精度,计算和尺寸缩小MobileNet架构的权衡宽度乘数α。精度下降平稳,直到架构是由25α=太小。表7显示了通过训练具有降低输入分辨率的MobileNets,不同分辨率乘子的准确性、计算和大小权衡。精度随着分辨率的提高而平稳下降。图4显示了之间的权衡ImageNet 16模型的准确性和计算由宽乘数α2 f1的叉积;0:75;0:5;0:25g和决议f224;192;160;128 g。结果与跳对数线性模型变得非常图5显示之间的权衡ImageNet准确性和参数的数量为16模型由宽乘数α2 f1的叉积;0:75;0:5;0:25g和决议f224;192;160;128 g。表8将完整的MobileNet与原始的GoogleNet[30]和VGG16[27]进行了比较。MobileNet几乎与VGG16一样精确,但它比VGG16小32倍,计算强度低27倍。它比GoogleNet更精确,但体积更小,计算量是后者的2.5倍。表9比较与宽度减少MobileNet乘数α= 0:5和降低分辨率160×160。简化的MobileNet比AlexNet[19]好4%,同时比AlexNet小45倍和少9:4倍的计算。在相同的尺寸和22倍的计算量下,它也比Squeezenet[12]好4%。
4.3、细粒度识别
我们训练MobileNet在斯坦福狗数据集[17]上进行细粒度识别。我们扩展了[18]的方法,并从web上收集了比[18]更大但更嘈杂的训练集。我们使用带噪声的web数据预训练细粒度的犬类识别模型,然后在Stanford Dogs training set上对模型进行微调。Stanford Dogs test set的结果如表10所示。MobileNet几乎可以实现[18]的最先进的结果,大大减少了计算和大小。
4.4、大尺度全局化
行星[35]把确定照片拍摄地点的任务作为一个分类问题。该方法将地球划分成网格状的地理单元,这些单元作为目标类,并在数百万张带有地理标记的照片上训练一个卷积神经网络。PlaNet已经被证明能够成功地定位大量的照片,并且在处理相同任务方面表现得比Im2GPS更出色[6,7]。我们在相同的数据上使用MobileNet架构对PlaNet进行再培训。而基于Inception V3架构[31]的完整行星模型有5200万个参数和57.4亿个mult-add。MobileNet模型只有1300万个参数,通常是300万个参数用于车身,1000万个参数用于最后一层,58万个多附加参数。如表11所示,MobileNet版本虽然更紧凑,但与PlaNet相比,其性能仅略有下降。此外,它的表现仍然远远好于Im2GPS。
4.5、人脸属性
MobileNet的另一个用例是压缩大型系统,有未知或深奥的培训程序。在人脸属性分类任务中,我们展示了MobileNet与蒸馏之间的协同关系,这是一种深度网络的知识传递技术。我们寻求通过7500万的参数和1600万的mult补充来减少一个大的面部属性分类器。分类器在一个与YFCC100M[32]相似的多属性数据集上进行了训练。我们使用MobileNet架构进行人脸属性分类器。通过训练分类器来模拟更大的模型2的输出,而不是地面真理标签,因此可以通过培训分类器来模拟大模型的输出,从而使从大型(以及潜在的无限)未标记的数据集进行培训。结合蒸馏训练的可扩展性和MobileNet的无偏性参数化,最终系统不仅不需要正规化(例如重量衰变和早期停止),而且还演示了增强的性能。从表12中可以看出,mobilenetbased的分类器对攻击性模型的收缩很有弹性:它在跨属性(指AP)中达到了类似的平均精度(指AP),但仅消耗1%的多值。
4.6、目标检测
MobileNet也可以作为一个有效的基础网络部署在现代目标检测系统。我们报告的结果,MobileNet训练的目标检测基于COCO数据基于最近的工作,赢得了2016年COCO挑战[10]。在表13中,MobileNet在fast - rcnn和SSD框架下与VGG和Inception V2进行了比较。在我们的实验中,SSD被评估为300输入分辨率(SSD 300), fast - rcnn被评估为300和600输入分辨率(FasterRCNN 300, fast - rcnn 600)。快速rcnn模型对每个图像评估300个RPN建议框。模型在COCO训练 val上进行训练,排除8k minival图像,在minival上进行评估。对于这两个框架,MobileNet实现了与其他网络的可比较的结果,只有一小部分的计算复杂性和模型大小。
4.7、人脸嵌入
FaceNet模型是目前最先进的人脸识别模型。它建立基于三重损耗的面嵌入。为了建立一个移动的FaceNet模型,我们使用蒸馏来最小化FaceNet和MobileNet输出在训练数据上的平方差异。非常小的MobileNet模型的结果可以在表14中找到。
5、结论
提出了一种基于深度可分卷积的移动网络模型结构。我们研究了一些导致有效模型的重要设计决策。然后,我们演示了如何使用宽度倍增器和分辨率倍增器构建更小、更快的mobilenet,通过权衡一定的精度来减少大小和延迟。然后,我们比较了不同的移动网络和流行的模型,显示出更大的尺寸,速度和准确性的特点。最后,我们展示了MobileNet在广泛应用于各种任务时的有效性。作为帮助采用和探索MobileNets的下一步,我们计划在张量流中发布模型。