【论文阅读】MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications

论文简介:

《MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications》中的MobileNets是Google针对手机等计算资源有限的嵌入式设备提出的轻量级的深层神经网络结构,其特点是在牺牲较少精度的情况下获得较快的运行速度(较少计算量和较少参数)。其核心思想是将传统卷积分解为深度分离卷积(depthwise separable convolutions)和1x1点卷积两步来实现。

一、Introduction 介绍

目前CNN在计算机视觉领域无所不在,为了获得更高的性能,往往都是在设计更深、更复杂的网络模型。面对计算资源较少的嵌入式设备,或具有实时运行需求的应用场景,多参数、多计算量的大型网络往往无法得到实用,机器人,自动驾驶,增强现实。

当前构建小而高效网络模型的技术大概可以分为两类,一、压缩预训练好的模型,二、直接训练小型网络。模型压缩技术主要有,网络剪枝,对预训练完成的网络模型,分析去掉不重要的一部分模型参数及结构,参数量化,float型的模型参数进行取整,采用8bit uchar存储,可降低模型大小及加速计算(较轻微精度损失),模型参数聚类,采用huffman编码(出现概率较多的数采用短的编码)。知识蒸馏(distillation),采用预训练好的大型网络作为“老师”,再训练小型网络(小型网络不是直接使用数据集标签进行训练,而是使用大型网络的输出作为标签进行训练)。

二、MobileNet

MobileNet使用深度分离卷积(depthwise separable convolutions)和1x1点卷积两步来近似等价实现传统卷积,从而减少参数及计算量,加快模型推理速度(时间,latency)。

传统3D卷积是将每个通道的卷积和每个通道卷积结果的融合,两个步骤放在一起进行的,MobileNet将其分解为两步,一、使用深度分离卷积分别进行每个通道的独立卷积,然后使用1x1卷积将各个通道的卷积结果进行融合,作为输出。这种处理方法切断了二维大的卷积核与输出feature map个数之间的联系,降低了计算量和参数量。该方法如下图所示。

【论文阅读】MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications

【论文阅读】MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications

标准卷积旨在使用卷积核对上一层的feature进行卷积处理,然后将卷积处理后的feature进行融合得到新的表示。depthwise convolution对每一个通道单独进行卷积,pointwise convolution(1x1 卷积),使用一个线性组合得到新的特征。MobileNet中主要计算量基本集中在1x1卷积上,卷积的底层实现一般通过一种im2col方式实现,其需要内存重组,当卷积核为1x1时,就不需要这种操作了,底层可以有更快的实现。

MobileNet是一个小型网络,小型网络训练时不容易过拟合,不需要使用dropout,正则化,数据集预处理增强等手段(加畸变,翻转,裁剪等)。

MobileNet网络结构,MobileNet使用BN和RELU,以及最后使用Average pooling将空间分辨率缩小为1,再连接全连接层,softmax层进行分类输出。

【论文阅读】MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications

【论文阅读】MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications

三、宽度因子和分辨率因子

width multiplier主要是按比例减少通道数,α取值范围为(0,1],那么输入与输出通道数将变成αM和αN,降低通道数,降低网络宽度,让网络变瘦。相同参数量下,深瘦型网络比浅胖型网络效果好。

Resolution multiplier控制输入图片以及各层的feature map的大小,能够减小计算量,但是不能减小参数量,因为这个对于卷积核的大小没有影响