2019-11-18 17:45:26

BDTC大会官网:https://t.csdnimg.cn/q4TY

一、MobileNets V1(2017)

论文链接:

https://arxiv.gg363.site/abs/1704.04861

摘要

为了处理移动和嵌入式视觉任务,本文提出了MobileNets模型。MobileNets基于流线型结构设计,利用深度可分离卷积来建立轻量级深度神经网络。MobileNets引入了两个超参数,让我们可以根据不同任务的条件约束,自由选择模型的尺度规模,通过这两个简单的全局超参数,MobileNets在速度和精度两方面实现了很好的均衡。实验证明,作为轻量级深度网络,MobileNets在诸如识别,定位,检测等计算机视觉任务中都具有普适性和有效性。

简介

为了获得更丰富,更多层次的特征,现有的卷积神经网络倾向于在网络宽度,深度方面做文章。这些方法固然提升了网络的性能,但同时也带来了复杂的网络结构和繁琐的参数设置,在算力,速度,存储空间上都有很大的不足,这些缺陷,也阻碍了一些理论上很好的网络架构在真实应用中的项目落地。

为了满足移动和嵌入式视觉任务的需要,MobileNets构造了一种高效的网络架构,同时引入两个超参数,以便构建体量小、延迟低的模型。

背景

MobileNets的设计主要建立在深度可分离卷积的知识上,所以先了解一下深度可分离卷积的思想,对下文MobileNets的理解有帮助。

深度可分离卷积,英文表述是Depthwise Separable Conv。下图是一个典型的深度可分离卷积结构,整体可以分为两大步骤:Depthwise Conv和PointwiseConv。与传统卷积相比,极大的减少了参数量。具体解释一下这两个步骤:

  • Depthwise Conv:按照通道数进行卷积,为每一个通道分配一个卷积核,得到的feature maps的维度为输入通道数

  • 将第一步得到的feature maps Concat起来,进行1x1卷积。得到最终深度可分离卷积的输出。

  • 这样做,参数量是否真的减少了呢?我们可以用一个小模型举例:

  • 输入 feature map:W x H x 5

  • 卷积核:3x3x3(共3个,每个尺寸为3x3的卷积核)

  • 预期输出feature map:W x H x 3

1)标准卷积:

parameters=3x3x5x3=135

2)深度可分离卷积:

parameters=3x3x5+1x1x5x3=60

3)两种卷积参数量对比:

可以看到,即使在卷积核数量很少,输入输出维度相差不大的情况下,参数量也减少了一般以上。如果卷积核数量增加,卷积越复杂,参数减少的效果会越明显。

MobileNet 结构

  • 深度可分离卷积

在背景知识中,我们已经简单的介绍了关于深度可分离卷积的相关内容。MobileNets主要是依托其建立的,本节中,我们用具体的公式进行阐述和理解。

总体而言,深度可分离卷积可以看做是一种分解卷积的形式,它将标准卷积分解为深度卷积和点卷积(1x1卷积)。MobileNets中,在depthwise conv阶段,对于输入特征图的每一个通道都应用一个卷积核,然后在pointwiseconv阶段,利用1x1的卷积将第一步得到的featuremap结合起来,得到最终输出。一个标准卷积在一个步骤中过滤并将输入组合成一组新的输出,而在深度可分离卷积中,将此过程一分为二,首先进行滤波,然后进行合并。这种卷积分解的效果是大大减少了计算量和模型大小。具体可以表示为:

(a) 标准卷积:

下图是标准卷积中的卷积核,共有N个卷积核,每一个卷积核的通道数等于输入feature的通道数

那么标准卷积的输出,可以表示为:

计算成本为:

标准卷积运算的作用是基于卷积核对特征进行滤波,并结合特征得到新的表示。

b)深度可分离卷积

下图是深度可分离卷积的卷积核和点点卷积部分示意图。深度可分卷积由深度卷积和点卷积构成。使用深度卷积为每个输入通道应用一个卷积核。随后进行一个简单的1×1卷积,MobileNets对两个步骤都使用BN层和ReLU激活函数。

深度可分离卷积的输出,可以表示为:

计算成本,可以分两步表示:

depthwise Conv部分,计算成本为:

pointwise Conv部分,计算成本为:

那么,总的计算成本为:

可以比较一下两种卷积的参数量,深度可分离卷积参数:标准卷积参数比值为

其中,N是卷积核的数量,Dk 是卷积核尺寸。从中也可以看出,卷积核数量越多,尺寸越大,参数减少量越显著。作者通过实验表明,MobileNet使用3×3深度可分离卷积,相比标准卷积,计算量减少了8到9倍,仅在精度上略有降低。

  • 网络结构和训练

有了深度可分离卷积的基础,本小节主要探讨MobileNets的结构设计和具体训练情况。

下图是MobileNet中一个块的结构,可以看到,相比传统卷积,MobileNet在depthwise Conv和pointwise Conv后面都加入了BN层和ReLu层

有了基本结构之后,我们可以看一下MobileNet主体的结构,如下表所示,S表示步长,用来下采样。

在训练上的要点有:

利用RMSprop优化算法,使用较少的正则化和数据扩充技术,因为小型模型的过拟合问题较少,在深度方向的滤波器上设置很小或没有权值衰减(l2正则化),因为它们的参数很少。

在摘要部分就提到,MobileNets引入了两个超参数,让我们可以根据不同任务的条件约束,自由选择模型的尺度规模,下面就来介绍一下这两个超参数。

  • Width Multiplier: Thinner Models

尽管基础的MobileNet结构已经具备了低延时,模型小的优势。但是有时候一个具体的案例或者应用可能会需要更小型、更快速的网络结构,这个时候,就需要我们根据基础的MobileNets灵活设计,因此,引入了第一个超参数,Width Multiplier α,宽度参数 α的作用是将每一层的网络变得更thin。对于一个给定的层,输入通道由 MM 变为αM,输出通道由 NN 变为 αN,那么相应的MobileNets的计算成本变为:

α的取值范围为(0,1],通常的取值有1,0.75,0.5和0.25。如果α取1的话,就是基础的MobileNets,如果 αpha <1,就是一个更thin的MobileNets。宽度参数的引入,大大减少了参数量,减少约 α^2。

  • Resolution Multiplier: Reduced Representation

宽度参数α能够让网络变得更thin,除此之外,MobileNets中还引入了第二个超参数,分辨率参数ρ来减少神经网络的计算成本。将分辨率参数应用到包括输入层的每一层网络中。同时应用宽度参数αph和分辨率参数 ρ之后,计算成本变为:

其中,ρ的范围是(0,1],通常通过 ρ的设置使得分辨率变为224,192,160或128。如果 ρ取1,就是基础MobileNets,如果 ρ<1,就是一个分辨率更小的MobileNets。宽度参数的引入,大大减少了参数量,减少约 ρ^2。

由于MobileNets v1是MobileNets系列的开山之作,所以我们介绍的比较详细,接下来的V2和V3,只针对创新点,具体算法和结构进行介绍。

二、MobileNets V2(2018)

论文链接:

http://openaccess.thecvf.com/content_cvpr_2018/html/Sandler_MobileNetV2_Inverted_Residuals_CVPR_2018_paper.html

创新点

  • Linear Bottlenecks

在高维空间上,诸如ReLU这种激活函数能有效增加特征的非线性表达,但是仅限于在高维空间中,如果维度降低,到了低维空间,再加入ReLU则会破坏特征,如下图所示当把原始输入维度增加到15或30后再作为ReLU的输入,输出恢复到原始维度后不会丢失太多的输入信息;相比之下如果原始输入维度只增加到2或3后再加上ReLU进行非线性转化,输出恢复到原始维度后信息丢失较多。

基于这些结论,作者在MobileNets v2中提出了Linear Bottlenecks结构,也就是在执行了降维的卷积层后面,不再加入类似ReLU等的激活函数进行非线性转化,这样做的目的也是尽可能的不造成信息丢失。

  • Inverted residuals

在ResNet中,为了构建更深的网络,提出了ResNet的另一种形式,bottleneck,结构如下所示,一个bottleneck由一个1x1卷积(降维),3x3卷积和1x1卷积(升维)构成。

但是这种先降维后升维的顺序不太适合MobileNets,因为在MobileNets中的深度可分离卷积中,Depthwise Conv卷积的层数是输入通道数,本身就比较少,如果跟残差网络中的bottleneck一样,先压缩,后卷积提取,可得到的特征就太少了。因此,本文采取了一种逆向的方法,先升维,卷积,再降维,称为Inverted residuals。如下图所示,(a)在残差网络block中,先降维后卷积升维,而在Inverted residual block中,先升维,再卷积降维。

网络结构

在MobileNets v2中,基本的结构组成是一个带残差的深度可分离卷积bottleneck。

先回顾一下MobileNets v1的结构,非常的简洁,基于深度可分离卷积,先进行depthwiseconv,再进行pointwise conv。得到最终的输出特征。

而在MobileNets v2中,引入了Linearbottlenecks和Inverted Residuals等结构,可以看到,在原先的基础上,再进行depthwiseconv之间,先进行了一个1x1卷积,用于升维,而且在降维操作后,不再接入ReLU等非线性激活函数。当且仅当输入输出层维度相同时,才利用shortcut进行连接。因此有下图两种结构

三、MobileNets v3(2019)

*在MobileNets中还有关于网络搜索部分的论述说明,这里不做过多介绍,感兴趣可点击原文阅读。

论文链接:

https://arxiv.gg363.site/abs/1905.02244

MobileNets V1引入深度可分卷积作为传统卷积层的有效替代。深度可分离卷积通过将空间滤波与特征生成机制分离,有效地分解了传统卷积。深度可分卷积由两个独立的层定义:用于空间滤波的轻量级深度卷积和用于生成特征的1x1点卷积,通过独立层的定义,有效地减少了参数量,提升运行效率。

MobileNets v2 引入了linear bottleneck和Inverted residual结构,很好的扩展了MobileNets v1,如下图所示,v2由1x1升维、深度卷积和1x1降维组成。当且仅当输入和输出具有相同数量的通道时,才使用residual连接进行连接。这种结构在输入和输出处保持了一种紧凑的表示,同时在内部扩展到高维特征空间,以增加非线性全通道转换的表现力。

在MobileNets的基础上,MnasNet在在bottleneck结构中引入了基于挤压和激励的轻量级注意力模块。进一步对MobileNetsv2进行了扩展。

创新点

MobileNets v3博采众长,使用这些层的组合作为构建块,以构建最有效的模型。如下图所示,综合了以上三种模型的思想:MobileNets V1的深度可分离卷积,MobileNets V2的线性bottleneck和逆残差结构,MnasNet的基于挤压和激励结构的轻量级注意力模型。

  • 激活函数swish

谷歌在2017提出的h-swish是基于swish激活函数的改进,所以先了解一下swish。

1)表达式:

2)图像:

(3)优势:Swish具备无上界有下界、平滑、非单调的特性。并且Swish在深层模型上的效果优于ReLU。

但是在MobileNets v3中,作者认为在轻量级的架构中,swish会增加运算成本,于是提出了h-swish进行替代。

  • 新的激活函数h-swish

作者认为,可以用一个近似函数逼近swish中的σ部分,减少运行成本。

网络结构

如下图所示,在MobileNets v2使用1×1卷积来构建最后层,能得到更高维的特征空间。在预测时,能提取到更丰富的特征,但是同时也引入了额外的计算成本与延时。

因此,作者的想法是在保留高维,具有丰富特征的前提下,尽量减少时延,具体改进如下图所示,将带有h-wise的1x1层放在平均池化层之后。

2017年v1版本发布以来,谷歌家的MobileNets系列一直是轻量级网络中的翘楚,经过三个版本的更新迭代,MobileNets早已成为在移动端部署深度卷积网络的代表算法。本文按照时间线,梳理MobileNet三个版本的核心算法思想,并探讨更新过程中的具体改进,希望通过此文,我们能够对MobileNets有一个更清晰直观的了解。

MobileNets进化史相关推荐

  1. Google、微软、阿里、腾讯、百度这些大公司在GitHub上开源投入排名分析 | CSDN原力计划...

    扫码参与CSDN"原力计划" 作者 | 村中少年 来源 | CSDN原力计划获奖作品 现在有越来越多的公司都参与了开源,其背后有各自的目的所在,姑且不予讨论.本文是从多个方面分析各 ...

  2. 2097352GB地图数据,AI技术酷炫渲染,《微软飞行模拟器》游戏即将上线

    整理 | 若名 出品 | AI科技大本营(ID:rgznai100) "只要是真实存在的地方,你都能抵达." 作为即将成为第一款将整个地球化作虚拟世界来供玩家玩的游戏,微软的< ...

  3. EMNLP 2019 | 大规模利用单语数据提升神经机器翻译

    BDTC大会官网:https://t.csdnimg.cn/q4TY 作者 | 吴郦军.夏应策 来源 | 微软研究院AI头条(ID:MSRAsia) 编者按:目前,目标语言端的无标注单语数据已被广泛应 ...

  4. 用Go重构C语言系统,这个抗住春晚红包的百度转发引擎承接了万亿流量

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 11 月 20 日,百度的万亿流量转发引擎 BFE 登上了 GitHub Trending Top 3,今日 Star 已突破 2 ...

  5. 孙茂松:深度学习的红利我们享受得差不多了!

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) [导读]2019 年 10 月 31日,在北京举行的智源大会上,清华大学教授.智源首席科学家孙茂松接受了媒体采访,畅谈当前人工智能 ...

  6. 欧盟自由销售证_小公司和自由职业者如何应对VATMOSS欧盟增值税变更

    欧盟自由销售证 Over a month ago I wrote a post detailing the Horrible Implications of the EU VAT Place of S ...

  7. 用于多任务CNN的随机滤波分组,性能超现有基准方法

    作者 | Felix J.S. Bragman, Ryutaro Tanno等 译者 | 李杰 出品 | AI科技大本营(ID:rgznai100) 多任务学习(MTL)的性能表现,很大程度上取决于任 ...

  8. MobileNet 进化史: 从 V1 到 V3(V1篇)

    MobileNet 进化史: 从 V1 到 V3(V1篇) 这部分内容总共由如下 3 篇文章构成. MobileNet 进化史: 从 V1 到 V3(V1篇) MobileNet 进化史: 从 V1 ...

  9. 深度学习目标检测法进化史,看这一篇就够了

    作者 | 黄浴,奇点汽车美研中心首席科学家兼总裁 来源 | 转载自知乎专栏自动驾驶的挑战和发展 本文将介绍自动驾驶中的深度学习目标检测的基本概念和方法,并对几个主要 Anchor free 方法进行了 ...

最新文章

  1. mysql之mysqldump备份恢复
  2. 有 OC 经验的程序员快速学习 Swift 语法
  3. uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案
  4. 谁都忍不了烂代码,如何用重构的方式让它整洁起来?
  5. 深入掌握JMS(六):消息头
  6. 曹大,欧神开新公众号了
  7. android 代码设置 键盘适应_硬核软件,能在电脑上控制iPhone和Android手机
  8. [转]Delphi过程函数传递参数的几种方式
  9. C语言 Linux版俄罗斯方块,C语言版——俄罗斯方块(一)
  10. Atititi 计算机系 教材 目录 1. 硬件类 2 1.1. 《微机系统与接口技术》 2 1.2. 《计算机组成与系统结构(第2版)》 2 2. Atitit 操作系统原理 操作系统原理(cpu
  11. 【水果识别】基于matalb GUI水果分类系统【含Matlab源码 174期】
  12. 基于springboot小区物业管理系统
  13. 【程序猿助手】Emacs,最强的编辑器,之间的不
  14. ffmpeg ffprobe查看视频文件编码格式
  15. LaTeX算法流程中英文伪代码
  16. 《数据最重要的成员--算法》
  17. 局部敏感哈希(Locality-Sensitive Hashing, LSH)
  18. 阵道计算机,太古神王电脑版
  19. 原创整理《考研英语词汇的逻辑》精选词汇-思维导图
  20. shell 脚本程序中空格 $符号的使用

热门文章

  1. 王蔷强势晋级澳网32强 平个人大满贯最佳战绩
  2. Update语句的使用及其方法
  3. 浅谈电气设备的绝缘在线监测与状态维修探究
  4. 纯前端实现一键生成二维码
  5. OA系统是什么,企业邮箱OA系统如何使用?
  6. `` 反引号在前端的作用:模板字符串
  7. 第66篇:顶级APT后门Sunburst通信流量全过程复盘分析
  8. 开篇-五年的工作总结与接下来的的学习方向
  9. 【设计模式】观察者模式Observe(Java)
  10. Java下载谷歌歌词,自动同步歌词和歌曲 - Java