MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
摘要和Prior Work就略了,懒:)
 
Summary:
总的来说,MobileNet相对于标准卷积过程有以下几点不同:
1) 将标准的卷积操作分为两步:depthwise convolution和pointwise convolution。即先分解卷积滤波,再用1x1的卷积连接起来。通过文中的计算复杂度可以看出MobileNet的计算量降低了很多。
2) 引入了两个超参数:width multiplier和resolution multiplier。这两个超参数的引入大量减少了计算量,加速了网络的计算。其中width multiplier是对输入输出通道数进行瘦身,resolution multiplier是通过缩小输入图像的分辨率(input resolution)来隠式的达到。
 
1. Introduction
介绍了一种高效的网络架构和两个超参数,以便构建非常小的,低延迟(快速度)的模型,可以轻松匹配移动和嵌入式视觉应用的设计要求。引入的两个简单的全局超参数,使得模型可以在速度和准确度之间有效地进行折中。
MobileNets主要由深度可分离卷积(depthwise separable convolutions)构建(最初在一篇论文有提及,随后用于Inception模型以减少前面几层的运算)。扁平化的网络通过完全分解的卷积建立,并显示出极大的因式分解网络的潜力。
获取小型网络的另一个办法是缩小,分解或者压缩训练好的模型。文献中基于压缩的方法有productquantization,哈希法与pruning,vectorquantization和霍夫曼编码压缩。此外,各种各样的因式分解方法被提出来用于加速训练好的网络。培训小型网络的另一种方法是distillation(蒸馏法),使用更大的网络来教授小一点的网络。它是我们方法的补充,并在第四节的一些使用案例中有所涉及。另一种新兴的方法是low bit networks。
 
2. MobileNet Architecture
2.1 Depthwise Separable Convolution
MobileNet模型是基于深度可分离卷积(depthwise separable convolutions),它是factorized convolutions的一种,而factorized convolutions将标准化卷积分解为深度卷积和1x1卷积(pointwise convolution)。标准的卷积过程(standard convolation)是将输入滤波(kernels)和combine输入到一系列输出(output channels)这一个步骤来完成的。而depthwise separable convolutions将其分成两层:一层用于滤波,一层用于combine,这种分解过程(factorization)具有极大减少计算量和模型大小的作用。如下图所示,2(a)显示的是一个标准卷积过程,2(b)和2(c)是将2(a)分解为(factorized) depthwise separable convolutions过程。
一个标准的卷积层输入维度为DFxDFxM的特征图谱F,产生DFxDFxN(论文中为DF,但我认为这里应该是DG吧。。因为输出特征图的宽高不一定和输入相同,要看stride和padding。后一句也说了是DG)的特征图谱G。其中DF是正方形输入特征图谱的空间宽和高,M是输入通道的数量(inputdepth),DG是正方形输出特征图谱的空间宽和高,N是输出通道的数量(outputdepth)。如果假设卷积stride是1并考虑padding,那么标准化卷积操作的输出特征图谱为:
标准卷积的计算复杂度为:
该计算复杂度依赖于输入通道M,输出通道N,卷积核DKxDK和特征图谱DFxDF。
标准的卷积操作为了生成新的表示需要基于卷积核和combine特征来过滤特征。这种滤波和combine操作可以通过使用分解卷积(factorized convolutions)即深度可分离卷积(depthwise separable convolution)来大幅降低计算复杂度。
Depthwise separable convolutions包括两层:depthwise convolutions和pointwise convolutions。depthwise convolutions对每个输入通道应用单一滤波器,pointwise convolutions(1x1卷积)用来对depthwise layer的输出创建一个线性叠加。MobileNets对两层卷积层都使用了BatchNormalization和ReLU非线性激活单元。
每个输入通道一个滤波器的depthwise convolution可以被写为:
K是depthwise convolution的卷积核,其尺寸为DK*DK*M。卷积核K的第m个滤波器被应用于F的第m个通道来生成特征图G的第m个通道。
Depthwise convolution的计算复杂度为:
Depthwise separable convolutions的计算复杂度为:
是depthwise和1x1 pointwise convolutions的计算复杂度之和。
通过将卷积表示为滤波和组合的两个过程处理,我们可以减少计算量:
MobileNets使用3x3的depthwise separable convolutions比standard convolutions减少了8-9倍的计算复杂度,而且只是减少了一点的准确率。
 
2.2 Network Structure and Training
MobileNet架构的定义见Table 1. 所有层都应用了batchnorm和ReLU,除了最后的全连接层没有非线性激活函数而直接馈送到softmax层作进行分类。
Figure 3 比较了包含常规卷积,batchnorm和ReLU非线性激活的卷积层与包含depthwise convolution,1x1 pointwise convolution和每一层后的batchnorm和ReLU非线性激活的分解层。在depthwise convolution和第一层都能处理下采样问题。应用在全连接层前的最后的平均池化层将spatial resolution

减为1(啥意思??)。如果将depthwise和pointwise算为独立的层,MobileNet有28层。
 
MobileNet几乎全部的计算都在1x1卷积中。这可以通过高度优化的通用矩阵乘法(GEMM)函数来实现。通常,卷积由GEMM来实现,但需要在称为im2col的内存中进行初始重新排序,以将其映射到GEMM。1x1的卷积不需要内存中的这种重新排序,且可以用GEMM(最优化的数值代数算法之一)直接来实现。MobileNet的95%的计算时间都花在1x1的卷积上,且如Table 2所示的75%的参数也都在1x1的卷积层。几乎所有其他的参数都在全连接层。
MobileNet以TensorFlow使用类似于Inception V3的异步梯度下降的RMSprop进行训练。然而,相较于训练大模型,我们较少的使用正则化和数据增加技术,因为小模型很少有过拟合的麻烦(没理解?)。训练MobileNets的时候我们不使用side heads或label smoothing并通过限制crops的尺寸来减少图像扭曲的数量。另外,我们发现在depthwise滤波器上使用很少或者没有权重衰减(L2 regularization)是很重要的,因为其参数很少。在下一节的ImageNet benchmarks,不管模型的尺寸大小,所有模型都用相同的训练参数来训练。
 
2.3 Width Multiplier: Thinner Models
尽管基本的MobileNet架构已经很小且延迟低,但很多特殊用例或应用仍需要此模型更小更快。为了进一步构建更小和更低的计算开销的模型,我们引入一个非常简单的参数α,称为width multiplier。它的作用是在每一层均匀地给网络瘦身。对于一个给定的层和α,输入通道数M变成αM,输出通道数N变成αN。
使用width multiplier α的depthwise separable convolutions的计算复杂度为:
其中α∈(0,1],通常设为1, 0.75, 0.5和0.25。α=1是基础MobileNet,α<1是瘦身的MobileNets。Width multiplier具有降低计算复杂度和参数数量(大概为α的二次方)的作用。在有合理的准确率、延迟和尺度之间的权衡下,Width multiplier可以应用于任何模型结构来定义一个新的且更小的模型。它用于定义新的简化的结构,但需要重新训练。
 
2.4 Resolution Multiplier: Reduced Representation
第二个用来减少神经网络计算复杂度的超参数是resolution multiplier ρ。我们将它应用在输入图像,并且每一层的内部特征随后被相同的multiplier减少。实际应用中,我们通过设置input resolution隠式的设定ρ。
我们现在可以将我们网络的核心层的计算复杂度表示为带有width multiplier α和resolution multiplier ρ 的depthwise separable convolutions:
其中ρ∈(0,1],通常设为224, 192, 160或128。ρ=1表示基础MobileNet,ρ<1表示reduced computation MobileNets。Resolution multiplier可以减少的计算复杂度为ρ的二次方。
作为一个例子我们可以看一个MobileNet中的典型层,看看depthwise separable convolutions,width multiplier和resolution multiplier怎么降低复杂度和参数的。Table 3展示了不同架构收缩方法应用于卷积层的计算(Computation)和参数数量。第一行是输入feature map尺寸为14x14x512,kernel K尺寸为3x3x512x512的全卷积层的Mult-Adds和Paramerters。我们在下一节会深入研究如何在resources和accuracy之间权衡。
 
3. Experiments
在这一节,我们首先研究depthwise convolutions和通过减小网络的width而不是层数的收缩的选择。然后我们展示基于两个超参数:width multiplier和resolution multiplier来reduce网络的权衡,并和一些流行的模型作比较。最后我们讨论将MobileNets应用于一些不同的应用。
 
3.1 Model Choices
首先,我们展示具有depthwise separable convolutions的MobileNet和用full convolutions构建的模型的比较结果。在Table 4中我们看到在ImageNet上使用depthwise separable convolutions相较于full convolutions只减少了1%的正确率,并在mult-adds和parameters上节省了很大成本。
然后,我们展示使用width multiplier的更瘦的模型和使用更少层的较浅的模型的比较结果。为了让MobileNet更浅,Table 1中的feature size为14x14x512的5层separable filters被移除了。Table 5展示了在相似计算和参数数量下,让MobileNets更瘦比让其更浅要好3%左右。
 
3.2 Model Shrinking Hyperparameters
Table 6所示为使用width multiplier α的收缩MobileNet结构的accuracy, computation和size之间的权衡。Accuracy平滑的下降直到架构被收缩很小到α=0.25。
Table 7所示为通过使用reduced input resolutions在不同resolution multipliers下的accuracy, coumputation和size之间的权衡。Accuracy随resolution下降而平滑的下降。
Figure 4所示为在ImageNet数据集上,由width multiplier α∈{1, 0.75, 0.5, 0.25}和resolutions {224, 192, 160, 128}组合成的16个模型的accuracy和computation。结果是对数线性的(log linear),当模型非常小时(α=0.25),模型有一个跳跃。
Figure 5所示为在ImageNet数据集上,由width multiplier α∈{1, 0.75, 0.5, 0.25}和resolutions {224, 192, 160, 128}组合成的16个模型的accuracy和parameters数量之间的trade offs。
Table 8比较了full MobileNet和原始的GoogleNet, VGG16. 在模型大小小了32倍,计算复杂度小了27倍的情况下,MobileNet的accurate和VGG16相近。MobileNet在模型比GoogleNet更小且高于2.5倍的复杂度降低的情况下MobileNet拥有更高的accurate。
Table 9比较了使用width multiplier α=0.5和reduced resolution 160x160的reduced MobileNet。在模型大小45倍小和计算复杂度9.4倍小的Reduced MobileNet比AlexNet好4%。在相同size和计算复杂度22倍小的情况下,MobileNet也比Squeezenet好4%。
 
3.3 Fine Grained Recognition
我们在Stanford Dogs数据集上训练细粒度识别的MobileNet模型。我们扩展了[18]的方法并从web上收集了一个更大但有噪声的训练集。我们使用有噪声的web数据来预训练一个细粒度的狗识别模型,然后在Stanford Dogs训练集上fine tune模型。在Stanford Dogs测试集上的结果见Table 10。MobileNet在大幅reduce computation和size的情况下,几乎可以实现state of the art的结果。
 
3.4 Large Scale Geolocalization
PlaNet[35] 将确定一张拍摄的照片在地球上的哪个地方作为分类问题。该方法将地球划分为一个用作目标类的地理单元格,并在数百万个地理标记的照片上训练卷积神经网络。
我们使用MobileNet架构在相同数据上重新训练PlaNet。Full PlaNet模型基于Inception V3架构并具有5200万个参数和57.4亿mult-adds。MobileNet模型只有1300万个参数(通常,300万个用在body,1000个用于最后一层)和58万个mult-adds。如Table 11所示,在不管更紧凑的情况下,MobileNet版本与PlaNet相比只有轻微的性能下降。此外,它仍大幅度由于Im2GPS。
 
3.5 Face Attributes
MobileNet的另外一个应用是压缩具有未知或深奥难懂的训练过程的大系统。在面部属性分类任务中,我们描述了MobileNet与distillation之间的协同关系。一个已知的深度网络迁移技术。我们寻求减少具有7500万个parameters和16亿Mult-Adds的大型面部属性分类器。这个分类器在类似于YFCC100M [32]的multi-atrribute数据集上训练得到。
我们用MobileNet来提取面部属性分类器。提取是通过训练分类器来模拟较大模型的输出,而不是ground-truth标签,从而可以使用大量(也许是无限多)未标记的数据集进行训练。综合提取(distillation)训练的可扩展性和MobileNet的简约参数化,终端系统不仅需要正则化(例如weight-decay和early-stopping),并且需要表现出增强的性能。从Table 12显而易见的是,基于MobileNet的分类器是有较强模型缩放弹性的:它在不同的属性间达到了近似的平均精度(mean AP)却只有1%的计算量。
 
 
3.6 Object Detection
MobileNet也可以作为有效的基础网络部署在现代目标检测系统上。根据最近赢得的2016 COCO挑战的工作,我们报告了在COCO数据集上进行目标检测的MobileNet训练结果。在Table 13,比较了MobileNet和分别基于Faster-RCNN和SSD框架的VGG和inception V2。在我们的实验中,SSD使用了300作为input resolution(SSD 300), Faster-RCNN使用了300和600的input resolution(Faster-RCNN 300, Faster-RCNN 600)。这个Faster-RCNN模型中的每张图像使用300个RPN提取框。模型通过COCO训练集和测试集(除掉8000张的minival图像),并在minival上进行测试。对于这两个框架,MobileNet在只有很小的计算复杂度和模型尺寸下实现了和其他网络相似的结果。
 
3.7 Face Embeddings
FaceNet是一个state of the art的人脸识别模型。它基于triplet loss构建人脸嵌入。为了构建一个移动端的FaceNet模型,我们用distillation通过FaceNet和MobileNet在训练数据上最小化输出均方差来训练模型。对于很小的MobileNet模型的结果见Table 14。
 
4. Conclusion
我们提出了一个基于depthwise separable convolutions的叫MobileNet的新的模型架构。我们讨论了一些可以让模型高效的重要的设计决策。然后,我们展示了怎样使用width multiplier和resolution multiplier通过权衡合理的accuracy, reduce size和latency构建更小更快的MobileNets。再然后,我们比较了不同MobileNets和一些流行模型,论述了superior size, speed和accuracy的特点。我们通过论述MobileNet在应用于各种任务时的有效性得出了结论。为了进一步帮助探索MobileNets,我们计划发布基于TensorFlow的模型。
 
 
Reference:
 
 

【论文翻译】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications的更多相关文章

  1. [论文阅读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNet)

    论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 本文提出的模型叫Mobi ...

  2. 论文笔记——MobileNets(Efficient Convolutional Neural Networks for Mobile Vision Applications)

    论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications MobileNet由Go ...

  3. [论文理解] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications Intro MobileNet 我 ...

  4. 深度学习论文翻译解析(十七):MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    论文标题:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文作者:Andrew ...

  5. 【网络结构】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications论文解析

    目录 0. Paper link 1. Overview 2. Depthwise Separable Convolution 2.1 architecture 2.2 computational c ...

  6. Paper | MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    目录 1. 故事 2. MobileNet 2.1 深度可分离卷积 2.2 网络结构 2.3 引入两个超参数 3. 实验 本文提出了一种轻量级结构MobileNets.其基础是深度可分离卷积操作. M ...

  7. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    1. 摘要 作者提出了一系列应用于移动和嵌入式视觉的称之为 MobileNets 的高效模型,这些模型采用深度可分离卷积来构建轻量级网络. 作者还引入了两个简单的全局超参数来有效地权衡时延和准确率,以 ...

  8. 【MobileNet-V1】-2017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications-论文阅读

    2017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications Andrew H ...

  9. 深度学习论文翻译解析(六):MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications

    论文标题:MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications 论文作者:Andrew ...

随机推荐

  1. unity prefab使用原则

    prefab可无限apply: 如果把一个模块做成了prefab,这个prefab可能在同一个scene中添加多个,甚至添加到了多个scene中.设所有这些实例为instance(1),instanc ...

  2. PHP:计算文件或数组中单词出现频率

    一:如果是小文件,可以一次性读入到数组中,使用方便的数组计数函数进行词频统计(假设文件中内容都是空格隔开的单词): <?php $str = file_get_contents("/p ...

  3. 从【MySQL server has gone away】说起

    本文目的 这几天开发了一个PHP CLI程序,用于后台定时调度执行一些任务.此脚本采用了PHP的多进程(pcntl_fork),共享内存和信号量进行IPC和同步.目的是将串行的任 务并行执行,缩短执行 ...

  4. SMP

    SMP(Symmetrical Multi-Processing):对称多处理技术,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构. 在smp系统中,所有的CP ...

  5. vue天坑系列

    vue运行四元素:main.js+router/index.js+index.html+App.vue缺一不可:

  6. Powershell对象条件查询筛选

    在 Windows PowerShell 中,与所需的对象数量相比,通常生成的对象数量以及要传递给管道的对象数量要多得多.可以使用 Format cmdlet 来指定要显示的特定对象的属性,但这并不能 ...

  7. MapReduce编程实例2

    MapReduce编程实例: MapReduce编程实例(一),详细介绍在集成环境中运行第一个MapReduce程序 WordCount及代码分析 MapReduce编程实例(二),计算学生平均成绩 ...

  8. Unity5.1 新的网络引擎UNET(四) UNET Remote Actions

    孙广东   2015.7.12 网络系统 具有网络中执行操作actions 的方法.这些类型的actions 有时是调用远程过程调用(Remote Procedure Calls). 在网络系统中有两 ...

  9. AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API

    抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包. AWT是Java基础类 (JFC)的一部分,为Java程 ...

  10. 多线程之使用读写锁ReentrantReadWriteLock实现缓存系统

    简单地缓存系统:当有线程来取数据时.假设该数据存在我的内存中.我就返回数据.假设不存在我的缓存系统中,那么就去查数据库.返回数据的同一时候保存在我的缓存中. 当中涉及到读写问题:当多个线程运行读操作时 ...