MobileNet
1. 网络简介
MobileNet模型是Google公司近年来提出的一种轻量级深度神经网络,主要用于移动和嵌入式平台开发使用。MobileNets主要是从最初引入的深度可分离卷积构建的,并随后用于Inception模型减少前几层的计算,并从此引入了因式化卷积以及拓扑连接的使用[1],使扁平网络通过完全分解的卷积构建网络减少参数和计算量。轻量化网络通常是通过压缩预训练网络或直接训练小网络两种方法实现,但现有许多小型网络只关注大小,不关注速度准确率等性能问题,MobileNet则是在兼顾模型性能的前提下有效的降低了计算量和模型大小,做到了真正的轻量高效。
2. 深度可分离卷积
深度可分离卷积(Depthwise Separable Convolution)是MobileNet模型的核心,它是一种因式化卷积方式,换言之它能将标准卷积像乘法那样进行因式分解,将其分为深度卷积和点卷积[2],如图1所示。
图1深度可分离卷积结构示意图
举一个例子,假设一个卷积层大小为3*3,输入通道数与输出通道数分别为16、32。
对于标准卷积:卷积层会让32个33大小的卷积核依次遍历16个输入通道中的每个像素,将遍历结果输出到输出特征图,最终可得到所需的32个输出通道,过程参数量为163233=4608个。
对于深度可分离卷积,它首先用16个33大小的卷积核分别遍历16个输入通道的像素,得到了16个输入特征图,接着用32个1×1大小的卷积核遍历这16个输入特征图,最后再进行融合,此过程参数量为1633+163211=656个。
通过计算结果可以看出,深度可分离卷积将模型参数量减少了约7倍,
3. 深度可分离卷积架构
图2 深度可分离卷积结构图
如图2所示,这是深度可分离卷积的大体结构示意图,首先是一个33的深度卷积,然后通过BN(Batch Normalization)进行批规范化,使结果输出0均值,方差为1,再通过ReLU函数激活,再通过11卷积融合,再用一次BN进行规范化,最后再用一次激活函数ReLU,这就是深度可分离卷积的整体结构。
4. MobileNet架构
图3 MobileNet结构图
MobileNet的结构实际上就是由很多个深度可分离卷积构成的,如图3所示,首先输入一张维度为224224的图片,通道数为3,通过一次标准卷积(步长为2),接着就通过Conv dw也就是深度可分离卷积(步长为1),在通过点卷积(步长为1)进行通道数调整,并且在深度可分离卷积的过程中会通过下采样(down sampling)对图片进行压缩,这样重复进行压缩直到达到理想状态,最终得到一个77大小通道数为1024的输出特征图。
与大型网络不同的是,以VGG为例,它们的数据量会很大,因此会会普遍采用Max Pooling进行池化,方便提取特征,而MobileNet是轻量级网络,因此采用了Average Pooling,然后根据卷积得到的特征添加全连接层去进行分类,最后通过一个softmax层进行归一化,使其符合概率分布。总的来说,MobileNet网络模型比传统的神经网络模型更加轻便,通过深度可分离卷积减少了大量参数,生成的模型更小,并且同时兼顾了准确率,是一种非常适用于嵌入式平台开发中的轻量级网络。
5.MobileNet网络比较
表1 MobileNet与流行模型的对比
Model | Image Net Accuracy | Million Mult-Adds | Million Parameters |
1.0 MobileNet-224 | 70.6% | 569 | 4.2 |
GoogleNet | 69.8% | 1550 | 6.8 |
VGG16 | 71.5% | 15300 | 138 |
如表1所示,将完整的MobileNet网络与GoogleNet[3]和VGG16[4]进行比较,从Accuracy数据看出MobileNet几乎与VGG16一样准确,同时大小缩小了32倍,计算密集度降低了27倍,MobileNet和GoogleNet相比,它更加精确,同时体积更小,计算量减少2.5倍以上。
表2 MobileNet与小模型的对比
Model | Image Net Accuracy | Million Mult-Adds | Million Parameters |
0.5 MobileNet-160 | 60.2% | 76 | 1.32 |
Squeezenet | 57.5% | 1700 | 1.25 |
AlexNet | 57.2% | 720 | 60 |
如表2所示,将宽度减少的α= 0.5和分辨率降低的160×160的MobileNet与AlexNet和Squeezenet相比,MobileNet的准确率比AlexNet[5]高4%,AlexNet大小却是MobileNet大小的45倍,同时减少了9.4倍的计算量。在大约相同的大小和22倍的计算量下,它的准确率也比Squeezenet 高出4%,因此MobileNet在小网络中的性能表现也非常突出。
6.两个超参数
其中alpha参数:在MobileNet v1版本中的可分离卷积被分为两部分,分别为深度卷积(depth_wise)和点卷积( and point_wise),这两个卷积对应的参数分别是depth_multiplier和alpha,这两个参数是为了在节省计算与保持accuracy之间寻找一个平衡点,为此使用alpha参数来调节每层的宽度,它可用来影响input channels M及output channels N的数目。若施加了alpha参数,那么在真正计算时所用的M与N将分别为alpha * M与alpha x*N。它又叫缩减参数/宽度参数,宽度乘数alpha的作用是在每层均匀地稀疏网络。
对于给定的图层在宽度乘数α和输入通道数M变为αM,输出通道数N变为αN时。具有宽度乘数α的深度可分卷积的计算成本为公式:
其中α的取值范围为(0,1),一般的设置为0.25,0.5,0.75,1,当α<1的时候就减少了MobileNets的宽度。宽度乘数具有通过大致α的平方地去减少计算成本和参数数量的效果,宽度乘数可以应用于任何模型结构,以定义具有合理精度,延迟和大小权衡的新的较小模型,它用于定义需要从头开始训练的新的简化结构[6]。
- Wang M , Liu B , Foroosh H . Factorized Convolutional Neural Networks[J]. 2016.
- Chollet, François. Xception: Deep Learning with Depthwise Separable Convolutions[J]. 2016.
- C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 1–9, 2015
- Simonyan K , Zisserman A . Very Deep Convolutional Networks for Large-Scale Image cognition[J]. Computer Science, 2014.networks for large-scale image recognition.
- Krizhevsky A , Sutskever I , Hinton G . ImageNet Classification with Deep Convolutional Neural Networks[J]. Advances in neural information processing systems, 2012, 25(2).
- Wu J , Leng C , Wang Y , et al. Quantized Convolutional Neural Networks for Mobile Devices[J]. 2015.