1.概述      

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

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

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

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

 

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

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

mobilenetv2预训练权重 mobilenet预训练模型_mobilenetv2预训练权重

输入的特征映射F尺寸为(

,

,M),采用标准的卷积核K为(

,

,M,N),输出的特征映射为G尺寸(

,

,N)。标准卷积的计算公式:                                                                    

输入的通道数为M,输出的通道数为N。对应的计算量为:

可将标准卷积(

,

,M,N)拆分为深度卷积和逐点卷积:深度卷积负责滤波,尺寸为(

,

,1,M)如图(b)所示,输出特征为(

,

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

,

,N)

深度卷积的卷积公式为:

                                                                 

其中

是深度卷积,卷积核为(

,

,1,M),其中

个卷积核应用在F中第

个通道上,产生

上第

个通道输出。深度卷积核逐点卷积计算量:

计算量减少为:

                           

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

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

mobilenetv2预训练权重 mobilenet预训练模型_mobilenetv2预训练权重_02

4.mobileNet的具体结构如下

mobilenetv2预训练权重 mobilenet预训练模型_神经网络_03