1. 轻量化网络
1.1 轻量化网络的目的
通过减小网络的体量,实现在正向推断降低网络运行的时间。其关键在于平衡小网络和算法效果,是性能和效果之间权衡的一种“优化”方法。
1.2 轻量化网络的方向大致分为两种
- 压缩现有训练好的网络
- 训练一个小网络
2. MobileNets
2.1 Motivations
"以下纯属个人见解,不代表原文的意思"
MobileNet的全文并没有明确的指出文章为什么要设计一个怎么样的网络实现轻量化,前面主要阐述,轻量化网络的重要性和轻量化网络的发展历程。至于作者为什么要设计一个DepthWise Separable Filters 并没有给出详细的说明,下面主要给出博主个人的观点:即为什么分离的卷积滤波可以代替二维卷积实现轻量化网络。
2.1.1 追溯传统卷积
现在说卷积,很对人会想到卷积神经网络;在图像处理中,卷积是传统图像处理的基础操作,很简单,就是一个二维的核在图像滑动以计算滤波后的结果。我们常见均值滤波,高斯滤波都可以是通过均值卷积核和高斯卷积核在和输入图像作卷积得到。
空间卷积在传统图像处理中就是极为消耗时间的步骤,因此在传统方法中就存在大量的方法用于加速卷积操作,例如:通过FFT转换到频域、利用积分图、分离卷积等等,他们各有利弊,其中分离卷积就和这里的mobile net大有渊源。
假定M*N的输入图像,卷积核为k * k
- 朴素的卷积的计算量为M * N * k * k。
- 分离卷积
分离卷积通过将一个2D的卷积分别通过两个1D的卷积实现。分离卷积大都用于实现高斯卷积,例如已知二维高斯卷积核Q,则Q可以表示为:
Q = q x q’;
其中,q为以为卷积,q’为q的一维装置向量,x为叉乘。
因此已知二维图像 I,其与卷积核Q的卷积可以等价为
I ☉ Q = I ☉ q ☉ q’
其中,☉表示卷积,q和q’卷积无顺序之分。
因此,使用分离卷积的计算复杂度为:M * N * k * 2
2.1.2 追溯卷积神经网络
卷积神经网络,也就是通过一系列的大量卷积来表达和学习多种特征,通过组合特征实现任务。卷积神经网络,卷积是其灵魂,尽管卷积操作不一定是高斯卷积,但是卷积核本来就是通过学习得到的,通过组合不同的卷积核未必也能达到相似的效果。有个大胆的想法,就是在图像处理中曾经说过,信号皆可通过混合高斯拟合。因此即便是非高斯的网络卷积也可以通过分离卷积实现逼近就不足为奇了吧。
其实除了高斯信号为,其他卷积和同样可以通过分离卷积实现,大致原理是:将卷积核通过SVD分解找到贡献较大的向量,(可认为是低秩分解),从而转换为分离卷积。进一步表明卷积可以通过分离卷积替代的原因。
综上所述,通过分离卷积可以节省计算量的同时等效为一般的卷积。卷积网络的学习核心也是在卷积操作,利用分离卷积可以节省计算量并且达到相同卷积表达作用。解释了卷积网路里面的卷积可以变成mobileNet里面说到的分离卷积。
接下来开始聊聊文章里面的内容。
2.1 Methods
方法上也是简单的,如下图所示:一个三维的卷积,可以展开为一个二维的卷积和一个一维的卷积,也就是作者讲的depthwise convolutions and pointwise convolutions。
其中depthwise convolutions 相同与普通的卷积,与网络中的卷积不同的是,它仅仅对每单个通道进行处理;
pointwise convolutions是一个1*1的卷积,但对所有的输入通道进行卷积。
- 原文给出这样之所以可以等效原来的卷积的原因是:
标准的卷积是通过将输入的特征进行滤波(filter)并整合(combining)作为输入,只是标准的卷积将这个步骤化为一个卷积操作;
Mobile Net则是将上面的滤波和整合 的操作分为两个步骤:
- depthwise convolution:对输入进行滤波;
- pointwise convolution:对滤波后的结果进行整合
因此,两个操作可等效果为标准的卷积操作,实现了同样的功能。
原来卷积的计算量为:
改为分离卷积后,计算量为
压缩后的压缩比为:
2.2 网络和训练
作者将标准的卷积网络用分离卷积的形式代替,其中每个分离的步骤后面都接有BN 和 RELU操作。替换如下图所示:
构建的网络结构和参数节省比如下图所示:
2.3 实验结果
实现结果请参照原文阅读
原文链接:https://arxiv.org/abs/1704.04861