文章结构
Abstract
1、Introduction
2、Prior Work
3、MobileNet Architecture
3.1 Depthwise Separable Convolution
3.2 Network Structure and Training
3.3 Width Multilier: Thinner Models
3.4 Resolution Multiplier:Reduced Representation
4. Experements
4.1 Model Choice
4.2 Model Shrinking Hyperparameters
5. Conclusion
MobileNets主要应用在移动端和嵌入式的图像处理设备,这类设备一般不能搭载大功率和大体积的显卡,所以需要一种更加小巧的网络来运行深度学习模型。MobileNets的主要思想是使用depth-wise separable convolutions去建立轻量化模型。
首先指出卷积神经网络发展了这么多年虽然精度在不断提高,但是模型越来越复杂使其难以部署在机器人、无人驾驶等实时性要求高、算力不足的现实场景中。此论文提出了一个高效的网络结构和两个超参数,可以搭建很小的、低延时的模型以适用于嵌入式应用。
近些年,建立小巧的卷积神经网络模型越来越火了。大致的方法可以分为两类:压缩pretrained model;直接训练一个小的模型。MobileNet不止关注模型的小巧,还要兼顾低延时的特性。
一般的网络结构如上图中(a)所示,每个卷积核的形状是Dk*Dk*M,一共有N个。其计算量是:Dk*Dk*M*N*Df*Df。
作者在分析该计算量的组成结构时发现,输入图像的长宽Df*Df和Kernal的尺寸Dk*Dk是无法改变的,减小模型的切入点只能从M或者N下手,解除尺寸和N、M的内在联系。所以作者就把该普通卷积变成了两个部分:depthwise convolutins和pointwise convolutions。首先针对输入特征图的M个channel,分别使用M个单通道的Kernal进行卷积,假设padding=same,那么得到的特征图尺寸不变,仍然是M个channel。但是这样得到的特征图每个channel之间的信息并没有流动起来,二维的卷积得到的特征图只是根据这个channel上的信息生成的。接下来使用Pointwise convolution融合各个channel间的特征,使用N个Pointwise convolution最终得到的特征图就是N个channel的。
所以最终的计算量就是:Dk*Dk*M*Df*Df + Df*Df*M*N
计算量的缩减:
由于MobileNet使用的是3*3的depthwise separable convolutions,所以计算量会有8到9倍的减少(一般N都比较大,所以Dk部分占主要影响),但是精度并未下降太多。
MobileNet的第一层卷积并没有使用上面所提及的Depthwise separable convolutions(为什么呢?dw它的局限性在哪里?)。这一节的内容用如下图表就能够清晰展示了,作者首先介绍了dw结构的具体细节,然后介绍了MobileNet的网络结构。
Mult-Adds的数量少并不足够证明网络的高效,还需要这种网络结构是容易实现的,这些都是满足的。
MobileNet模型实现实使用的是TensorFlow(据说caffe有问题,未验证),使用的优化器是RMSprop。然而与训练大型模型不同的是,改模型并没有使用太多的正则化方法和数据曾广方法,因为MobileNet模型较小,不容易过拟合。
虽然MobileNet已经足够小了,但是一些特定的应用需要模型更快更小。为了满足这一需求,作者设计了名为Width multiplier的超参数α,其作用是对模型每一层的channel进行瘦身,如果输入channel数量是M,输出channel数量是N,那么瘦身后分别变成了αM和αN:
其中α∈(0,1]。
除了在channel上进行处理,作者还在特征图尺寸上设计了一个Resolution Multiplier,ρ。它被应用于输入图像和模型内部所有特征层,压缩后的计算量变为:
ρ∈(0,1 ]。特征图尺寸被压缩,论文中所说的MobileNet-224,MobileNet-192中的数字都是指压缩后特征图的尺寸。
实验的当务之急是证明depth-wise convolutions是有效的;
作者同时证明了压缩模型的宽度比减少模型的层数效果要好;
之后作者展示了之前所提到两个超参数width multiplier和resolution multiplier在模型压缩上的效果;
最后,作者将MobileNet应用于一些经典的应用场景,取代了经典的神经网络,验证它的效果。
table4中证明depthwise separable convolutions的有效性,精度只下降一丢丢,但是计算量却降低了非常多。
table5证明减小模型的width比减小模型的深度更加有效(这个结论只是在MobileNet上成立吗?)。 shallow MobileNet是通过去掉table1中14*14*512那层特征图中5个separable filters得到的。
使用width multiplier时,α越小精度越差。α不能太小否则精度下降的厉害。
使用resolution multiplier时精度下降情况。
table8中,对比了几种模型。
table9中,将压缩后的MobileNet和其他网络进行了对比。
其他应用自己看吧:
略