论文:Andrew G. Howard,Menglong Zhu,Bo Chen,Dmitry Kalenichenko,Weijun Wang,Tobias Weyand,Marco Andreetto,Hartwig Adam.Google Inc. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications.

摘要

本文提出了一个轻量级的骨干网络:MobileNet,可应用在移动设备或嵌入式设备的计算机视觉应用中。MobileNets基于流线型架构,使用深度可分离卷积(depthwise separable convolutions)构建。通过引入两个全局超参数可平衡模型的速度和精度,使得研究人员可以根据问题选择正确大小的模型。本文在ImageNet数据集上做了大量的实验,表明MobileNets可以达到经典网络的精度。另外,对MobileNets的性能进行了广泛测试,包括:目标检测、细粒度分类、人脸属性与大尺度地理定位等。

1.引言

自2012年AlexNet提出以来,CNNs就制霸了CV领域。CNNs朝着更深、更复杂的方向前进,然而,这增加网络了所需的时间和空间代价。在实际应用如机器人、无人驾驶、AR等场景中,深度学习模型需要在本地实时运行。因此本文提出了一个高效的网络,并通过两个超参数,建立非常小、低延迟的模型,可以很容易地满足移动和嵌入式视觉应用的设计要求。

2.相关工作

构建小网络的方法一般可分为压缩预训练网络或直接训练小网络两种方法。本文提出了一种网络架构,使得研究人员可以选择与需求(延迟、大小)相匹配的小型网络。许多关于小型网络的论文只关注模型大小而不考虑速度,而MobileNets不仅速度快,而且参数少。

MobileNets主要由深度可分离卷积构建,深度可分离卷积最初在Inception-BN中使用以减少计算量。Flattened网络使用全因子卷积构建网络,展示了因子分解网络的潜力。Factorized网络引入了类似的因子分解卷积以及拓扑连接的使用。接着,Xception网络通过拓展深度可分离卷积超越了Inception V3。Squeezenet使用了bottleneck方法设计了一个非常小的网络。另一种获得小网络的方法是收缩、分解或压缩预训练网络。压缩方法基于乘法量化、散列、剪枝、向量化、哈夫曼编码等。还有一种训练小网络的方法是知识蒸馏。

3.网络架构

3.1深度可分离卷积

MobileNet基于深度可分离卷积(depthwise separable convolutions),是一种因子分解卷积(factorized convolution)的形式,将标准卷积分解为深积卷积(depthwise conv)和1×1卷积。这个1x1卷积又称为逐点卷积(pointwise conv)。深度可分离卷积最早在2014被提出,后来用于构建Xception。对于MobileNet来说,深度卷积对输入特征图的每个通道应用单个卷积核,然后1x1卷积将深度卷积输出的各通道联合起来。标准卷积同时对输入特征图的各个通道进行过滤和并组合为新的特征图,而深度可分离卷积将个过程划分到两层中,一层用来过滤,另一层用于组合,这样大大减少了计算量和模型大小。如下图所示,(a)是标准卷积,(b)是深度卷积,(c)是逐点卷积:

标准卷积接收D_F*D_F*M的特征图F作为输入,输出D_F*D_F*N的特征图G,其中M是输入通道数,N是输出通道数。每个卷积核的大小D_K*D_K*M,共有N个卷积核,其中D_K是卷积核的范围。整体的卷积核称为K,大小为D_K*D_K*M*N。设stride=1,G的计算过程为:

标准卷积的计算代价为:D_K*D_K*M*N*D_F*D_F。

标准卷积对输入的特征进行滤波,并进行组合产生新的表示,而深度可分离卷积将这两步分开。即深度可分离卷积由两层组成:深度卷积和逐点卷积,深度卷积对输入特征图的每个通道进行滤波,而逐点卷积即1x1卷积将深度卷积的输出进行线性组合。MobileNets在深度卷积和逐点卷积的后面均应用了BN和ReLU。标准卷积和深度可分离卷积的对比如下:

深度卷积的输出特征图的计算如下:

其中K是深度卷积的卷积核,大小为D_K*D_K*M,M是输入特征图的通道数。深度卷积的计算代价为:D_K*D_K*M*D_F*D_F。

可以发现深度卷积相比于标准卷积,计算量大大大大的减小了。但是深度卷积的每个卷积核仅对单个特征图进行滤波,没有将多层特征图组合成新的特征。因此深度卷积后面加上1x1卷积,可以对特征图进行线性组合来生成新的特征。深度卷积和1x1逐点卷积统称为深度可分离卷积,深度可分离卷积的计算代价为: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)/(D_K*D_K*M*N*D_F*D_F)=1/N + 1/D_K^2。

MobileNet使用3x3深度可分离卷积,与使用标准卷积相比,在达到相同精度的情况下,仅需要1/8或1/9的计算量。

3.2 网络架构和训练

MobileNet在深度可分离卷积的基础上构建,网络架构如下:

从上表中可以看到,MobileNets除了第一层是标准卷积,其它均为深度可分离卷积。除了最后的FC层,其它层后面都跟着BN和ReLU。MobileNets通过卷积的stride来进行下采样,最后的GAP层将特征图的空间分辨率减小至1,然后送入FC层。若将深度卷积层和逐点卷积层分开算,则MobileNet共有28层。

还要考虑定义的网络是否可以高效的实现,比如非结构化的稀疏矩阵运算就比稠密矩阵要低效的多。MobileNet中的大部分运算量都放在1x1卷积中,而1x1卷积可以通过高度优化的通用矩阵乘法(GEMM)函数来实现。通常的卷积由GEMM实现,但需要在内存中进行一个称为im2col的初始重新排序,以便将其映射到GEMM。1x1卷积不需要在内存中重新排序,可以直接用GEMM实现,这样就增加了速度。MobileNet中的1x1卷积的参数占总参数的75%,它的计算时间占总时间的95%,如下表所示:

MobileNet在TensorFlow上进行训练,使用RMSprop优化器。相比于训练大型网络,这里很少使用正则化和数据增强,因为小模型更不容易过拟合。训练MobileNet时,不使用sede heads或标签平滑,并通过限制小裁剪图像的数量来减少图像失真。此外,对深度卷积设置很小的l2权重衰减或不设置更好,因为深度卷积的参数很少。

3.3 宽度系数:更小的模型

尽管MobileNet基础版本很小而且速度快,但是很多时候我们会想要一个更小更快的模型。为了构造这些模型,这里引入一个简单的参数α,称为width multiplier,或称为宽度系数。该系数的作用对每层都进行细化,即减小通道数。对于给定的层和宽度系数α,输入通道数M变为αM,输出通道数N变为αN。因此深度可分离卷积的计算代价变为:D_K*D_K*α*M*D_F*D_F+α*M*α*N*D_F*D_F,其中α∈(0,1],通常设为1,0.75,0.5,0.25。若α=1则与基础版本一致,若α<1,则是一个更小版本。宽度系数可以大致是将参数和计算量减小到α^2,它可以应用于任何模型,以合理的精度、速度和大小权衡来定义一个新的更小的模型。

3.4 分辨率系数:减小表示的大小

第二个可以减小计算量的超参数是resolution multiplier ρ,或称为分辨率系数。该参数通过减小特征图的分辨率来减小计算量。设置α和ρ后,网络的计算量表示为:D_K*D_K*α*M*ρ*D_F*ρ*D_F+α*M*α*N*ρ*D_F*ρ*D_F,ρ∈(0,1]。

设置ρ后,典型的分辨率为224 192 160 128等,大致减少计算量的倍数为ρ^2。设置宽度系数和分辨率系数后的计算量对比如下:

第一行是标准卷积的乘加运算量和参数量,输入特征图的大小为14×14×512,卷积核大小为3×3×512×512。

4 实验

4.1模型选择

下表是MobileNet使用标准卷积和深度可分离卷积的精度、计算量、参数量的对比:

可以看到使用可分离卷积在精度仅仅微小下降的情况下,极大的减小了计算量和参数量。

接着比较一个MobileNet的更细版本和更浅版本。相比于基础版本,更浅版本去掉了5层14x14x512的深度卷积层。对比如下表:

可以看到更细版本的精度比更浅版本高了3%。

4.2 模型收缩超参数

下表是不同宽度系数的比较:

下表是不同分辨率系数的比较:

下面是使用不同的α∈{1,0.75,0.5,0.25}和ρ∈{224,192,160,1280}训练的MobileNet模型的精度和运算量的比较:

下面是使用不同的α∈{1,0.75,0.5,0.25}和ρ∈{224,192,160,1280}训练的MobileNet模型的精度和参数量的比较:

下表比较了基础版本的MobileNet与GoogleNet和VGG16的精度。

在精度差不多的情况下,MobileNet只有VGG16的1/32的大小,仅需要1/27的计算量。MobileNet的精度超越了GoogLeNet,但计算量只有其1/2.5。

下表比较了α=0.5,分辨率为160x160的MobileNet与Squeezenet、AlexNet的比较:

可以看到MobileNet比AlexNet精度高了4%,但是大小仅为1/45,计算量仅为1/9.4。MobileNet比SqueezeNet高了4%,在大小差不多的情况下,计算量仅为1/22。

4.3 细粒度分类

这里训练MobileNet在Stanford Dogs数据集上用于细粒度分类任务。这里在[The unreasonable effectiveness of noisy data for fine-grained recognition]的基础上进行拓展,在网上收集了一个更大但是存在噪音的数据集,使用该数据集预训练一个细粒度dog的识别模型。然后在Standford Dogs训练数据集上进行微调。结果如下:

4.4大规模地理定位

PlaNet的任务是确定一张照片在地球上的哪个位置拍摄的,是一个分类任务。PlaNet将地球划分为一个由地理单元组成的网格,作为目标类,并在数百万张地理标记照片上训练一个卷积神经网络。PlaNet已经被证明能够成功地对大量照片进行定位,并且性能优于Im2GPS模型。

原始的PlaNet基于Inception V3,拥有52百万参数和需要进行57.4亿的乘加运算。这里在相同的数据上使用MobileNet重新训练了PlaNet,基于MobileNet的PlaNet仅有13百万参数,仅需5.8亿乘加运算。对比结果如下:

可以看到,MobileNet版本的PlaNet在大幅提升速度的情况下精度仅轻微下降,但仍然大幅优于Im2GPS。

4.5 人脸属性分类

4.6 目标检测

4.7 人脸识别

MobileNet论文笔记相关推荐

  1. [论文总结] 深度学习在农业领域应用论文笔记5

    深度学习在农业领域应用论文笔记5 1. Channel pruned YOLO V5s-based deep learning approach for rapid and accurate appl ...

  2. ORB-SLAM3 论文笔记

    ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...

  3. 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION

    一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...

  4. 最新图神经网络论文笔记汇总(附pdf下载)

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]近年来,图神经网络变得非常火热,每年顶会在该领域内都会出现大量的研究论文,本文为大家提 ...

  5. [论文笔记] Fast Quality Driven Selection of Composite Web Services (ECOWS, 2006)

    Time: 4.0 hours Jae-Ho Jang, Dong-Hoon Shin, Kyong-Ho Lee, "Fast Quality Driven Selection of Co ...

  6. 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning

    论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning  2017-06-06  21: ...

  7. 光流 速度_[论文笔记] FlowNet 光流估计

    [论文笔记] FlowNet: Learning Optical Flow with Convolutional Networks 说在前面 个人心得: 1. CNN的光流估计主要是速度上快,之后的v ...

  8. 论文笔记 《Maxout Networks》 《Network In Network》

    原文出处:http://zhangliliang.com/2014/09/22/paper-note-maxout-and-nin/ 论文笔记 <Maxout Networks> & ...

  9. 论文笔记:HKMF-T: Recover From Blackouts in TaggedTime Series With Hankel Matrix Factorization

    论文笔记:Hankel Matrix Factorization for Tagged Time Series to Recover Missing Values during Blackouts_U ...

最新文章

  1. Nginx 学习笔记(六)引入线程池 性能提升9倍
  2. 研究生数学建模比赛日程安排
  3. Paper:《NÜWA: Visual Synthesis Pre-training for Neural visUal World creAtion,女娲:用于神经视觉世界创造的视觉》翻译与解读
  4. 使用Python连接数据库的脚本
  5. android圆形变方形动画,CSS3 简单的圆形/方形变形动画
  6. LSMW--一个中文介绍的摘抄
  7. 搜索引擎的那些事(多线程web遍历)
  8. 金三银四我带你去BAT面试现场,砥砺前行!
  9. java正则表达式获得html字符串中图片的url地址
  10. php.ini配置文件
  11. 用python处理DEA模型--CCR
  12. PCB Layout各层含义与分层原则
  13. pandas数据清洗的一些操作
  14. 易宝支付回调不成功问题解决
  15. 提示fxp不是一个目标文件
  16. 笔记本电脑计算机里面怎么管理,笔记本电脑如何分区,详细教您笔记本电脑怎么分区...
  17. The vertically scrolling ScrollView should not contain another vertically scrolling widget (ListView
  18. GeoServer操作文档
  19. centos安装python3.X,系统默认2.7.5
  20. webAPP开发三:实现数据的交互显示

热门文章

  1. 计算机网络实验vc6实现串口通信,用vc的串口通信实验报告.docx
  2. 15. Scala并发编程模型Akka
  3. Mybatis逆向工程使用方法
  4. Github Clone to local files
  5. python机器学习-sklearn挖掘乳腺癌细胞(五)
  6. 剑指Offer:面试题33——把数组排成最小的数(java实现)(未完待续)
  7. 2010有道难题练习赛
  8. ASP.Net数据库连接字符串
  9. OpenVINO 部署 Mask-RCNN 实例分割
  10. 冠军奖10万日元+10公斤柠檬!一个简单的柠檬图像分级竞赛