当前位置 博文首页 > 战争热诚:深度学习论文翻译解析(十七):MobileNets: Efficien

    战争热诚:深度学习论文翻译解析(十七):MobileNets: Efficien

    作者:战争热诚 时间:2021-01-30 15:26

    论文标题:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    论文作者:Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, Hartwig Adam

    论文地址:https://arxiv.org/abs/1704.04861.pdf

    参考的 MobileNets 翻译博客:https://blog.csdn.net/qq_31531635/article/details/80508306

    声明:小编翻译论文仅为学习,如有侵权请联系小编删除博文,谢谢!           

      小编是一个机器学习初学者,打算认真研究论文,但是英文水平有限,所以论文翻译中用到了Google,并自己逐句检查过,但还是会有显得晦涩的地方,如有语法/专业名词翻译错误,还请见谅,并欢迎及时指出。

    如果需要小编其他论文翻译,请移步小编的GitHub地址

      传送门:请点击我

      如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote

    摘要

      我们针对移动端以及嵌入式视觉的应用提出了一类有效的模型叫MobileNets。MobileNets 是基于一种流线型结构使用深度可分离卷积来构造权重深度神经网络。我们介绍两个能够有效权衡延迟和准确率的简单的全局超参数。这些超参数允许模型构造器能够根据特定问题选择合适大小的模型。我们在资源和准确率的权衡方面做了大量的实验并且相较于其他在 ImageNet分类任务上著名的模型有很好的表现。然后,我们演示了MobileNets 在广泛应用上的有效性,实验实例包含目标检测,细粒度分类,人脸属性以及大规模地理位置信息。

    1,引言

      自从著名的深度卷积神经网络 AlexNet 赢得 ImageNet竞赛:ILSVRC 2012 之后,卷积神经网络普遍应用在计算机视觉领域。为了得到更高的准确率,普遍的趋势是使网络更深更复杂。然而,这些在提升准确率的提升在尺寸和速度方面并不一定使网络更加有效。在大多现实世界应用中,比如机器人,无人驾驶和增强现实,识别任务需要在有限的计算平台上实时实现。

      本文描述了一个有效的网络结构以及两组用于构建小型,低延迟模型的超参数,能在移动以及嵌入式视觉应用上轻易匹配设计要求。在第二节中回顾了现有构建小型模型的工作。第三节描述了MobileNet的结构以及两种超参数-宽度乘法器(width multiplier)和分辨率乘法器(resolution multiplier)来定义更小更有效的 MobileNets。第四节描述了在ImageNet上的实验和大量不同的应用场景以及使用实例。第五节以总结和结论结束。

    2,现有工作

      近期已经有一些构造小而有效的神经网络的文献,如SqueezeNet、Flattened convolutional neural networks for feedforward acceleration、Imagenet classification using binary convolutional neural networks、Factorized convolutional neural networks、Quantized convolutional neural networks for mobile devices。这些方法可以大概分为要么是压缩预训练网络,要是直接训练小型网络。本文提出一类神经网络结构允许特定模型开发人员对于其应用上可以选择一个小型网络能匹配已有限制性的资源(延迟,尺寸)。MobileNets 首先聚焦于优化延迟,但也产生小型网络,许多文献在小型网络上只聚焦尺度但是没有考虑过速度问题。

      MobileNets首先用于深度可分离卷积(Rigid-motion scattering for image classification中首先被提出)进行构建,随后被用在Inception结构中(GoogLeNetv2)来减少首先几层的计算量。Flattened Networks 构建网络运用完全分解的卷积并证明了极大分解网络的重要性。而 Factorized Networks介绍了一个相似的分解卷积和拓扑连接的视野。随后,Xception Network描述了如何放大深度可分离滤波器来完成 InceptionV3网络。另一个小型网络是 SqueezeNet,使用 bottleneck 的方法来设计一个小型网络。

      另一种不同的途径就是收缩、分解、压缩预训练网络。基于乘积量化的压缩(Quantized convolutional neural networks for mobile devices.)基于哈希的压缩(Compressing neural networks with the hashing trick)基于剪枝、矢量量化、霍夫曼编码的压缩(Deep compression: Com- pressing deep neural network with pruning, trained quantiza- tion and huffman coding.)也被提出来。另外各种因子分解也被提出来加速预训练网络(Speeding up convolutional neural networks with low rank expansions.)(Speeding-up convolutional neural net- works using fine-tuned cp-decomposition.)其他方法来训练小型网络即为蒸馏法(Distillingtheknowledge in a neural network)即用一个大型的网络来教导一个小型网络。其于我们的方法相辅相成,在第4节中包含了一些我们的用例。另一种新兴的方法即低比特网络(Training deep neural networks with low precision multiplications.)(Quantized neural networks: Training neural net- works with low precision weights and activations.)(Xnor- net: Imagenet classification using binary convolutional neu- ral networks.)。

    3,MobileNet 结构

      本节首先描述MobileNet的核心部分也就是深度可分离卷积。然后描述MobileNet 的网络结构和两个模型收缩超参数即宽度乘法器分辨率乘法器

    3.1  深度可分离卷积

      MobileNet 是一个基于深度可分离卷积的模型,深度可分离卷积是一种将标准卷积分解成深度卷积以及一个 1*1 的卷积即逐点卷积。对于Mobilenet 而言,深度卷积针对每个单个输入通道应用单个滤波器进行滤波,然后逐点卷积应用 1*1 的卷积操作来结合所有深度卷积得到的输出。而标准卷积一步即对所有的输入进行结合得到新的一系列输出。深度可分离卷积将其分为两个部分,针对每个单独层进行滤波然后下一步即结合,这种分解能够有效地大量减少计算量以及模型的大小。如图2所示,一个标准的卷积2(a)被分解成深度卷积2(b)和1*1的逐点卷积2(c)。

      一个标准卷积层输入 DF*DF*M 的特征图 F,并得到一个 DG*DG*N 的输出特征图G,其中 DF 表示输入特征图的宽和高,M是输入的通道数(输入的深度),DG 为输出特征图的宽和高,N是输出的通道数(输出的深度)。

      标准卷积层通过由大小为 DK*DK*M*N 个卷积核 K个参数,其中 DK 是卷积核的空间维数,M是输入通道数,N是输出通道数。

      标准卷积的输出的卷积图,假设步长为1,则padding由下式计算:

      其计算量为:

      其由输入通道数M,输出通道数N,卷积核大小DK,输出特征图大小DF 决定。MobileNet 模型针对其进行改进。首先,使用深度可分离卷积来打破输出通道数与卷积核大小之间的相互连接作用。

      标准的卷积操作基于卷积核和组合特征来对滤波特征产生效果来产生一种新的表示。滤波和组合能够通过分解卷积操作来分成两个独立的部分,这就叫深度可分离卷积,可以大幅度降低计算成本。深度可分离卷积由两层构成:深度卷积和逐点卷积。我们使用深度卷积来针对每一个输入通道用单个卷积核进行卷积,得到输入通道数的深度,然后运用逐点卷积,即应用一个简单的 1*1 卷积,来对深度卷积中的输出进行线性结合。MobileNets 对每层使用 batchnorm 和 ReLU 非线性激活。

      深度卷积对每个通道使用一种卷积核,可以写成:

      其中 Khat 是深度卷积核的尺寸 DK*DK*M,Khat 中第 m 个卷积核应用于 F 中的第 m个通道来产生第 m 个通道的卷积输出特征图 Ghat。

      深度卷积的计算量为:

      深度卷积相对标准卷积十分有效,然而其只对输入通道进行卷积,没有对其进行组合来产生新的特征。因此下一层利用另外的层利用 1*1 卷积来对深度卷积的输出计算一个线性组合从而产生新的特征。

      那么深度卷积加上 1*1 卷积的逐点卷积的结合就叫做深度可分离卷积,最开始在(Rigid-motition scattering for image classification)中被提出。

      深度可分离卷积的计算量为:

      即深度卷积和 1*1 的逐点卷积的和。

      通过将卷积分为滤波和组合的过程得到对计算量的缩减:

      MobileNet 使用 3*3 的深度可分离卷积相较于标准卷积少了8~9倍的计算量,然而只有极小的准确率的下降如第四节。

      另外的空间维数的分解方式如(Flattenedconvolutional neural networks for feedforward acceleration)(Rethinking the inception architecture for computer vision.)中。但是相较于深度可分离卷积,计算量的减少也没有这么多。

    3.2  网络结构和训练

      MobileNet 结构就像前面所提到的由深度可分离卷积所构成,且除了第一层之外为全卷积。通过用这些简单的项定义网络能够更容易的探索网络的拓扑结构来找到一个更好的网络。MobileNet结构由下表1定义。所有层跟着一个Batchnorm以及ReLU非线性激活函数,除了最后一层全连接层没有非线性激活函数直接送入softmax层进行分类。下图3比较了常规的卷积,Batchnorm,ReLU层以及分解层包含深度可分离卷积,1*1卷积,以及在每层卷积层之后的 Batchnorm 和 ReLU 非线性激活函数。下采样通过深度可分离卷积中第一层的深度卷积通过步长来进行控制,最后将卷积层中提取到的特征图经过全局平均池化层降维到1维,然后送入全连接层分成 1000类。将深度卷积和逐点卷积做两层,则MobileNet 含有 28层。

      用这些少数的乘加运算来定义简单的网络是不够的。确保这些操作要十分有效也是非常重要的。实例化非结构稀疏矩阵操作除非有一个非常高的稀疏度,否则不一定比稠密矩阵操作更加快速。我们的模型结构几乎将左右的计算量都放在稠密的 1*1 卷积中,这可以通过高度优化的 GEMM 通过矩阵乘法函数来实现。通常卷积由  GEMM(General Matrix Multiply Functions 的方式) 来实现,但是要求一个 im2col 即在内存中初始化重新排序来映射到 GEMM。比如,这个方法用在 caffe 模型架构中。而 1*1 卷积则不需要内存的重新排序,并且能直接用 GEMM方法实现,因此是最优化的数值线性代数算法之一。MobileNet 95%的计算时间都花费在 1*1 的逐点卷积上,并且占参数量的 75%,如表2所示。其他额外的参数几乎都集中于全连接层。

      MobileNet 模型在 TensorFlow框架中使用与 InceptionV3中一样的 RMSprop 异步梯度下降算法,然而,与训练大型网络不同的是,我们使用了非常少的正则化以及数据增强技术,因为小模型很少有过拟合的问题。当训练 MobileNet时,我们没有使用 side heads 或者标签平滑操作,另外通过限制在大型 Inception 层训练中小的裁剪的大小来减少失真图片的数量。另外,我们发现在深度卷积中尽量不加入权重衰减(L2范数)是非常重要的,因为深度卷积中参数量很小。对于ImageNet 数据集,无论模型大小,所有的模型都被相同的超参数训练模型,下一节来说明。

    3.3  宽度乘法器:更薄的模型

       尽管最基本的 MobileNet 结构已经非常小并且低延迟。而很多时候特定的案例或者应用可能会要求模型变得更小更快。为了构建这些更小并且计算量更小的模型,我们引入了一种非常简单的参数 α 叫做宽度乘法器。宽度乘法器  α 的作用就是对每一层均匀薄化。给定一个层以及宽度乘法器  α,输入通道数 M 变成了  αM 并且输出通道数变成  αN。

      加上宽度乘法器的深度可分离卷积的计算量如下:

      由于 α