MobileNets: Efficient Convolutio
这篇文章是 Google 在2017年发表的。
Abstract
提出了一个叫做 MobileNets 的用于手机和嵌入视觉应用的有效模型。MobileNets 是用可分离卷积构建的精简架构的轻度深度神经网络。文章介绍了两个全局超参数来平衡延迟性和准确性。
Introduction
目前有个趋势:越来越深并且越来越复杂的模型来获得更高的准确率。
但是,这些提高准确性的进步并不一定会使网络在大小和速度方面都更加高效。在许多现实世界的应用中,例如机器人技术,自动驾驶汽车和增强现实,识别任务需要在计算受限的平台上及时执行。
因此,这篇文章提出了一个小的,低延迟的模型来满足在移动设备和嵌入视觉应用。
Prior Work
通常可以将许多不同的方法归类为压缩预训练网络或直接训练小型网络。
MobileNets 主要聚焦与优化延迟但是也能得到一个小的神经网络。
MobileNets主要是从深度方向可分卷积中构建的,在Inception模型中使用,以减少前几层的计算量。
Flattened networks 由完全分解的卷积构建网络,并显示了高度分解的网络的潜力。
Factorized network 引入了类似的分解卷积以及拓扑连接的使用。
Xception network 演示了如何按比例扩展深度可分离的滤波器,以执行Inception V3网络。
Squeezenet 使用瓶颈方法设计了一个非常小的网络。
一些减少计算量的网络包括 structured transform networks 和 deep fried convnets。
获得小型网络的另一种方法是缩小,分解或压缩预训练的网络。
在文献中已经提出了基于乘积量化,散列以及修剪,矢量量化和霍夫曼编码的压缩。
另外,已经提出了各种因式分解来加速预训练的网络。
训练的另一种方法小型网络是蒸馏,它使用较大的网络来教授较小的网络。
MobileNet Architecture
- Depthwise Separable Convolution
MobileNet模型基于深度可分离卷积(depthwise separable convolutions),它是分解卷积的一种形式,它将标准卷积分解为深度卷积和称为点向卷积(pointwise convolution)的1x 1卷积。
一个标准的卷积既可以过滤又可以将输入合并为一组新的输出。
假设一个输入为 的特征图,输出为的特征图,核的规模为。
计算方式为:
计算复杂度为:
标准卷积的计算复杂度
深度可分离卷积是把标准卷积分为两部分,其组成分别是深度卷积(depthwise convolution) 和 点式卷积(pointwise convolution)
标准卷积和深度可分离卷积其中第一部分深度卷积和标准卷积的区别在于仅仅只用了一个过滤器,规模为,所以公式 (1)可以改为:
深度卷积的计算复杂度为:
深度卷积的计算复杂度
然后,使用逐点卷积(简单的1×1卷积)来创建深度层输出的线性组合,产生与标准卷积同样规模的输出。
因此深度可分离卷积的计算复杂度为深度卷积和逐点卷积之和:
深度可分离卷积计算复杂度
减少的计算复杂度为:
计算复杂度比较- Network Structure and Training
MobileNet 结构:
Table 1 BN,ReLU 的使用如表2所示,MobileNet将其95%的计算时间花费在 1×1 卷积中,其中还包含75%的参数。
Table 2- Width Multiplier: Thinner Models
为了构造这些更小且计算量更小的模型,我们引入了一个非常简单的参数,称为宽度乘数,其作用是使每一层的网络均匀变薄。
对一个给定的层以及宽度乘数,输入通道数变成了,输出通道数变成了。
因此计算复杂度变成了:
加入宽度乘数后的计算复杂度其中,,通常设置为1、0.75、0.5和0.25。当的时候,为原始模型,的时候,为减少的 MobileNets。
宽度乘数能够减少 计算复杂度和参数。
- Resolution Multiplier: Reduced Representation
减少神经网络计算成本的第二个超参数是分辨率乘数。
将其应用于输入图像,然后通过相同的乘数来减少每一层的内部表示。
则,新的复杂度表示为:
加入两个超参数后的计算复杂度其中,,通常是隐式的,网络的输入分辨率一般为为 224, 192, 160 或者128。
分辨率乘数能够减少的计算复杂度。
Table 3参考资料:
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications