阅读论文MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Application,对移动端深度学习网络MobileNet记录了一些笔记。原文链接:论文链接

一. 背景

为了提高准确度,网络越来越大,越来越复杂,可是移动端无法支持这样大的网络。所以移动端需要减小网络,但是还能保证速度和准确度不下降太多。
有两种方法,一种是减小已有网络的规模,另外一种是重新训练一个小网络。
MobileNet就是重新训练的小网络,它引入了(Depthwise separable convolution)深度级可分离卷积,包括(Depthwise convolution)深度级卷积和(Pointwise convolution)点级卷积。相比VGG16,MobileNet的准确度稍微下降,但是优于GoogleNet。然而,从计算量和参数量上MobileNet具有绝对的优势。

二. 原理

Depthwise convolution和标准卷积不同,对于标准卷积:一个滤波器是用在所有的输入通道上(input channels),有几个通道,这个滤波器就有几个卷积核。一个滤波器能产生一个特征,也就是一个输出通道。滤波器的个数自定,那么输出通道数目就是不确定的。
而depthwise convolution针对每个输入通道采用不同的滤波器,因为只有一个通道,所以一个滤波器只有一个卷积核。一个滤波器仍然产生一个特征,也就是一个输出通道。滤波器的个数和输入通道个数相同,那么输出通道数目就和输入通道数目相同。所以说depthwise convolution是depth级别的操作。
而pointwise convolution其实就是普通的卷积,只不过采用大小为1x1的滤波器。

三. 计算

假定输入特征图大小是:
而输出特征图大小是:
其中DF是特征图的width和height,这是假定两者是相同的,而M指的是通道数(channels or depth)。这里也假定输出特征图大小与输入特征图大小(width and height)是一致的,但滤波器个数N自定。对于标准的卷积 ,其计算量将是:
depthwise convolution计算量是:

而对于pointwise convolution其计算量为:
所以depthwise separable convolution总计算量是:

可以比较depthwise separable convolution和标准卷积如下:

一般情况下N比较大,那么如果采用3x3卷积核的话,depthwise separable convolution相较标准卷积可以降低大约9倍的计算量。

四. 网络结构


五. 更小的模型

针对不同的应用场景,可以对MobileNet进行瘦身。这里引入了两个超参数:width multiplier和resolution multiplier。
第一个参数width multiplier主要是按比例减少通道数,该参数记为α,其取值范围为(0,1],那么输入与输出通道数将变成αM和αN,对于depthwise separable convolution,其计算量变为:

width multiplier会按大约平方的倍数降低计算量和参数量。
第二个参数resolution multiplier主要是按比例降低特征图的大小,记为ρ,其取值范围为(0,1],比如原来输入特征图是224x224,可以减少为192x192,加上resolution multiplier,depthwise separable convolution的计算量为:

要说明的是,resolution multiplier会按大约平方的倍数降低计算量,但是不降低参数量。

【MobileNet】移动端深度学习网络MobileNet详解相关推荐

  1. 深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) By 李泽南2017年6月26日 15:57 本周一(6 月 19 日)机器之心发表文章《我的深度学习开发环境详解:Te

    深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) 机器之心 2017-06-25 12:27 阅读:108 摘要:参与:李泽南.李亚洲本周一(6月19日)机器之心发表文章<我的深 ...

  2. 轻量级深度学习网络——MobileNet MobileNet v2

    这篇文章主要讲的是深度学习网络篇中轻量化网络之一的MobileNet和MobileNet v2.在深度学习中轻量化网络有很多方法, 比如说卷积核分解.使用bottleneck结构.用低精度浮点数保存模 ...

  3. 从未看过如此详细的深度学习推荐系统应用详解,读它!

    作者丨gongyouliu 编辑丨zandy 来源 | 大数据与人工智能(ID:ai-big-data) [导读]2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一 ...

  4. 深度学习 --- 基于RBM的深度置信网络DBN-DNN详解

    上一节我们详细的讲解了受限玻尔兹曼机RBM的原理,详细阐述了该网络的快速学习原理以及算法过程,不懂受限玻尔兹曼机的建议先好好理解上一节的内容,本节主要讲解的是使用RBM组成深层神经网络的深度置信网络D ...

  5. 深度学习 --- 玻尔兹曼分布详解

    上一节我们从Hopfield神经网络存在伪吸引子的问题出发,为了解决伪吸引子带来的问题,详细介绍了模拟退火算法,本节也是基础性的讲解,为了解决伪吸引子还需要引入另外一个重要概念即:玻尔兹曼分布.本篇将 ...

  6. TensorFlow 学习指南:深度学习系统构建详解

    内容简介 面向广泛的技术受众(从数据科学家.工程师到学生和研究人员),本书介绍了 TensorFlow 的基本原理和实践方法.从 TensorFlow 中的一些基本示例开始,深入探讨诸如神经网络体系结 ...

  7. 深度学习 --- BP算法详解(流程图、BP主要功能、BP算法的局限性)

    上一节我们详细推倒了BP算法的来龙去脉,请把原理一定要搞懂,不懂的请好好理解BP算法详解,我们下面就直接把上一节推导出的权值调整公式拿过来,然后给出程序流程图,该流程图是严格按照上一节的权值更新过程写 ...

  8. 深度学习生态圈【详解深度学习工具Keras】

    文章目录: 1 CNTK 2 Tensorflow2.1 介绍2.2 安装2.3 简单例子 3 Keras3.1 介绍3.2 安装Keras3.3 使用Keras构建深度学习模型3.4 一个例子 4 ...

  9. 深度学习之优化详解:batch normalization

    摘要: 一项优化神经网络的技术,点进来了解一下? 认识上图这些人吗?这些人把自己叫做"The Myth Busters",为什么?在他们的启发下,我们才会在Paperspace做类 ...

最新文章

  1. 两个文件比对_Edlib:方便快速的长序列比对软件包
  2. java 默认字符集 iso_第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及......
  3. springboot获取getBean方法以及ApplicationContext空指针问题解决
  4. JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解
  5. VC 在CStatic控件上绘图
  6. 天啦噜!在家和爱豆玩quot;剪刀石头布quot;,阿里工程师如何办到?
  7. 嘘!你与谷歌语音助手的对话,可能已经泄露……
  8. 家用车多少马力才够用?
  9. C++习题之变量和基本类型
  10. c语言程序设计的反思,C语言程序设计教学反思
  11. winpe安装Windows 10系统时efi part有红叉怎么办。
  12. 科研项目研究的基本步骤
  13. java readable_Java-Readable
  14. C语言基础 龟兔赛跑
  15. Python3脚本抢票
  16. 3DSMAX中英文对照大全(从A-Z分类)
  17. 樱花的季节,教大家用canvas画出飞舞的樱花树
  18. 第五次面试----中软国际有限公司
  19. map在python中是什么意思_【后端开发】map在python中什么意思
  20. ESP32学习:AD/DA数模转换

热门文章

  1. 如何对接CDE Gateway,实现EDI传输
  2. Unity 调用Jeromq.jar
  3. Scade——学习笔记(3)
  4. VisualStudio快捷键
  5. 一定要让孩子知道的20个小故事
  6. “我学习win32com的秘诀”,本周六(7月1日)上午腾讯会议室见
  7. 用AI实现一张图四季变换特效的代码
  8. HTML菊花图案绘制,用HTML5中的canvas元素画菊花
  9. android仿ios菊花,android仿IOS 旋转菊花Loading、等待Loading、花瓣
  10. html+css制作简易版Baymax