1.概述
mobileNet是为移动和嵌入式设备提出的高效模型压缩的一种方式,其主要提出了可分离卷积来实现网络的轻量化,该方式的提出使得网络可以在损失较小的情形下,模型得到较大的压缩,从而为在嵌入式端进行实现提供了可能。该模型压缩方式已经在很多分类和目标检测等网络中得到了验证。
目前建立小型高效神经网络的方式,主要有两种:
(1)压缩预训练模型:获取小型网络的一个办法就是减小,分解或压缩训练网络。如量化压缩,哈希,剪枝,矢量编码以及霍夫曼编码等,此外还有各种分解因子用来加速预训练网络。
(2)直接训练小型模型:如Flattened networks利用完全的因式分解的卷积网络构建模型,显示出完全分解网络的潜力;Factorized Networks引入了类似的分解卷积以及拓扑连接的使用;Xception network显示了如何扩展深度可分离卷积到Inception V3 networks;Squeezenet 使用一个bottleneck用于构建小型网络。
(3)目前采用的主流小型高效神经网络方式是第二种方式,本文说明的mobileNet也是第二种方式。
2.网络结构和计算量分析
mobileNet是基于深度可分类卷积的实现的。深度可分离卷积:把标准卷积分解成深度卷积核逐点卷积,这样就可以大幅降低模型参数和计算量。具体如下:
输入的特征映射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中使用深度分离卷积对比如下:
4.mobileNet的具体结构如下