您的位置:首页 > 其它

压缩神经网格(三):MobileNets

2018-01-12 15:48 134 查看

MobileNets:Efficient Convolution Neural Networks for mobile Vision Application

网上资源

网上已经有很多超级好的资源了,为了不每次都百度瞎找,把这些都放在这里了

论文地址

一个棒棒的博客

主要思想

为了能够使得神经网络模型可以在嵌入式设备,比如手机中运行,必须减少模型的大小和加快模型的运行速度。文章为了减小模型中的参数(即减少模型的大小)以及加快速度,将卷积层的卷积操作,分解成了两步操作,一步做filter,一步做conbination。对应的一个叫depthwise convolution,一个叫pointwise convolution。

卷积操作的分解

普通卷积层的操作

对于神经网络中的一个卷积层的操作,如下图(这大概是全世界最棒的动图了)。

如图所示:卷积层的输入7*7*3,对应输入层的矩阵大小DF * DF为7*7,通道数M为3。卷积核的大小DK * DK * M * N为3*3*3*2,步长为2*2。卷积过程如下图,得到的输出3*3*2,矩阵大小DG * DG为3*3,输出通道数N为2。



分解卷积层的操作

在论文中,将原始的卷积核表示如下:



分解后的卷积核如下,depthwise convolution的大小为DK * DK * 1* M, pointwise convolution的大小为1 * 1 * M * N。



计算的过程如下图:

1. 输入层大小为DF * DF * M,包含了M个通道,

2. 这M个通道的矩阵分别和depthwise con的M个大小为DK * DK 的卷积核做卷积操作,得到大小为DG * DG * M 的中间层。

3. 然后中间层和大小为1*1 * M N 的pointwise con 做一个普通的卷积,得到一个大小为DG DGG* N大小的输出feature map 。



理解:神经网络中卷积的过程实际上也就是,对每个通道分别进行filter,然后将各个通道的结果conbination的过程。论文中的分解卷积操作,也就是将filter和cinbination的操作分开了,分开后也达到了使得模型变小和速度变快的目的,具体分析如下。

分解卷积模型的优点

大小

原始的卷积核的大小为DK * DK * M * N,分解后的两个卷积核的大小分别为DK * DK * 1* M和M * N 。显然后者的和比前者小得多。

理论计算量

原始卷积操作的计算量为DK * DK * M * N * DF * DF,分解后的计算量为DK * DK * M * DF * DF + M * N * DF * DF。论文中有公式如下:


可以看到计算量也变小了呢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: