MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications(2)

3.MobileNet架构

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

3.1. 深度可分离卷积

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

图二

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

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

        假设标准卷积的输出特征图步长为1,填充的计算为:G_{k,l,n}=\sum_{i,j,m}^{}K_{i,j,m,n}\cdot 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、核大小D_{K} \times D_{K}和特征映射大小D_{F} \times D_{F}的相乘结果。MobileNet模型处理了这些项及其相互作用。首先,它使用深度可分离卷积来打破输出通道数量和核大小之间的相互作用。

        标准卷积运算具有基于卷积核及组合特征的滤波效果,以此产生新的表现的效果。过滤和组合步骤可以通过使用因子卷积(称为深度卷积)拆分为两个步骤来大幅度降低计算成本。

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

        每个输入通道有一个滤波器的深度卷积(输入深度)可以写成:             \hat{G}_{k,l,m}=\sum_{i,j}^{}\hat{K}_{i,j,m}\cdot F_{k+i-1,l+j-1,m}

其中\hat{K}为大小D_{K} \times D_{K} \times M的深度卷积核,将\hat{K}中的第M个滤波器应用于F中的第M个通道,产生过滤后的输出特征图\hat{G}的第M个通道。

        深度卷积的计算成本为:D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F}

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

        将深度卷积和1 × 1(点向)卷积的结合称为深度可分卷积,最早是在[26](Rigid-Motion Scattering for Texture Classification.)中引入的。

        深度可分离卷积成本:D_{K} \cdot D_{K} \cdot M \cdot D_{F}\cdot D_{F}+M \cdot N \cdot D_{F} \cdot D_{F},即是深度卷积和1 × 1点卷积的和。

        通过将卷积表示为滤波和组合的两步过程,我们得到了以下计算量的减少:\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}}

        MobileNet使用3 × 3深度可分卷积,它使用的计算量比标准卷积少8到9倍,精度只下降了一小部分,如第4节所示。

        在空间维度上的额外因式分解(如[16,31](两个例子))并没有节省太多额外的计算,而在深度卷积中只花费很少的计算。

3.2. 网络结构与训练

        MobileNet结构是建立在上一节提到的深度可分离卷积之上的,除了第一层是一个完整的卷积。通过用这样简单的项定义网络,我们能够很容易地探索网络拓扑,找到一个好的网络。MobileNet体系结构的定义见表1。所有层后面都是batchnorm[13](Batch normalization: Accelerating deep network training by reducing internal covariate shift.)和ReLU非线性组合,除了最后的完全连接层,它没有非线性,并进入softmax层进行分类。图3对比了一层规则卷积、batchnorm和ReLU的分解层深度卷积、1 × 1点卷积的非线性以及每层卷积后的batchnorm和ReLU。在深度卷积和第一层中使用跨步卷积处理下采样。最终的平均池化将空间分辨率降低到全连接层之前的1。将深度卷积和点卷积作为单独的层来计算,MobileNet有28层。

表一

图三

         仅仅根据少量的多添加(Mult-Adds)来定义网络是不够的。确保这些操作能够有效地实现也很重要。

         对于实例非结构化稀疏矩阵操作通常不会比密集矩阵操作快,直到非常高的稀疏程度。我们的模型结构将几乎所有的计算放入密集的1 × 1卷积中。这可以通过高度优化的一般矩阵乘法(GEMM)函数来实现。卷积通常由GEMM实现,但需要在内存中进行称为im2col的初始重新排序,以便将其映射到GEMM。例如,在流行的Caffe package[15](Caffe: Convolutional Architecture for Fast Feature Embedding)中就使用了这种方法。1 × 1卷积不需要在内存中重新排序,可以直接用GEMM实现,GEMM是最优的数值线性代数算法之一。MobileNet将95%的计算时间花费在1 × 1卷积上,其中75%的参数也包含在表2中。几乎所有的附加参数都在全连接层中。

表二

        MobileNet模型在TensorFlow[1](Tensorflow: Large-scale machine learning on heterogeneous systems)中训练,使用与Inception V3[31](Rethinking the Inception Architecture for Computer Vision)类似的异步梯度下降法RMSprop[33](Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude.)。然而,与训练大型模型相反,我们使用较少的正则化和数据增强技术,因为小模型很少有过拟合的问题。当训练MobileNets时,我们不使用附属标题或标签平滑,并通过限制在大型Inception训练[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}

其中α∈(0,1],典型设置为1、0.75、0.5和0.25。α = 1为基线MobileNet, α < 1为降阶MobileNet。宽度因子具有减少计算量和参数数量约为\alpha ^{2}的效果。宽度因子可以应用于任何模型结构,以定义一个新的更小的模型,其具有合理的精度、延迟和尺寸权衡。它用于定义一个需要从头训练的新的简化结构。

3.4. 分辨率因子:减少表现

        减少神经网络计算成本的第二个超参数是分辨率因子ρ。我们在输入图像使用它,每个层的内部表现随后被相同的因子减少。在实践中,我们通过设置输入分辨率隐式地设置ρ。

        现在,我们可以将网络核心层的计算成本表示为具有宽度因子α和分辨率因子ρ的深度可分离卷积: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}

其中ρ∈(0,1],它通常被隐式设置,使得网络的输入分辨率为224,192,160或128。ρ = 1是基线MobileNet, ρ < 1是减少计算的MobileNet。分辨率因子具有降低计算成本\rho ^{2}的效果。

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

表三

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值