论文阅读——MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
目录
前言
之前有一段时间看了挺多深度学习方面的论文,但是由于时间方面的问题一直没来得及进行总结。最近一段时间突发奇想把自己看论文时的学习笔记给记录一下,由于之前没写过博文,所以排版可能会有点emmm...一言难尽。专业方面的知识,如果有理解不到位的地方欢迎各位大佬指教。
Abstract
本文的主要工作:
- 提出了一个可在移动端应用的高效网络MobileNets,其使用深度可分类卷积使网络轻量化同时保证精度。
- 引入两个全局超参数,让使用者可根据约束条件调整网络大小。
- 在ImageNet分类集上与其他模型进行了广泛对比,验证了MobileNets的有效性。
1、Introduction
文章这一部分主要是简要介绍了一下,深度网络的发展和应用,并且引出自己提出的MobileNets网络,指出其在移动端应用方面的有效性。
2、Prior Work
文章的这一部分主要是介绍了对网络进行收缩和小型化的方法,以及相关的网络及研究成果。
1、相关网络:
- Inception网络:使用深度可分离卷积减少前几层的计算量。
- Flattened网络:网络由完全分解的卷积构建。
- Xception网络:演示了如何按比例扩展深度可分离卷积核。
- Squeezenet网络:使用瓶颈方法设计了一个非常小的网络。
2、获得小型网络的方法:
- 对预训练网络进行压缩:基于乘积量化、散列以及修剪、矢量量化和霍夫曼编码的压缩。
- 蒸馏:使用较大的网络教授较小的网络。
3、MobileNet Architecture
3.1、深度可分离卷积
文章这一部分主要是介绍普通卷积和深度可分离卷积在计算方式上的差异,并且给出他们在所需计算量上的不同。假设为输入特征图,
为卷积核的尺寸,
为输出特征图
的尺寸,
是输入通道数,
是输出通道数。
1、标准卷积
- 假设步长为1,并且有填充,则标准卷积计算特征图的表达式如下所示:
- 很明显,进行一次标准卷积的计算量如下:
- 卷积一般有两个作用:1.使用卷积核(过滤器)对图中的特征进行提取。2.对提取的特征进行融合。在标准卷积中这两步一般是同时进行的,但是在深度可分离卷积中这两步是分开的。
2、深度可分离卷积
- 深度可分离卷积由两次卷积构成:深度分离卷积和逐点卷积。
-
深度分离卷积:深度分离卷积把输入特征图的所有通道进行分离,每个通道对应一个卷积核对该通道的特征图进行单独的卷积操作(也就是说在深度分离卷积中,每个卷积核的深度固定为1)。因此深度分离卷积计算特征图的表达式和计算量如下:
深度分离卷积计算特征图的表达式
-
逐点卷积:这一步主要是将使用滤波器分离出来的特征进行融合。具体操作是用
个大小为1×1、深度为
的卷积核,对深度分离卷积输出的深度为
的特征图进行统一卷积。计算量为
。
- 因此计算一次深度可分离卷积的总体计算量为:
- 相应的,可以计算深度可分离卷积和标准卷积的计算量比如下,很明显可以看出深度可分离卷积的计算量是明显要小的。
3.2、网络结构和训练
1、网络结构
- MobileNet共有28层,总体结构如下表所示:
- 在每层卷积后都会插入一个BN层和ReLU**函数层,如下图所示:
2、训练设置:
- 深度可分离卷积结构几乎把全部的计算复杂度放到了1*1卷积中,可以使用高度优化的通用矩阵乘法(GEMM)实现计算。
- 由于小网络不易过拟合,MobileNet较少使用正则化和数据增强技术(如没有使用side heads或者label smoothing)。
3.3、宽度乘子:更窄的模型
为了方便在各种设备上应用,文章中设置了一个宽度乘子用于改变网络的宽度,即输入和输出通道的个数。
时是基准MobileNet,而
时是减小的MobileNet。输入输出的通道数分别变为
和
,因此在引入宽度乘子后一层深度可分离卷积的计算量为:
3.4、分辨率乘子:减少表达
文章中设置的第二个超参数是分辨率乘子,顾名思义他是用来减少每一层输出的特征图大小的,通过减小特征图的分辨率来降低模型所需要的计算量,加入
和
的模型计算量公式为:
4、Experiments
4.1、模型选择
- 文章首先将使用全卷积的MobileNets和使用深度可分离卷积的MobileNets进行精度和计算量的对比,如下表所示,很明显使用深度可分离卷积的MobileNets在损失极小精度的同时,大大减少了计算量。
- 接着作者又对比了较浅的MobileNets网络(删除了5层卷积层)和较窄的MobileNets网络的精度和计算量,如下表所示。
4.2减小模型中的超参数
- 作者首先不断减小MobileNets的宽度乘子
,并观察其精度的变化,如下表所示。可以看到在
为0.25前,精度的下降都是比较平稳的。
- 其次将
固定为1,不断减小分辨率乘子
,并观察其精度变化,如下表所示随着
的减小,精度的下降是比较平稳的。
- 下图显示的是宽度乘子
与分辨率为
进行组合形成的16个模型在ImageNet精度和计算量之间的权衡。
- 下图显示的是宽度乘子
与分辨率为
进行组合形成的16个模型在ImageNet精度和参数量之间的权衡。
- 下表使用基准MobileNets与VGG16和GoogleNet进行了对比。
- 使用宽度乘子
,分辨率为160的缩小的MobileNets与Squeezenet和AlexNet进行对比。
4.3、细纹理识别
- 作者收集了一个更大但是有更多噪声的训练集,用来训练一个狗的识别模型,具体结果如下表。
4.4、大范围地理定位
4.5、面部特征
4.6、目标检测
4.7、人脸识别
5、Conclusion
- 提出了一种基于深度可分离卷积的新型网络MobileNets,并设置宽度乘子和分辨率乘子以调整网络大小达到在不同设备上适配的目的。
- 将MobileNets与其他先进的模型进行对比,并将其引用于不同任务中,凸显了MobileNets良好的尺寸和性能。