MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

原文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

摘要

We present a class of efficient models called MobileNets for mobile and embedded vision applications. MobileNets are based on a streamlined architecture that uses depthwise separable convolutions to build light weight deep neural networks. We introduce two simple global hyperparameters that efficiently trade off between latency and accuracy. These hyper-parameters allow the model builder to choose the right sized model for their application based on the constraints of the problem. We present extensive experiments on resource and accuracy tradeoffs and show strong performance compared to other popular models on ImageNet classification. We then demonstrate the effectiveness of MobileNets across a wide range of applications and use cases including object detection, finegrain classification, face attributes and large scale geo-localization.

我们提出了一类有效的移动和嵌入式视觉应用模型MobileNets。MobileNets基于一个流线型的架构,它使用可分离的反卷积来构建轻量级的深层神经网络。我们引入了两个简单的全局超参数,有效地权衡了延迟和准确性。这些超参数允许模型生成器根据问题的约束为其应用选择合适大小的模型。我们在资源和准确度的权衡方面进行了大量的实验,并且在ImageNet分类方面与其他流行的模型相比表现出了很强的性能。然后,我们展示了MobileNets在广泛的应用和用例中的有效性,包括目标检测、细粒度分类、人脸属性和大规模地理定位

章节内容

论文首先介绍了逐通道可分离卷积(或者称为深度可分离卷积,depthwise separable convolution)的实现;然后介绍了整体的网络架构以及训练流程,同时介绍了两个超参数(宽度乘法器(width multiplier)和分辨率乘法器(resolution multiplier))以进一步缩小模型大小;最后通过大量实验证明MobileNet的有效性及其可扩展性

逐通道可分离卷积

逐通道可分离卷积是MobileNet实现的核心,通过因子分解大幅的压缩卷积参数

标准卷积

假定输入特征图大小为\(D_{F}\times D_{F}\times M\),假定步长为\(1\),填充为\(1\),那么输出特征图大小为\(D_{F}\times D_{F}\times N\),所以对于标准卷积而言,卷积核大小为\(D_{K}\times D_{K}\times M\),共\(N\)个滤波器。其计算成本为

\[ D_{K}\times D_{K}\times M\times N\times D_{F}\times D_{F} \]

解释:每次卷积核计算\(D_{K}\times D_{K}\times M\)大小输入,得到\(1\times 1\)大小输出,一个滤波器共进行\(D_{F}\times D_{F}\)次滤波操作,共\(N\)个滤波器

标准卷积组合了两步操作:首先对输入数据和卷积核进行逐点乘积,然后求和所有点的计算结果。深度可分离卷积将滤波和组合操作分离为两步执行,分别是深度卷积(或者称为逐通道卷积,depthwise convolution)和逐点卷积(pointwise convolution

逐通道卷积

逐通道卷积对输入特征图的每个通道执行一个单独的滤波器操作,所以其滤波器大小为\(D_{K}\times D_{K}\times 1\),共\(M\)个滤波器。其计算成本为

\[ D_{K}\times D_{K}\times M\times D_{F}\times D_{F} \]

解释:每次卷积核计算\(D_{K}\times D_{K}\times 1\)大小输入,得到\(1\times 1\)大小输出,一个滤波器共进行\(D_{F}\times D_{F}\)次滤波操作,共\(M\)个滤波器

逐点卷积

经过深度卷积操作后,得到了\(D_{F}\times D_{F}\times M\)大小的特征图,下一步使用逐点卷积对其进行特征图的组合操作,使用\(1\times 1\times M\)大小的卷积核,共\(N\)个滤波器。其计算成本为

\[ 1\times 1\times M\times N\times D_{F}\times D_{F} \]

解释:每次卷积核计算\(1\times 1\times M\)大小输入,得到\(1\times 1\)大小输出,一个滤波器共进行\(D_{F}\times D_{F}\)次滤波操作,共\(N\)个滤波器

小结

将标准卷积分解成逐通道可分离卷积,其参数数目得到了极大的压缩。计算如下:

\[ \frac {D_{K}\times D_{K}\times M\times D_{F}\times D_{F} + M\times N\times D_{F}\times D_{F}}{D_{K}\times D_{K}\times M\times N\times D_{F}\times D_{F}} = \frac {1}{N} + \frac {1}{D_{K}^{2}} \]

MobileNet使用\(3\times 3\)大小逐通道可分离卷积,能够得到8~9倍的参数压缩

另外,对逐通道卷积层和逐点卷积层都应用了激活函数和批量归一化,增加了非线性特征

架构和训练

MobileNet架构

  • \(Conv\)表示标准卷积
  • \(Conv\ dw\)表示逐通道可分离卷积

除了第一层使用标准卷积外,其余卷积层都使用了深度可分离卷积操作。将深度卷积和逐点卷积分开统计,整个MobileNet共有28

训练技巧

  1. 不需要过多的正则化和数据扩充,因为小网络不容易过拟合
  2. 对逐通道卷积执行很少或没有权重衰减(L2正则化)很重要,因为它们的参数很少,不容易过拟合

压缩因子

论文提出了两个超参数:宽度乘法器和分辨率乘法器,用来构造更小和计算成本更低的模型,不仅仅适用于MobileNet,理论上可以作用于任意一个模型

宽度乘法器

超参数\(\alpha\)用于减少每层输入输出数据的通道数。假定输入通道数为\(M\),输出通道数为\(N\),使用宽度乘法器\(\alpha\),则输入输出数据的通道数修改为 \(\alpha M\)\(\alpha N\)。对于单个逐通道可分离卷积而言,其计算成本为

\[ D_{K}\times D_{K}\times \alpha M\times D_{F}\times D_{F} + \alpha M\times \alpha N \times D_{F}\times D_{F} \]

\(\alpha\)的取值范围为\((0, 1]\),通常设置为\(1/0.75/0.5/0.25\)。当\(\alpha=1\)时就是原始MobileNet,当\(\alpha<1\)时就能够压缩模型

分辨率乘法器

超参数\(\rho\)用于减少每层输入数据的空间尺寸。假定输入输出数据的空间分辨率为\(D_{F}\times D_{F}\),使用分辨率乘法器\(\rho\),则空间尺寸修改为\(\rho D_{F}\times \rho D_{F}\)

\(\rho\)的取值范围为\((0, 1]\),并没有直接实现方式,而是隐式的设置输入数据分辨率来实现,通常设置为\(224/192/160/128\)

小结

同时使用宽度乘法器和分辨率乘法器,其计算成本为

\[ D_{K}\times D_{K}\times \alpha M\times \rho D_{F}\times \rho D_{F} + \alpha M\times \alpha N \times \rho D_{F}\times \rho D_{F} \]

当输入/输出数据的空间分辨率\(D_{F}=14\),输入/输出数据的通道\(M=N=512\),卷积核大小为\(D_{K}=3\),叠加使用宽度乘法器和分辨率乘法器,其结果如下

原始卷积层拥有2.36M个参数,MAC计算量为462。使用逐通道可分离卷积层,同时设置\(\alpha=0.75, \rho=0.714\),得到0.15M个参数,MAC计算量为15.1。参数其压缩了15.7倍,MAC计算量压缩了30.6

小结

论文不仅提出了一个新的轻量级模型架构MobileNet,还提出了两种压缩方法 - 宽度乘法器和分辨率乘法器。在具体使用过程中,先使用原始MobileNet进行训练,然后逐步测试不同\(\alpha\)\(\rho\)的作用

MobileNet大量使用了\(1\times 1\)卷积操作。从下表可知,\(1\times 1\)卷积操作占据了主要的计算时间,在有效降低标准卷积计算量的同时也成为了新的计算瓶颈