MobileNet v1 论文_mobilenetv1论文-程序员宅基地

技术标签: 图像分类  计算机视觉  项目-深度学习  

https://arxiv.org/pdf/1704.04861.pdf

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的模型。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_16236875/article/details/108944260

智能推荐

巧用ChatGPT高效搞定Excel数据分析【文末送书-04】_gpt4可以对于excel文件进行调整 对于文件内部的信息进行整合-程序员宅基地

文章浏览阅读8.5k次,点赞76次,收藏61次。ChatGPT是由OpenAI开发的自然语言处理模型,能够理解并生成自然语言文本。通过与ChatGPT进行交互,我们可以将其应用于各种任务,包括文本生成、问题回答和数据分析。_gpt4可以对于excel文件进行调整 对于文件内部的信息进行整合

GIS相关网站_gis相关网站有那些-程序员宅基地

文章浏览阅读1k次。地理信息系统论坛http://www.gisforum.net/地理信息系统进阶 http://gis2000.yeah.net/地理信息系统情报站http://gis.126.com/ESRI中国(北京)有限公司http://www.esrichina-bj.cn/ 国家测绘局http://www.ncg.ac.cn_gis相关网站有那些

NG-ALAIN:一个基于 Antd 的中后台前端解决方案_ng-alain big data-程序员宅基地

文章浏览阅读487次。项目名称:NG-ALAIN项目作者:NG-ALAIN开源许可协议:MIT开发者说NG-ALAIN 是一个企业级中后台前端/设计解决方案脚手架,我们秉承Ant Design的设计价值观,目标也非常简单,希望在 Angular 上面开发企业后台更简单、更快速。随着『设计者』的不断反馈,将持续迭代,逐步沉淀和总结出更多设计模式和相应的代码实现,阐述中后台产品模板/组件/业务场景..._ng-alain big data

2017年嵌入式领域的MCU四个变化-程序员宅基地

文章浏览阅读85次。嵌入式系统是以应用为中心,以计算机技术为基础,将应用程序和操作系统与计算机硬件集成在一起,能够独立工作,而且软硬件均可裁减的专用计算机系统。我们可以这样认为,凡是带有微处理器、微控制器的专用软硬件系统都可以称为嵌入式系统。嵌入式技术.jpg在传统上,我们理解的的MCU都是基于Cortex-M0,M3,M4或者8051 内核的MCU,但是今年我们看到,..._64位 嵌入式mcu

OpenHarmony 4.0 本地OTA升级_openharmony 3.2 release ota升级-程序员宅基地

文章浏览阅读1.2k次,点赞4次,收藏4次。OpenHarmony 3.2 本地OTA全量增量升级操作指南_openharmony 3.2 release ota升级

pathfinder_cui笔记-程序员宅基地

文章浏览阅读334次。vim字符替换:1,$s/word1/word2/g双引号内的特殊字符如$,可以保持原来的特性;单引号内的特殊字符仅为以个纯字符(纯文本);转义符为反斜杠\反单引号``=$(),这里的内容先被执行。d..._pathfinder算法实现

随便推点

mysql增加列,修改列名、列属性,删除列-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏6次。mysql修改表名,列名,列类型,添加表列,删除表列alter table test rename test1; --修改表名alter table test add column name varchar(10); --添加表列alter table test drop column name; --删除表列alter table test modify ad..._增加列的命令是? alter table 表名 rename 表名 alter table 表名 modify 列名 数

CSS从入门到精通——文本与字体样式1.0_设置 h1, h2 的font-family 为: pingfang sc, verdana, he-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏7次。1.字体颜色、类型与大小任务描述相关知识字体颜色color字体类型font-family字体系列字体栈字体大小font-size设置方式常用单位像素em百分比结合 em任务描述请在右侧的编辑框中修改style.css文件。 设置 h1, h2 的font-family 为:PingFang SC, Verdana, Helvetica Neue,Microsoft Yahei, Hiragino Sans GB, Microsoft Sans Serif,WenQuanYi Micro Hei,_设置 h1, h2 的font-family 为: pingfang sc, verdana, helvetica neue, microsof

Numpy库的使用_创建一个shape为(6,4)的任意数组,至少使用两种方法分别打印四个角的元素-程序员宅基地

文章浏览阅读484次。创建数组对象axis为轴,n维数组有n个轴,axis的取值为1,2,3,4…,n1、数组属性属性说明ndim表示数组的维度shape表示数组的尺寸,(n,m)size返回数组的元素总数dtype描述数组中元素的类型itemsize表示数组的每个元素的大小(以字节为单位)arr.astype(‘数组类型’)转换数组类型arr...._创建一个shape为(6,4)的任意数组,至少使用两种方法分别打印四个角的元素

SSM框架之MyBatis_ssm中mybatis负责什么-程序员宅基地

文章浏览阅读1.4k次。文章目录MyBatis原生态jdbc程序中的问题mybatis框架原理mybatis架构案例log4j.properties的使用SqlMapConfig.xml的使用po类和映射文件的使用创建会话操作数据库mybatis开发dao的方法SqlSession使用范围原始dao开发方法mapper动态代理方法SqlMapConfig.xml的详解properties属性settings(全局参数配置..._ssm中mybatis负责什么

Linux Hook方法-程序员宅基地

文章浏览阅读1k次。linux hook是一个非常常见且成熟的技术,用户态Hook的方法有很多中,本次主要记录下LD_PRELOAD动态链接库劫持方法。LD_PRELOAD是一个全局变量,linux程序在运行时会优先加载该路径变量下的动态链接库,因此我们只需要通过设置LD_PRELOAD加载我们编写的同名函数,后续的加载过程中就会忽略后面的同名函数,从而完成对系统库的劫持。一般情况下linux动态加载库的顺序为LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/l_linux hook

【你好,windows】windows 7 X86X64 旗舰纯净版2020.3.18-程序员宅基地

文章浏览阅读6.2k次。windows7 SP1旗舰版原版安装补丁顺序:(注意每一步安装后重启电脑)1、安装IE11。2、顺序安装两个补丁KB4490628、KB3125574。3、安装KB4474419(SHA-2代码签名)4、安装KB45343140(月度汇总),KB4534314(安全更新,这个也可以不安装)5、顺序安装以下15个补丁:KB2533552KB2667402KB2698365KB28..._windows 7 x86x64 旗舰纯净版2020.3.18