MobileNet论文记录

在开始论文记录之前介绍一点小的知识点:假设卷积核大小为Kn * Kw,输入通道为Cin,输出通道为Cout,输出特征图的宽和高为W,H。
Conv标准卷积层:参数数量:Kn *Kw * Cin * Cout
理论计算量:Kn * Kw * Cin * Cout * W * H

FC全连接层:参数数量:Cin * Cout
理论计算量:Cin * Cout

摘要介绍

高效的卷积神经网络的移动视觉应用程序。一类有效的模型是移动和嵌入式视觉应用的移动网络。MobileNet基于流线型架构,使用深度可分卷积网络来建立轻量级深度神经网络。使用两个简单的全局超参数,有效地权衡延迟和准确性。建立小型有效的网络有许多方法,不同的方法大致分为压缩预训练网络和直接训练小网络。
本文提出的网络体系结构,允许模型开发人员为其应用程序选择与资源限制(大小,延迟)匹配的小型网络,MobileNet主要关注优化延迟,但是也产生小网络。但是,它们的目标在保持模型性能的前提下降低模型大小,同时提升模型速度。MobileNet属于直接设计小模型并训练。

Depthwise separable convolution

MobileNet的基本单元是深度可分离卷积,深度可分卷积其实是一种可分解卷积操作,可以将它分成两个更小的操作,深度卷积和点卷积。深度卷积核标准卷积不同,对于标准卷积的卷积核是用在所有输入通道上,而深度卷积针对每个输入通道采用不同的卷积核,就是说一个卷积核对应一个输入通道。点卷积就是普通卷积,只不过采用了1*1的卷积核。下图清晰地展示了两种操作,对于深度可分卷积,首先深度卷积对不同的通道分别进行卷积,然后采用点卷积将上面的输出进行结合,这个过程和一个标准卷积是差不多的,但是会大大减少计算量和模型参数量。
MobileNet论文记录
下面分析一下深度可分卷积在计算量和标准卷积的差别。假定输入特征图大小是Df * Df * M,而输出特征图大小为Df * Df * N,其中Df是特征图的宽和高,假定宽和高两者是相同的,并且输入和输出特征图大小也是相同的。采用的卷积核尽管是特例,但是不影响下面的分析,对于标准卷积Dk * Dk来说,它的计算量是:
MobileNet论文记录
而对于深度卷积来说其计算量为:
MobileNet论文记录
点卷积的计算量为(卷积核大小为1 * 1):
MobileNet论文记录
所以深度可分卷积的总计算量为:
MobileNet论文记录
可以比较深度可分卷积和标准卷积:
MobileNet论文记录
一般的情况下输出通道N会比较大,如果采用3 * 3卷积核,深度可分卷积相比较标准卷积可以降低大约9倍的计算量。

MobileNet网络结构

深度可分卷积的基本操作如下,这是MobileNet的基本组件,但是真正应用中会加入BatchNorm,并且使用**函数ReLU。
MobileNet论文记录
MobileNet网络结构表如下,首先是一个3 * 3的标准卷积,后面堆叠了深度可分卷积,一些深度卷积会通过stride=2来进行下采样。然后采用平均池化将特征图变成1 * 1,再根据预测类别的大小加上全连接层,最后一个是softmax层。
如果单独计算深度卷积和点卷积,整个网络会有28层,不包括平均池化层和softmax层。非结构化稀疏矩阵操作通常不会比密集矩阵操作快,直到非常高的稀疏性,我们将模型结构几乎所有的操作都集中在1 * 1卷积上,通过高度优化的通用矩阵乘法来实现。卷积由GEMM实现的,但是需要在内存中进行名为im2col的初始重新排序才能将其映射到GEMM上,1 * 1卷积不需要在内存中重新排序,可以直接使用GEMM实现,MobileNet将95%的计算时间花费在1 * 1卷积上。对于参数也主要集中在1 * 1卷积上,然后全连接层也占了一部分的参数。
MobileNet论文记录
MobileNet网络的计算和分布:
MobileNet论文记录
MobileNet效果如何,与GoogLeNet和VGG16做了对比,在准确率上MobileNet比GooLeNet稍好一点,但比VGG差一点,但是在计算量和参数量上MobileNet具有绝对的优势。
MobileNet论文记录

MobileNet更薄更小的模型

前面说的是MobileNet的基准模型,如果在实际应用中,你需要更小的模型,那么就要对MobileNet进行瘦身。这里引入了两个超参数:width multiplier和resolution multiplier。width multiplier主要是按比例减少通道数,记该参数为 α ,取值范围为[0,1],典型设置为1,0.75,0.5,0.25.那么输入输出通道变成αM和αN,对于深度分离卷积来说,它的计算量为:
MobileNet论文记录
因为主要的计算量在最后一项,所以width multiplier可以按照比例降低计算量,其参数量也会下降。第二个参数resolution multiplier主要是按照比例降低特征图的大小,记该参数为ρ,比如原来输入特征图是224 * 224,可以减少为192 * 192,160 * 190,128 * 128.所以深度可分卷积的计算量为:
MobileNet论文记录
resolution multipler仅仅影响了计算量,但是没有影响参数量(具体计算看文章开头),引入了两个参数肯定降低MonileNet的性能,这就需要做出一些折中方法了。