MobileNetV1

MobileNetV1:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

0 摘要

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

1 介绍

自从AlexNet[19]通过赢得ImageNet挑战赛:ILSVRC 2012[24]推广深度卷积神经网络以来,卷积神经网络在计算机视觉中变得无处不在。总的趋势是制作更深、更复杂的网络,以实现更高的精度[27,31,29,8]。然而,这些提高准确性的进步并不一定会使网络在大小和速度方面更高效。在机器人、自动驾驶汽车和增强现实等许多现实世界应用中,识别任务需要在计算有限的平台上及时执行。本文描述了一种高效的网络架构和一组两个超参数,以构建非常小、低延迟的模型,该模型可以很容易地与移动和嵌入式视觉应用的设计要求相匹配。第2节回顾了构建小模型的前期工作。第3节描述了MobileNet架构和两个超参数宽度因子和分辨率因子,以定义更小、更高效的MobileNets。第4节描述了ImageNet上的实验以及各种不同的应用程序和用例。第5节以总结和结论结束。

2 先前工作

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

MobileNets主要由[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卷积。对于MobileNets,深度卷积将单个卷积核应用于每个输入通道。然后,逐点卷积应用1×1卷积来组合深度卷积的输出。标准卷积在一个步骤中将输入和卷积核并组合成一组新的输出。深度可分离卷积将其分为两层,一层用于卷积,另一层用于组合。这种分解具有显著减少计算和模型大小的效果。图2显示了如何将标准卷积2(a)分解为深度卷积2(b)和1×1点卷积。

标准卷积层将特征图 D F × D F × M D_F \times D_F\times M DF×DF×M作为输入,并生成 D G × D G × N D_G \times D_G\times N DG×DG×N特征图 G G G,其中 D F D_F DF是正方形输入特征图 1 ^1 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和填充的标准卷积的输出特征图计算如下:

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

标准卷积有如下计算代价:
D K × D K × M × N × D F × D F (2) D_K \times D_K\times M\times N\times D_F \times D_F \tag{2} DK×DK×M×N×DF×DF(2)

其中计算成本乘法地取决于输入通道的数量 M M M、输出通道的数量 N N N、内核大小 D k × D k D_k×D_k Dk×Dk和特征图大小 D F × D F D_F×D_F DF×DF。MobileNet模型解决了这些术语及其相互作用。首先,它使用深度可分离卷积来打破输出通道数量和卷积核大小之间的相互作用。

标准卷积运算具有基于卷积核过滤特征和组合特征以产生新表示的效果。通过使用被称为深度可分离卷积的分解卷积,可以将滤波和组合步骤分成两个步骤,以大幅降低竞争成本。深度可分离卷积由两层组成:深度卷积和点卷积。我们使用深度卷积对每个输入通道(输入深度)应用单个深度可分离卷积由两层组成:深度卷积和点卷积。我们使用深度卷积对每个输入通道(输入深度)应用单个滤波器。然后使用逐点卷积,即简单的1×1卷积,创建深度层输出的线性组合。MobileNets对两个层都使用了批归一化和ReLU非线性激活函数。每个输入通道(输入深度)有一个滤波器的深度卷积可以写为:

G ^ k , l , n = ∑ i , j , m K ^ i , j , m , n ⋅ F k + i − 1 , l + j − 1 , m (3) \hat G_{k,l,n}=\sum_{i,j,m}\hat K_{i,j,m,n}\cdot F_{k+i-1,l+j-1,m} \tag{3} G^k,l,n=i,j,mK^i,j,m,nFk+i1,l+j1,m(3)

其中 K ^ \hat K K^是大小为 D K × D K × M D_K×D_K×M DK×DK×M的深度卷积核。第 m m m个滤波器应用于F中的第m个信道以产生输出特征图 G ^ \hat G G^的第 m m m个通道。

深度卷积有如下计算代价:
D K × D K × M × D F × D F (4) D_K \times D_K\times M\times D_F \times D_F \tag{4} DK×DK×M×DF×DF(4)

相对于标准卷积,深度卷积非常有效。然而,它只过滤输入通道,不会将它们组合以创建新功能。因此,需要一个额外的层来计算通过1×1卷积的深度卷积输出的线性组合,以生成这些新特征。深度卷积和1×1(逐点)卷积的组合称为深度可分离卷积,最初在[26]中介绍。

深度可分离卷积有如下计算代价:
D K × D K × M × D F × D F + M × N × D F × D F (5) D_K \times D_K\times M\times D_F \times D_F+M\times N\times D_F \times D_F \tag{5} DK×DK×M×DF×DF+M×N×DF×DF(5)

它是深度卷积和 1 × 1 1\times 1 1×1卷积的和。

通过将卷积表示为滤波和组合的两步过程,我们可以减少以下计算:
1 N + 1 D k 2 (6) \frac{1}{N}+\frac{1}{D_k ^2} \tag{6} N1+Dk21(6)

MobileNet使用3×3深度可分离卷积,其计算量比标准卷积少8到9倍,精度仅略有下降,如第4节所示。

空间维度中的额外因式分解(如[16,31]中所述)不会节省太多额外的计算,因为深度卷积中花费的计算很少。

在这里插入图片描述
图2.将(a)中的标准卷积滤波器替换为两层:(b)中的深度卷积和©中的点卷积,以构建深度可分离滤波器。

3.2 网络结构与训练

MobileNet结构构建在深度可分离的卷积上,如前一节所述,除了第一层是全卷积。通过用如此简单的术语定义网络,我们可以轻松探索网络拓扑以找到良好的网络。MobileNet架构定义见表1。所有层之后都是BN层[13]和ReLU非线性,除了最终的完全连接层,该层没有非线性,并馈入softmax层进行分类。图3将具有规则卷积、批归一化和ReLU非线性的层与具有深度卷积、1×1点卷积以及每个卷积层之后的批归一化与ReLU的分解层进行了对比。下采样在深度卷积和第一层中使用跨步卷积处理。最终平均池化在完全连接层之前将空间分辨率降低到1。将深度卷积和点卷积计算为单独的层,MobileNet有28层。

在这里插入图片描述
图3.左图:标准卷积层,带batchnorm和ReLU。右:深度可分离卷积,带Depthwise和Pointwise层,后跟batchnorm和ReLU。

仅仅用少量的乘加数来定义网络是不够的。同样重要的是,确保这些操作能够有效实施。例如,非结构化稀疏矩阵操作通常不比密集矩阵操作快,直到达到非常高的稀疏性水平。我们的模型结构将几乎所有的计算都放入密集的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]的异步梯度下降。然而,与训练大模型相反,我们使用较少的正则化和数据增强技术,因为小模型的过拟合问题较少。在训练MobileNets时,我们不使用side heads or label smoothing,此外,通过限制大型初始训练中使用的小裁剪的大小来减少图像失真量[31]。此外,我们发现在深度方向滤波器上放置很少或没有权重衰减(L2正则化)非常重要,因为它们的参数非常少。对于下一节中的ImageNet基准测试,所有模型都使用相同的训练参数进行训练,而不管模型的大小。

在这里插入图片描述

3.3 宽度因子:更瘦的模型

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

具有宽度因子 α α α的深度可分离卷积的计算成本为:
D K × D K × α M × D F × D F + α M × α N × D F × D F (7) D_K \times D_K\times \alpha M\times D_F \times D_F+\alpha M\times \alpha N\times D_F \times D_F \tag{7} DK×DK×αM×DF×DF+αM×αN×DF×DF(7)

其中 α ∈ ( 0 , 1 ] α\in(0,1] α(0,1],典型设置为1、0.75、0.5和0.25。 α = 1 α=1 α=1是基线MobileNet, α < 1 α<1 α<1是简化的MobileNets。宽度因子的作用是将计算成本和参数的数量大致二次减少 α 2 α^2 α2。宽度因子可以应用于任何模型结构,以定义一个新的更小的模型,具有合理的精度、延迟和大小权衡。它用于定义一个需要从头开始训练的新的简化结构。

3.4. 分辨率:简化表示

降低神经网络计算成本的第二个超参数是分辨率因子 ρ ρ ρ。我们将此应用于输入图像,并且每个层的内部表示随后被相同的因子减少。实际上,我们通过设置输入分辨率来隐式设置 ρ ρ ρ。我们现在可以将网络核心层的计算成本表示为具有宽度因子 α α α和分辨率因子 ρ ρ ρ的深度可分离卷积:
D K × D K × α M × ρ D F × ρ D F + α M × α N × ρ D F × ρ D F (8) D_K \times D_K\times \alpha M\times ρD_F \times ρD_F+\alpha M\times \alpha N\times ρD_F \times ρD_F \tag{8} DK×DK×αM×ρDF×ρDF+αM×αN×ρDF×ρDF(8)

式中 ρ ∈ ( 0 , 1 ] ρ\in(0,1] ρ(0,1],通常隐式设置,使得网络的输入分辨率为224、192、160或128。 ρ = 1 ρ=1 ρ=1为基线MobileNet, ρ < 1 ρ<1 ρ<1为简化计算MobileNets。分辨率乘数具有将计算成本降低 ρ 2 ρ^2 ρ2的效果。

作为一个例子,我们可以查看MobileNet中的一个典型层,看看深度可分离卷积、宽度因子和分辨率因子如何降低成本和参数。表3显示了当体系结构收缩方法顺序应用于层时,层的参数的计算和数量。第一行显示了全卷积层的Mult Adds和参数,输入特征图大小为14×14×512,卷积核K大小为3×3×512×512。我们将在下一节详细讨论资源和精度之间的权衡。

在这里插入图片描述

4 实验

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

4.1 模型选择

首先,我们展示了与使用完全卷积构建的模型相比,使用深度可分离卷积的MobileNet的结果。在表4中,我们看到,与全卷积相比,使用深度可分离卷积在ImageNet上的精度仅降低了1%,这大大节省了mult-adds和参数。

接下来,我们将比较具有宽度因子的较薄模型和使用较少层的较浅模型的结果。为了使MobileNet更浅,删除了表1中特征大小为14×14×512的5层可分离过滤器。表5显示,在相似的计算和参数数量下,使MobileNets更薄比使其更浅要好3%。

在这里插入图片描述

4.2 模型收缩超参数

表6显示了使用宽度因子 α α α缩小MobileNet架构的准确性、计算和大小权衡。精度平稳下降,直到架构在 α = 0.25 α=0.25 α=0.25时变得太小。

表7显示了通过使用降低的输入分辨率训练MobileNets,不同分辨率乘数的精度、计算和大小权衡。准确度在分辨率范围内平稳下降。

图4显示了ImageNet精度与16个模型的计算之间的权衡,这16个模型是由宽度因子 α ∈ { 1 , 0.75 , 0.5 , 0.25 } \alpha\in \{1,0.75,0.5,0.25\} α{1,0.75,0.5,0.25}和分辨率 ρ ∈ { 224 , 192 , 160 , 128 } \rho\in \{224,192,160,128\} ρ{224,192,160,128}的叉积得出的。当模型在 α = 0.25 α=0.25 α=0.25时非常小时,结果是对数线性的,有跳跃。
在这里插入图片描述
图4.ImageNet基准上计算量和准确率关系

图5显示了ImageNet精度和16个模型的参数数量之间的权衡,这些模型是由宽度因子和分辨率的叉积制成的。
在这里插入图片描述
图5.ImageNet基准上参数量和准确率关系

表8将完整的MobileNet与原始的GoogleNet[30]和VGG16[27]进行了比较。MobileNet几乎与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]的方法,并从网络中收集了比[18]更大但有噪声的训练集。我们使用嘈杂的网络数据来预训练细粒度的狗识别模型,然后在斯坦福狗训练集上对模型进行微调。斯坦福狗测试集的结果见表10。MobileNet几乎可以实现[18]中最先进的结果,大大减少了计算和大小。

在这里插入图片描述

4.4 Large Scale Geolocalizaton

4.5 Face Attributes

MobileNet的另一个用例是使用未知或深奥的训练过程压缩大型系统。在人脸属性分类任务中,我们演示了MobileNet与深度网络的知识转移技术蒸馏[9]之间的同步关系。我们试图减少一个具有7500万个参数和1600万个Mult Adds的大型面部属性分类器。分类器在类似于YFCC100M[32]的多属性数据集上进行训练。

我们使用MobileNet架构提取人脸属性分类器。提取[9]通过训练分类器来模拟更大模型2的输出,而不是地面真值标签,从而能够从大的(可能是无限的)未标记数据集进行训练。结合蒸馏训练的可扩展性和MobileNet的简约参数化,最终系统不仅不需要正则化(例如,权重衰减和提前停止),而且表现出增强的性能。从表12可以明显看出,基于MobileNet的分类器对激进的模型收缩具有弹性:它实现了与内部相似的跨属性平均精度(平均AP),同时只消耗1%的Multi-Adds。

在这里插入图片描述

4.6目标检测

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

4.7 Face Embeddings

FaceNet模型是最先进的人脸识别模型[25]。它基于三元损失构建人脸嵌入。为了构建移动FaceNet模型,我们使用蒸馏来通过最小化FaceNet和MobileNet输出在训练数据上的平方差来训练。小型MobileNet模型的结果见表14。

在这里插入图片描述

5 Conclusion

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值