压缩神经网格(三):MobileNets
MobileNets:Efficient Convolution Neural Networks for mobile Vision Application
网上资源
网上已经有很多超级好的资源了,为了不每次都百度瞎找,把这些都放在这里了
论文地址
一个棒棒的博客
主要思想
为了能够使得神经网络模型可以在嵌入式设备,比如手机中运行,必须减少模型的大小和加快模型的运行速度。文章为了减小模型中的参数(即减少模型的大小)以及加快速度,将卷积层的卷积操作,分解成了两步操作,一步做filter,一步做conbination。对应的一个叫depthwise convolution,一个叫pointwise convolution。
卷积操作的分解
普通卷积层的操作
对于神经网络中的一个卷积层的操作,如下图(这大概是全世界最棒的动图了)。
如图所示:卷积层的输入7*7*3,对应输入层的矩阵大小
分解卷积层的操作
在论文中,将原始的卷积核表示如下:
分解后的卷积核如下,depthwise convolution的大小为
计算的过程如下图:
1. 输入层大小为
2. 这M个通道的矩阵分别和depthwise con的M个大小为
3. 然后中间层和大小为1*1 * M N 的pointwise con 做一个普通的卷积,得到一个大小为
理解:神经网络中卷积的过程实际上也就是,对每个通道分别进行filter,然后将各个通道的结果conbination的过程。论文中的分解卷积操作,也就是将filter和cinbination的操作分开了,分开后也达到了使得模型变小和速度变快的目的,具体分析如下。
分解卷积模型的优点
大小
原始的卷积核的大小为
理论计算量
原始卷积操作的计算量为
可以看到计算量也变小了呢。