mobileNet-v1理论分析

1.概述      

 mobileNet是为移动和嵌入式设备提出的高效模型压缩的一种方式,其主要提出了可分离卷积来实现网络的轻量化,该方式的提出使得网络可以在损失较小的情形下,模型得到较大的压缩,从而为在嵌入式端进行实现提供了可能。该模型压缩方式已经在很多分类和目标检测等网络中得到了验证。

       目前建立小型高效神经网络的方式,主要有两种:

       (1)压缩预训练模型:获取小型网络的一个办法就是减小,分解或压缩训练网络。如量化压缩,哈希,剪枝,矢量编码以及霍夫曼编码等,此外还有各种分解因子用来加速预训练网络。

        (2)直接训练小型模型:如Flattened networks利用完全的因式分解的卷积网络构建模型,显示出完全分解网络的潜力;Factorized Networks引入了类似的分解卷积以及拓扑连接的使用;Xception network显示了如何扩展深度可分离卷积到Inception V3 networks;Squeezenet 使用一个bottleneck用于构建小型网络。
         (3)目前采用的主流小型高效神经网络方式是第二种方式,本文说明的mobileNet也是第二种方式。

 

2.网络结构和计算量分析

   mobileNet是基于深度可分类卷积的实现的。深度可分离卷积:把标准卷积分解成深度卷积核逐点卷积,这样就可以大幅降低模型参数和计算量。具体如下:

mobileNet-v1理论分析_第1张图片

输入的特征映射F尺寸为(D_{F},D_{F},M),采用标准的卷积核K为(D_{K},D_{K},M,N),输出的特征映射为G尺寸(D_{G},D_{G},N)。标准卷积的计算公式:

                                                                    G_{k,l,n} = \sum_{i,j,m}K_{i,j,m,n}\cdot F_{k+i-1,l+j-1,m}

输入的通道数为M,输出的通道数为N。对应的计算量为:D_{K}\cdot D_{K}\cdot M\cdot N\cdot D_{F}\cdot D{F}

可将标准卷积(D_{K},D_{K},M,N)拆分为深度卷积和逐点卷积:

深度卷积负责滤波,尺寸为(D_{K},D_{K},1,M)如图(b)所示,输出特征为(D_{G},D_{G},M)

逐点卷积扶着转化通道,尺寸为(1,1,M,N)如图(c)所示,得到输出特征为(D_{G},D_{G},N)

深度卷积的卷积公式为:

                                                                 \hat{G}_{k,l,n} = \sum_{i,j}\hat{K_{i,j,m}}\cdot F_{k+i-1,l+j-1,m}

其中\hat{K}是深度卷积,卷积核为(D_{K},D_{K},1,M),其中m_{th}个卷积核应用在F中第m_{th}个通道上,产生\hat{G}上第m_{th}个通道输出。

深度卷积核逐点卷积计算量:D_{K}\cdot D_{K}\cdot M\cdot D_{F}\cdot D_{F}+M\cdot N\cdot D_{F}\cdot D_{F}

计算量减少为:

                           (D_{K}\cdot D_{K}\cdot M\cdot D_{F}\cdot D_{F}+M\cdot N\cdot D_{F}\cdot D_{F})/(D_{K}\cdot D_{K}\cdot M\cdot N\cdot D_{F})\cdot D_{F}) = 1/N + 1 / D_{K}^{2}

可以看到计算量还是有了很大的改善。

3.标准卷积和mobileNet中使用深度分离卷积对比如下:

mobileNet-v1理论分析_第2张图片

4.mobileNet的具体结构如下

mobileNet-v1理论分析_第3张图片

        差不多以上就是mobileNet的一个初步介绍,网上有些博客可能写的更加详细,这里一方面是自己理解,另外一方面是方便大家学习,若有不当之处请指教,谢谢!

 

你可能感兴趣的:(DeepLearning,mobileNet)