MobileNets
来源:互联网 发布:手机root软件 编辑:程序博客网 时间:2024/05/16 12:37
一篇讲如何设计轻量级网络的文章,来自Google,方法和创新不是很多,但实验太充分。不愧是谷歌,财大气粗,实验随便跑。
文章链接: 《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》
- Depthwise Separable Convolution
- Width Multiplier Thinner Models
- Resolution Multiplier Reduced Representation
- Experiments
文章共从三点来探讨网络加速,下面依次介绍这三点以及部分关键性的实验。
Depthwise Separable Convolution
想要明白这一节,前提还是要清楚常见的卷积实现方式,即caffe采用的im2col + GEMM。 具体可参考知乎上的一个高票回答,图示很清楚,
https://www.zhihu.com/question/28385679?sort=created。
所谓的Depthwise Separable Convolution,就是将传统的卷积按照下面的图示拆分成两个级联的卷积。
下面还是用公式说明一下:
假设输入 \(X\in R^{D_F\times D_F\times M}\), 一共有 \(N\)个 \(D_K\times D_K \times M\)大小的卷积核,再假设卷积stride=1且存在padding,即保证输出大小与输入一致。
首先,通过im2col将输入展开重排成一个大矩阵 \(\hat X\in R^{D_F^2\times D_K^2M}\), 卷积核也被整理成了一个矩阵 \(W \in R^{D_K^2M\times N}\), 于是输出直接通过GEMM矩阵乘法计算:\(output = \hat X \times W\).
至于Depthwise Separable Convolution,则是将上述的卷积拆分成两个卷积同时保证输出大小不变,具体地:
(1)拆分卷积1 如上图b, 该卷积层共有 \(M\) 个 \(D_K\times D_K\times 1\)的卷积核。 M是输入feature map的通道数,注意这里的卷积计算采用了类似于caffe中的Group操作。即第\(M_i\) 个卷积核只对输入feature map的第 \(i\) 个通道进行卷积。 最后的输出和输入的大小一致;
(2)拆分卷积2 如上图c,为了使得输出通道数为N,这里采用 \(N\) 个 \(1\times 1\times M\) 卷积,最后的输出变为 \(D_F\times D_F\times N\)。
通过这种操作,acc只下降了1%,但参数量和计算量都得到了大幅下降:
Width Multiplier: Thinner Models
增加了一个超参数 \(\alpha \in[0,1]\) 来控制feature map的通道数,\(alpha\) 越小,则模型越小。
Resolution Multiplier: Reduced Representation
增加了一个超参数 \(\rho\) 来控制输入图像的分辨率,\(\rho\) 越小,则输入图像越小。
Experiments
(1)网络变深往往比网络变宽带来的效果好。
如下图,Shallow表示砍掉几层网络,0.75表示每层的feature map的通道数只有原来的75%.
(2) 网络性能和计算量呈现Log线性关系。
如下图,横坐标表示 乘加计算量。
(3) 参数量、分辨率与模型性能的关系
- MobileNets
- mobilenets
- MobileNets
- MobileNets 论文笔记
- 【网络优化】MobileNets
- MobileNets—深度学习模型的加速
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- 深度学习(六十五)移动端网络MobileNets
- 用于移动和嵌入式视觉应用的 MobileNets
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- 6、TensorFlow 中的卷积操作及其在 MobileNets 中的应用
- 手机CNN网络模型--MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- 网络小型化MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- 谷歌开源MobileNets:在移动设备上高效运行的计算机视觉模型
- 论文|谷歌推出最新“手机版”视觉应用的卷积神经网络—MobileNets
- 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet
- Reading Note: MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- B
- numpy学习笔记-存取文本文件
- 笔记1--Android系统四层
- B
- 每日三题-Day4-B(POJ 1661 Help Jimmy 基础DP)
- MobileNets
- 线程池调整
- js中数字使用substr方法
- [深受启发]java线程内存模型,线程、工作内存、主内存
- linux下编译vim8
- Python Requests post并将得到结果转换为json
- 你确定要成为一名程序猿嘛
- QN9022自定义广播包数据
- Ekelund's Diversity Icebreaker scale