【MobileNet】移动端深度学习网络MobileNet详解
阅读论文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详解相关推荐
- 深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) By 李泽南2017年6月26日 15:57 本周一(6 月 19 日)机器之心发表文章《我的深度学习开发环境详解:Te
深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) 机器之心 2017-06-25 12:27 阅读:108 摘要:参与:李泽南.李亚洲本周一(6月19日)机器之心发表文章<我的深 ...
- 轻量级深度学习网络——MobileNet MobileNet v2
这篇文章主要讲的是深度学习网络篇中轻量化网络之一的MobileNet和MobileNet v2.在深度学习中轻量化网络有很多方法, 比如说卷积核分解.使用bottleneck结构.用低精度浮点数保存模 ...
- 从未看过如此详细的深度学习推荐系统应用详解,读它!
作者丨gongyouliu 编辑丨zandy 来源 | 大数据与人工智能(ID:ai-big-data) [导读]2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一 ...
- 深度学习 --- 基于RBM的深度置信网络DBN-DNN详解
上一节我们详细的讲解了受限玻尔兹曼机RBM的原理,详细阐述了该网络的快速学习原理以及算法过程,不懂受限玻尔兹曼机的建议先好好理解上一节的内容,本节主要讲解的是使用RBM组成深层神经网络的深度置信网络D ...
- 深度学习 --- 玻尔兹曼分布详解
上一节我们从Hopfield神经网络存在伪吸引子的问题出发,为了解决伪吸引子带来的问题,详细介绍了模拟退火算法,本节也是基础性的讲解,为了解决伪吸引子还需要引入另外一个重要概念即:玻尔兹曼分布.本篇将 ...
- TensorFlow 学习指南:深度学习系统构建详解
内容简介 面向广泛的技术受众(从数据科学家.工程师到学生和研究人员),本书介绍了 TensorFlow 的基本原理和实践方法.从 TensorFlow 中的一些基本示例开始,深入探讨诸如神经网络体系结 ...
- 深度学习 --- BP算法详解(流程图、BP主要功能、BP算法的局限性)
上一节我们详细推倒了BP算法的来龙去脉,请把原理一定要搞懂,不懂的请好好理解BP算法详解,我们下面就直接把上一节推导出的权值调整公式拿过来,然后给出程序流程图,该流程图是严格按照上一节的权值更新过程写 ...
- 深度学习生态圈【详解深度学习工具Keras】
文章目录: 1 CNTK 2 Tensorflow2.1 介绍2.2 安装2.3 简单例子 3 Keras3.1 介绍3.2 安装Keras3.3 使用Keras构建深度学习模型3.4 一个例子 4 ...
- 深度学习之优化详解:batch normalization
摘要: 一项优化神经网络的技术,点进来了解一下? 认识上图这些人吗?这些人把自己叫做"The Myth Busters",为什么?在他们的启发下,我们才会在Paperspace做类 ...
最新文章
- 两个文件比对_Edlib:方便快速的长序列比对软件包
- java 默认字符集 iso_第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及......
- springboot获取getBean方法以及ApplicationContext空指针问题解决
- JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解
- VC 在CStatic控件上绘图
- 天啦噜!在家和爱豆玩quot;剪刀石头布quot;,阿里工程师如何办到?
- 嘘!你与谷歌语音助手的对话,可能已经泄露……
- 家用车多少马力才够用?
- C++习题之变量和基本类型
- c语言程序设计的反思,C语言程序设计教学反思
- winpe安装Windows 10系统时efi part有红叉怎么办。
- 科研项目研究的基本步骤
- java readable_Java-Readable
- C语言基础 龟兔赛跑
- Python3脚本抢票
- 3DSMAX中英文对照大全(从A-Z分类)
- 樱花的季节,教大家用canvas画出飞舞的樱花树
- 第五次面试----中软国际有限公司
- map在python中是什么意思_【后端开发】map在python中什么意思
- ESP32学习:AD/DA数模转换