阅读论文MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Application,对移动端深度学习网络MobileNet记录了一些笔记。原文链接:论文链接
一. 背景
为了提高准确度,网络越来越大,越来越复杂,可是移动端无法支持这样大的网络。所以移动端需要减小网络,但是还能保证速度和准确度不下降太多。
有两种方法,一种是减小已有网络的规模,另外一种是重新训练一个小网络。
MobileNet就是重新训练的小网络,它引入了(Depthwise separable convolution)深度级可分离卷积,包括(Depthwise convolution)深度级卷积和(Pointwise convolution)点级卷积。相比VGG16,MobileNet的准确度稍微下降,但是优于GoogleNet。然而,从计算量和参数量上MobileNet具有绝对的优势。
二. 原理
Depthwise convolution和标准卷积不同,对于标准卷积:一个滤波器是用在所有的输入通道上(input channels),有几个通道,这个滤波器就有几个卷积核。一个滤波器能产生一个特征,也就是一个输出通道。滤波器的个数自定,那么输出通道数目就是不确定的。
而depthwise convolution针对每个输入通道采用不同的滤波器,因为只有一个通道,所以一个滤波器只有一个卷积核。一个滤波器仍然产生一个特征,也就是一个输出通道。滤波器的个数和输入通道个数相同,那么输出通道数目就和输入通道数目相同。所以说depthwise convolution是depth级别的操作。
而pointwise convolution其实就是普通的卷积,只不过采用大小为1x1的滤波器。
三. 计算
假定输入特征图大小是:
而输出特征图大小是:
其中DF是特征图的width和height,这是假定两者是相同的,而M指的是通道数(channels or depth)。这里也假定输出特征图大小与输入特征图大小(width and height)是一致的,但滤波器个数N自定。对于标准的卷积 ,其计算量将是:
depthwise convolution计算量是:
而对于pointwise convolution其计算量为:
所以depthwise separable convolution总计算量是:
可以比较depthwise separable convolution和标准卷积如下:
一般情况下N比较大,那么如果采用3x3卷积核的话,depthwise separable convolution相较标准卷积可以降低大约9倍的计算量。
四. 网络结构
五. 更小的模型
针对不同的应用场景,可以对MobileNet进行瘦身。这里引入了两个超参数:width multiplier和resolution multiplier。
第一个参数width multiplier主要是按比例减少通道数,该参数记为α,其取值范围为(0,1],那么输入与输出通道数将变成αM和αN,对于depthwise separable convolution,其计算量变为:
width multiplier会按大约平方的倍数降低计算量和参数量。
第二个参数resolution multiplier主要是按比例降低特征图的大小,记为ρ,其取值范围为(0,1],比如原来输入特征图是224x224,可以减少为192x192,加上resolution multiplier,depthwise separable convolution的计算量为:
要说明的是,resolution multiplier会按大约平方的倍数降低计算量,但是不降低参数量。