论文记录_MobileNets Efficient Convolutional Neural Networks for Mobile Vision Application
来源:互联网 发布:知乎 刘备 王者 编辑:程序博客网 时间:2024/05/15 11:06
- 本文个人博客地址:点击查看
Tensorflow
中的实现:点击查看Caffe
中的实现:点击查看
1、概述
Google
在2017
年提出的适用于手机端的神经网络模型- 主要使用了深度可分离卷积
Depthwise Separable Convolution
将卷积核进行分解计算来减少计算量 - 引入了两个超参数减少参数量和计算量
- 宽度乘数(
Width Multiplier
): [减少输入和输出的channels
] - 分辨率乘数(
Resolution Multiplier
):[减少输入输出的feature maps
的大小]
- 宽度乘数(
2、深度可分离卷积(Depthwise Separable Convolution
)
- 可以将一个标准卷积核分成一个深度卷积
depthwise convolution
和 一个1X1
的卷积(叫作逐点卷积pointwise convolution
)。如下图所示
2.1 标准卷积
- 标准的卷积层是将维度为
D F ×D F ×M 的输入层转化为维度为D G ×D G ×N [ 上篇论文中也有提到]D F 是输入feature map
的长和宽,M 是输入的通道数(channels
)D G 是输出feature map
的长和宽,N 是输出的通道数
- 假设卷积核
filter
的大小是D k ×D k ,则标准卷积的计算量是D k ⋅D k ⋅M⋅N⋅D F ⋅D F - 引用上篇论文中的图, 只看
kernel matrix
部分,D k ⋅D k 就是一个方格的大小,然后乘上输入和输出的channels
个数,然后作用在input feature maps
- 引用上篇论文中的图, 只看
- 标准卷积是这样的, 即不管当前
pixel
有多少channels
,卷积之后就是一个channel
2.2 Depthwise Separable Convolution
- 分为两个步骤
- 第一步深度卷积:卷积核的大小是
D k ×D k ×1×M ,所以总的计算量是:D k ⋅D k ⋅M⋅D F ⋅D F - 第二步逐点卷积:卷积核大小是
1×1×M×N ,所以总的计算量是: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 =1N +1D 2 k MobileNet
使用的是3x3
的卷积核,所以计算量可以减少8-9倍 (因为比率是1/N+1/9
)
- 第一步深度卷积操作是在每一个
channel
上进行的卷积操作
- 第二步逐点卷积才是结合起来
3. 神经网络结构
MobileNet
共有28
层(深度卷积和逐点卷积分开来算)- 之前标准的结构是卷积层之后跟上
Batch Normalization
层和Relu
激活函数,这里引入Depthwise separable convolution
之后的结构如下图- 每一层都跟上了BN层和激活函数
- 总的结构
4. 宽度乘数(Width Multiplier)
- 引入超参数
α , 目的是使模型变瘦, - 即输入层的
channels
个数M,变成αM ,输出层的channels
个数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,
- 大约可以减少参数量和计算量的
α 2
- 一般
5. 分辨率乘数 (Resolution Multiplier)
- 引入超参数
ρ ,目的是降低图片的分辨率 - 即作用在输入的
feature map
上 - 所以再引入分辨率乘数后总的计算量是:
D k ⋅D k ⋅αM⋅ρD F ⋅ρD F +αM⋅αN⋅ρD F ⋅ρD F - 一般输入图片的分辨率是
224, 192, 160 or 128
- 大约可以减少计算量的
ρ 2
- 一般输入图片的分辨率是
6. 实验结果
- 关于超参数的选择,下图可以看出准确度和参数量和参数运算量的关系,之间有个
trade off
,合理选择参数即可
- 还在细粒度的识别,大规模地理位置识别,人脸属性提取,目标检测和人脸识别等任务上进行了测试,效果也很好
7. 总结
- 主要是基于depthwise separable convolution
- 引入了两个超参数
- [ 第一个宽度乘数就是减少
feature map
,以此来降低模型厚度 ] - [ 第二个分辨率乘数就是缩小
feature map
的大小,来减少计算量]
- [ 第一个宽度乘数就是减少
- [ 超参数的选择是有个
trade off
的 ]
Reference
- https://arxiv.org/abs/1704.04861
- https://github.com/tensorflow/models/blob/master/slim/nets/mobilenet_v1.md
- https://github.com/shicai/MobileNet-Caffe
- http://machinethink.net/blog/googles-mobile-net-architecture-on-iphone/
阅读全文
0 0
- 论文记录_MobileNets Efficient Convolutional Neural Networks for Mobile Vision Application
- 论文记录_MobileNets Efficient Convolutional Neural Networks for Mobile Vision Application
- [论文阅读]MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- [论文解读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications论文笔记
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- 手机CNN网络模型--MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- 网络小型化MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- Reading Note: MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- How to design DL model(1):Efficient Convolutional Neural Networks for Mobile Vision Applications
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications个人理解
- 轻量化网络:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- [论文解读] ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
- Pruning Convolutional Neural Networks for Resource Efficient Inference代码详解
- 16 Quantized Convolutional Neural Networks for Mobile Devices论文翻译笔记
- Convolutional Neural Networks: Application
- Handler、Looper、Message随笔
- 字节对齐实例
- C++程序的简单执行过程
- 统计相关系数(2)——Spearman Rank(斯皮尔曼等级)相关系数及MATLAB实现
- 线段树 poj2528 Mayor's posters
- 论文记录_MobileNets Efficient Convolutional Neural Networks for Mobile Vision Application
- 【实践课】PB问题记录
- Java中中的异常、异常的分类
- <span>的用途
- 矩阵快速幂模板(mark)
- Window函数库以及hz2016.space的开源
- AVR开发 Arduino方法(一) 端口子系统
- Android 最常用的设计模式一 安卓源码分析—单例模式singleInstance
- 51 nod 1428 活动安排 (线段的最大重合条数)