【论文阅读--轻量化模型】MobileNetsV1: Efficient Convolutional Neural Networks for Mobile Vision Applications

有时候比较基础的论文,阅读时想记录又不想记录的。这种成为一个模块会被高频使用,感觉全文记录有些浪费时间,但转念一想,我们更需要具备一种推演能力设计新网络能力并持续下去,就一定要了解这些流行模块的出现的整体衍生过程,故这里还是记录下。
这段时间兴致突来,返回来看看轻量模型的论文。
论文链接https://arxiv.org/abs/1704.04861

Abstract

我们为移动和嵌入式视觉应用程序提供了一类称为MobileNets的高效模型。

  • MobileNets基于一种简化的架构,该架构使用【深度可分离卷积】来构建轻量级深度神经网络。
    我们引入了两个简单的全局超参数,可以有效地在延迟和准确性之间进行权衡。这些超参数允许模型生成器根据问题的约束条件为其应用程序选择合适大小的模型。

我们在资源和精度权衡方面进行了广泛的实验,与ImageNet分类的其他流行模型相比,我们表现出了强大的性能。然后,我们在广泛的应用和用例中演示了MobileNets的有效性,包括对象检测、细粒度分类、人脸属性和大规模地理定位。

1 Introduction

  • 精度越来越高:自AlexNet通过赢得ImageNet挑战:ILSVRC 2012 推广深度卷积神经网络以来,卷积神经网络在计算机视觉中变得无处不在。总的趋势是制作更深更复杂的网络,以实现更高的精度。
  • 但速度并未提升:这些提高准确性的进步并不一定会使网络在大小和速度方面更加高效。在机器人、自动驾驶汽车和增强现实等许多现实世界应用中,识别任务需要在计算有限的平台上及时执行。
  • 新结构的提出:本文描述了一种高效的网络架构和一组两个超参数,以构建非常小、低延迟的模型,该模型可以轻松地与移动和嵌入式视觉应用的设计要求相匹配。

第2节回顾了构建小模型之前的工作。第3节描述了MobileNet架构和两个超参数宽度乘数和分辨率乘数,以定义更小、更高效的MobileNet。第4节描述了ImageNet上的实验以及各种不同的应用程序和用例。第5节以总结和结论结束。

2 Prior Work

在最近的文献中,人们对构建小而有效的神经网络越来越感兴趣。许多不同的方法通常可分为压缩预训练网络或直接训练小网络。

获取小模型的方法

  • 获得小网络的另一种方法是收缩、因子化或压缩预训练的网络。文献中提出了基于乘积量化[36]、哈希[2]和修剪、矢量量化和霍夫曼编码[5]的压缩。此外,已经提出了各种因子分解来加速预训练的网络。
  • 训练小网络的另一种方法是蒸馏[9],它使用较大的网络来教导较小的网络。它是我们方法的补充,在第4节的一些用例中有介绍。
  • 另一种新兴方法是小网络。
    本文提出了一类网络架构,允许模型开发人员为其应用程序专门选择符合资源限制(延迟、大小)的小型网络。MobileNets主要关注延迟优化,但也会产生小型网络。许多关于小型网络的论文只关注规模,而不考虑速度。

3. MobileNet Architecture

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


3.1 Depthwise Separable Convolution


标准卷积

  • 标准卷积层将 D F ∗ D F ∗ M D_F * D_F*M DFDFM特征图F作为输入,并生成 D F ∗ D F ∗ N D_F * D_F * N DFDFN特征图G。 其中 D F D_F DF D G D_G DG是方形输入特征图的宽度和高度, M M M N N N是输入通道的数量(输入深度)。
    标准卷积层由大小为 D K ∗ D K ∗ M ∗ N D_K*D_K*M*N DKDKMN的卷积核 K 参数化,其中 D K D_K DK是假设为平方的核的空间维度,M是输入信道的数量,N是先前定义的输出信道的数量。

    假设步幅1和填充的标准卷积的输出特征图计算如下: 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,mKi,j,m,nFk+i1,l+j1,m 标准卷积的计算l量为: D K ∗ D K ∗ M ∗ N ∗ D F ∗ D F D_K*D_K*M*N*D_F*D_F DKDKMNDFDF

深度可分离卷积

  • 如下图所示,左边的深度卷积,右边的是点卷积(这里没有使用论文中的图,而是下图实际举例)在这里插入图片描述
    这是一种分解卷积的形式,将标准卷积分解为【深度卷积】和【逐点卷积的1×1卷积】,这种因子分解具有显著减少计算和模型大小的效果。(标准卷积在一个步骤中将输入滤波并组合成一组新的输出。)。
  • 深度卷积:将单个滤波器应用于每个输入信道,用于滤波。计算公式和计算量分别为 G ^ k , l , m = ∑ i , j K ^ i , j , m ∗ F k + i − 1 , l + j − 1 , m \hat{G}_{k,l,m}=\sum_{i,j}{\hat{K}_{i,j,m}*F_{k+i-1,l+j-1,m}} G^k,l,m=i,jK^i,j,mFk+i1,l+j1,m D K ∗ D K ∗ M ∗ D F ∗ D F D_K*D_K*M*D_F*D_F DKDKMDFDF
    然而,它只过滤输入通道,不将它们组合起来创建新功能。因此,为了生成这些新特征,需要通过1×1卷积计算深度卷积输出的线性组合的附加层。
  • 点卷积:然后应用1×1卷积来组合深度卷积的输出,用于合并。由于点卷积为1x1的卷积。所以计算量为 M ∗ N ∗ D F ∗ D F M*N*D_F*D_F MNDFDF

    深度可分离卷积和标准卷积的比例为 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*D_K*M*D_F*D_F+M*N*D_F*D_F}{D_K*D_K*M*N*D_F*D_F}=\frac{1}{N}+\frac{1}{D^{2}_{K}} DKDKMNDFDFDKDKMDFDF+MNDFDF=N1+DK21在这里插入图片描述
    图3将具有规则卷积、批范数和ReLU非线性的层与具有深度卷积、1×1逐点卷积以及每个卷积层之后的批范数和ReLU的因子化层进行了对比。

Mobilenet

  • MobileNet使用33个深度可分离卷积,其计算量是标准卷积的8至9倍,精度仅略有降低,如第4节所示。
  • 如[16,31]中所述的空间维度中的因子分解不会节省太多额外的计算,因为在深度卷积中花费的计算很少。

3.2. Network Structure and Training

在这里插入图片描述

【网络结构】

  • MobileNet结构建立在上一节提到的深度可分离卷积上,除了第一层是全卷积。
  • MobileNet体系结构定义见表1。所有层之后都是batchnorm 和ReLU激活函数,但最终的全连接层除外,该层没有非线性,并接入softmax层进行分类。
  • 下采样在深度卷积和第一层中使用跨步卷积来处理。在全连接层之前,最终平均池将空间分辨率降低到1。将深度卷积和逐点卷积计算为单独的层,MobileNet有28层。

【运行效率】使用更少的Mult-Adds来定义网络是不够的,还要确保这些操作能够高效实施。

  • 我们的模型结构将几乎所有的计算放入密集的1×1卷积。这可以通过高度优化的通用矩阵乘法(GEMM)函数来实现。1×1卷积不需要在内存中重新排序,可以直接使用GEMM实现。

    非结构化稀疏矩阵运算通常比密集矩阵运算慢,直到非常高的稀疏度。
    GEMM是最优化的数值线性代数算法之一。卷积通常由GEMM实现,但需要在内存中使用im2col的初始重新排序,以便将其映射到GEMM。例如,这种方法被用于流行的Caffe包中。

  • MobileNet将95%的计算时间用于1*1卷积,如表2所示,该卷积也具有75%的参数。几乎所有参数都在全连接的层中。
    在这里插入图片描述

【训练时】

  • MobileNet模型在TensorFlow[1]中使用RMSprop,类似于Inception V3的异步梯度下降。
  • 与训练大型模型相反,我们使用较少的正则化和数据增强技术,因为小型模型 较少出现过拟合问题。
    1)在训练MobileNets时,我们不使用侧头(side heads)或标签平滑,
    2)通过限制大型初始训练中使用的小作物的大小,来减少图像失真量。
    3)我们发现在深度卷积上放置 很少甚至没有 权重衰减(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*D_K*αM*D_F*D_F+αM*αN*D_F*D_F DKDKαMDFDF+αMαNDFDF其中α∈(0,1],典型设置为1,0.75,0.5和0.25。α=1是基线MobileNet,α<1是简化的MobileNet。
宽度系数的作用是将计算成本和参数数量按二次方减少大约 α 2 α^2 α2。宽度乘数可以应用于任何模型结构,以定义具有合理精度、延迟和大小权衡的新的较小模型。它用于定义需要从头开始训练的新的简化结构。


3.4 Resolution Multiplier: Reduced Representation

降低神经网络计算成本的第二个超参数是分辨率乘数ρ。我们将此应用于输入图像,然后通过相同的乘数减少每个层的内部表示。实际上,我们通过设置输入分辨率隐式地设置ρ。
我们现在可以将网络核心层的计算成本表示为具有宽度乘数α和分辨率乘数ρ的深度可分离卷积:
在这里插入图片描述
其中ρ∈(0,1])通常隐式设置,使得网络的输入分辨率为224、192、160或128。ρ=1是基线MobileNet,ρ<1是简化计算MobileNet。分辨率乘数具有将计算成本降低 ρ 2 ρ^2 ρ2 的效果。
作为一个例子,我们可以看看MobileNet中的一个典型层,看看深度可分离卷积、宽度乘数和分辨率乘数如何降低成本和参数。表3显示了当架构收缩方法顺序应用于层时,层的计算和参数数量。第一行显示了全卷积层的Mult Adds和参数,输入特征图大小为14×14×512,内核K大小为3×3×512×512。我们将在下一节中详细讨论资源和准确性之间的权衡。
在这里插入图片描述

4. Experiments

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


4.1 Model Choices

  • 我们展示了与使用全卷积构建的模型相比,具有深度可分离卷积的MobileNet的结果。
    在表4中,我们看到,与全卷积相比,使用深度可分离卷积仅将ImageNet上的精度降低1%。这大大节省了多次加法和参数。
    在这里插入图片描述
  • 我们将显示【使用宽度系数的较薄模型】与【使用较少层的较浅模型】的比较结果。为了使MobileNet更浅,删除了表1中特征尺寸为14×14×512的5层可分离滤波器。表5显示,在类似的计算和参数数量下,使MobileNets更薄比使其更浅要好3%
    在这里插入图片描述

4.2 Model Shrinking Hyperparameters

  • 表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比较了宽度乘数α=0.5和分辨率160×160的简化MobileNet。简化的MobileNet比AlexNet好4%[19],同时比AlexNet小45倍,计算量少9.4倍。在大约相同的大小和22倍的计算量下,它也比Squeezenet[12]好4%。
    在这里插入图片描述

5 结论

我们提出了一种新的基于深度可分离卷积的移动网络模型体系结构。我们研究了一些重要的设计决策,得出了一个有效的模型。然后,我们演示了如何使用宽度乘数和分辨率乘数构建更小、更快的移动网络,通过权衡合理的精度来减少大小和延迟。然后,我们将不同的MobileNet与流行的模型进行了比较,证明了其尺寸、速度和精度的优越性。最后,我们展示了MobileNet在应用于各种任务时的有效性。作为帮助采用和探索MobileNets的下一步,我们计划在TensorFlow中发布模型

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值