(MobileNets)Efficient Convolutional Neural Networks for Mobile Vision Applications论文阅读笔记

MobileNets是一种为移动和嵌入式视觉应用设计的高效卷积神经网络,采用深度可分离卷积减少模型大小和计算量。论文提出两个超参数——宽度乘数和分辨率乘数,用于平衡速度和准确率。实验显示,MobileNets在ImageNet等任务上表现出色,并已在目标检测、人脸识别等多个应用中得到验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications论文阅读笔记2017

Abstract

我们提出了一类有效的网络,叫做MobileNets,用于移动和嵌入式视觉应用。MobileNets基于简化的流线结构,使用深度可分离卷积来建立权重较少的深度神经网络。**我们引入了两个简单的全局超参数,可以有效率地在速度和准确率之间达到平衡。这些超参数可以使模型builder基于任务的限制要求构建正确尺寸的模型来应用。**我们在资源使用和准确率平衡上也做了实验,在ImageNet分类上取得了比其他模型更强的表现。我们通过一系列应用,包括目标检测、细粒度分类、人脸属性和大规模地理定位,验证了MobileNets的有效。

1. Introduction

自从AlexNet以来,CNN在计算机视觉领域就变得非常普遍。普遍趋势是将网络变得更深更复杂,来取得更高的准确率。然而,这些操作得到的准确率提升相对于尺寸的提升和速度的降低是低效率的。在许多实际应用中,比如机器人、无人驾驶和增强现实中,识别任务需要在一个计算力受限的平台上,尽可能快的运行。

本文描述了一种高效的网络结构,以及两个超参数(用来构建很小、低延迟,可以匹配移动设备和嵌入式设备应用的模型)。第二部分回顾了在建立小模型的先验工作;第三部分描述了MobileNets的机构和两个超参数——宽度乘数和分辨率乘数;第四部分介绍了在ImageNet以及其他许多任务中的实验;第五部分进行总结和结论。

2. Prior Work

最近的论文中,构建小而有效的神经网络变得流行。**许多不同的方法可以大体分为两类:压缩现有的预训练模型或直接训练小的模型。**本文提出一类网络模型,可以让模型developer针对任务以及设备的限制来选择最适合的模型。MobileNets主要关注于优化延迟(速度),但同样生成小的模型。之前的许多论文只考虑了模型尺寸,而没有考虑速度。

**MobileNets主要基于深度可分离卷积构建,在前面几层使用Inception模型来减少计算量。**Flattened network基于完全分离卷积构建,展示了分离卷积网络的潜能。 Factorized Networks引入了一个类似的分离卷积,并且使用了拓扑连接。Xception network验证了如何将深度可分离卷积核扩展,取得了超越Inception v3的效果。

另一种获得小网络的方法是压缩、分离预训练的网络。基于乘积量化的压缩、哈希压缩、向量量化压缩以及霍夫曼编码压缩在之前的论文中已经提出。不同的分离方法也提出了,用来加速与训练网络。另一种用来训练小网络的方法是蒸馏(distillation),使用一个更大的网络来教一个更小的网络。这与我们的方法是互补的,在第四部分的实验中,我们用到了这种方法。

3. MobileNet Architecture

这一部分,我们首先介绍核心的层,深度可分离卷积。然后我们介绍MobileNet网络结构以及两个超参数。

3.1 Depthwise Separable Convolution

MobileNet基于深度可分离卷积构建,深度可分离卷积是一种分离卷积,它将标准的卷积分成按照深度的卷积(逐通道卷积)和一个1 * 1卷积(叫做逐点卷积)。**对于MobileNets来说,深度卷积对于每个channel只使用一个卷积核。然后逐点卷积使用1 * 1卷积,将逐深度卷积的结果组合成输出。**对于一个标准的卷积来说,每一步,每个卷积核与输入的通道维度匹配,计算之后组合成一个特征图,再将所有卷积核结果进行通道上的组合。**深度可分离卷积将卷积分为两层,一个用来filter,一个用来combine。这种分离策略极大地减少了计算量和模型尺寸。**图2展示了标准卷积以及分解成逐通道卷积和1 * 1逐点卷积。

设标准卷积输入为DF ×DF×M的特征图F,生成DG ×DG×N的特征图G,DF、DG为特征图的长和宽,M和N为通道数。

对于标准卷积,卷积核K的尺寸为DK ×DK×M×N,DK为卷积核的空间尺寸,M为输入特征图通道,N为卷积核个数(输出通道数)。

那么,假设步长为1,padding为1,那么输出由下面计算:

那么,标准卷积的计算花费为:

即计算的花费依赖于输入输出通道数M、N,特征图尺寸以及卷积核尺寸。MobileNet模型希望找到每个量的作用以及之间的联系。

**首先,使用深度分离卷积来打破输出通道数和卷积核尺寸之间的关系。**标准卷积操作首先通过卷积核将特征图进行过滤(fliter),然后再将不同卷积核的结果组合生成一个新的表示。过滤和组合操作可以利用深度可分离卷积分成两个步骤来减少计算量。

深度可分离卷积包含两层:逐通道卷积和逐点卷积。**我们使用逐通道卷积,输入的每一个通道,只使用一个卷积核。逐点卷积,利用1 * 1卷积,将逐通道卷积的结构进行一个线性的组合,生成一个特征图,多个逐点卷积的结果在通道上级联,得到最后的结果。**MobileNet对这两个步骤都是用了BN+ReLU。

逐通道卷积对每个输入通道只使用一个卷积核,可以写成:

这里的K是尺寸为DK ×DK×M的卷积核,里面的第m项被用到输入的第m通道上,生成输出特征图的m通道。

逐通道卷积的计算花费为:

相比于标准卷积来说,逐通道卷积非常有效率。**然而它只将各个通道上的输入过滤了,并没有将不同通道上的特征进行组合生成新的特征。**所以我们需要继续使用逐点卷积(1 * 1)来完成这个过程,生成新的特征。

深度可分离卷积的花费即为二者之和:

那么将这个与原来的标准卷积相比,我们的计算量是原来的:

MobileNet使用3 * 3的深度可分离卷积,比标准卷积少了8到9倍的计算量,而准确率只差一点。

其他的一些空间维度上的分离卷积方法没有这种方法节省的计算量多。

3.2 Network Structure and Training

**MobileNet结构基于可分离卷积,除了第一层为完全卷积。**MobileNet的网络结构定义如表1所示。所有层之后都加BN和ReLU,除了最后的fc层,最后送入softmax进行分类。

图3将标准卷积和深度可分离卷积进行对比(二者均有BN+ReLU)。下采样通过带步长的军妓进行。最后的平均池化将空间分辨率变为1,送入fc层中。若将逐通道卷积和逐点卷积当作不同的层,那么MobileNet一共有28层。

网络的参数更少并不足以认为网络更高效。确保计算操作可以被高效执行是十分重要的。比如,非结构化的稀疏矩阵操作实际上没有比密集矩阵操作更快,除非稀疏程度非常高。我们的模型结构将几乎所有的计算量放在密集的1 * 1卷积上。这就可以使用高度优化的通用矩阵乘法函数(GEMM)进行计算。**通常卷积通过GEMM计算,但需要在内存中进行初始排序(im2col)来将它映射到GEMM上。在caffe上,1 * 1的卷积不需要这个重排序的过程,可以直接使用GEMM进行计算。**如表2所示,MobileNet的95%计算是在1 * 1卷积上,1 * 1卷积有着75%的参数。几乎所有的额外参数在fc层。

在TensorFlow上,我们使用具有与Inception v3类似的具有异步梯度下降的RMSprop进行训练。然而,与训练大模型相反,我们使用很少的正则化和数据增强,因为小的模型不太可能过拟合。当训练MobileNets时候,我们没有使用side heads或label smoothing,并且进一步减少了图像数量(通过限制crop的尺寸)。另外,我们发现在逐通道卷积中不怎么使用权值衰减效果更好,因为它们的参数太少了。对于ImageNet,所有模型都使用相同的训练参数进行训练,无论模型的尺寸。

3.3 Width Multiplier: Thinner Models

尽管基础的MobileNet结构已经很小很快了,但是许多时候针对某些特殊应用,可能需要网络更小更快。为了构建出这些更小、计算量也更小的网络,我们引入了一个非常简单的参数α,叫做宽度乘数。宽度乘数α的作用是将网络的每一层均匀变薄。给定某一层和宽度乘数α,输入通道数M变为αM,输出通道数N变为αN。

这样,深度可分离卷积的计算花费为:

**α通常取1、0.75、0.5、0.25。α=1的时候是MobileNet基础网络。宽度乘数可以减少计算消耗和参数量,大致上减小到原来的α ^ 2。**宽度乘数可以应用到任意一个模型结构上来定义一个新的更小的模型,定义一个新的更小模型后要从头开始训练。

3.4 Resolution Multiplier: Reduced Representation

第二个用来减少计算量的超参数是分辨率乘数ρ,我们将这个乘数应用到包括输入在内的每一个中间层上。实际上,我们通过设置输入的分辨率来隐式的设置这个乘数。

使用宽度乘数和分辨率乘数之后,我们的深度可分离卷积的计算花费为:

ρ在0-1之间,我们通常隐式设置网络的输入分辨率为224、192、160、128。ρ=1时为基础的MobileNet。这个参数ρ也将计算花费大致减少了ρ ^ 2倍。

作为例子,我们可以看MobileNet中的一层,观察这两个参数是如何降低计算花费和参数量的。表3展示了某一层的计算量和参数量的变化。

第一行表示标准卷积时的计算量和参数量,输入的特征图为14 * 14 * 512,卷积核K为3 * 3 * 512 * 512。下一部分的实验中我们将具体探索资源使用和准确率之间的平衡。

4. Experiments

在这一部分,我们首先研究逐通道卷积的影响以及选择减小网络宽度而不是深度对网络进行缩小的效果。然后我们探究基于两个超参数来减小网络的平衡,并与许多流行的模型进行比较。然后我们将MobileNets应用到多个应用中。

4.1 Model Choices

首先我们展示使用深度可分离卷积的MobileNet和以标准卷积构建的网络的结果对比。表4中,我们可以看到,使用深度可分离的卷积相比完全卷积,在ImageNet上只降低了1%准确率,但是减少了大量的计算和参数。

下面我们比较使用了宽度乘数的更细的模型和使用更少层的更浅的模型。为了使网络更浅,表1中的14 * 14 * 512的深度可分离卷积移除了。表5展示出,在计算量和参数量大致相似的情况下,使网络更细比让网络更浅的准确率高3%。

4.2 Model Shrinking Hyperparameters

表6展示了使用宽度乘数α缩减模型尺寸之后,准确率、计算量和尺寸之间的平衡。在α=0.25之前,准确率平滑下降,0.25的宽度乘数太小了。

表7展示了不同分辨率乘数下的准确率、计算量和尺寸之间的平衡,通过减小输入图像的分辨率来完成。可以看到,随着尺寸的下降,准确率平滑下降。

图4展示了ImageNet准确率和计算量之间的平衡,我们使用了16个模型,其中α分别为1、0.75、0.5、0.25,分辨率分别为224、192、160、128。在α很小的时候,结果成对数增长。

图5展示了上面16个模型的ImageNet准确率和参数量之间的关系。

表8将完全的MobileNet与GoogleNet和VGG16进行了对比。MobileNet与VGG16的准确率差不多,但是尺寸比它小32倍,计算量少27倍、它比GooleNet更准确,同时更小,计算量少2.5倍。

表9使用宽度乘数α=0.5,输入分辨率160的MobileNet与其他网络进行比较。它比AlexNet准确率高4%,模型比它小45倍,计算量少9.5倍。它也比Squeezenet准确率高4%,少22倍的计算量。

4.3 Fine Grained Recognition

我们训练MobileNet用于斯坦福狗训练集上进行细粒度识别。我们扩展了数据集,使用nosiy web data来预训练模型,然后再标准数据集上进行微调。结果如表10所示,MobileNet几乎可以达到SOTA,且极大减少了计算量和尺寸。

4.4 Large Scale Geolocalizaton

PlaNet的任务是确定照片是在哪里拍的,把这个任务当作一个分类问题。该方法将地球划分为用作目标类别的地理单元格然后在数百万张地理标记好的图片上训练CNN,PlaNet已经成功定位许多图像,超过了Im2GPS。

我们使用MobileNet结构重新训练了PlaNet。原来的PlaNet基于Inception v3结构,有着52million的参数和5.74billion的计算。MobileNet的模型只有13million参数(body有3million,最后一层有10million)和0.25Million计算。如表11所示,相比之下MobileNet版本的准确率只下降了一点,然而模型大大压缩了,而且它也超过了Im2GPS。

4.5 Face Attributes

MobileNet的另一个应用是将有着未知的,复杂训练流程的大型系统进行压缩。在人脸属性分类任务中,我们演示了MobileNet和distillation之间的协同关系,通过深度网络的知识迁移。我们试图将这个人脸属性分类器(有着75million参数和1600million计算)进行压缩。

我们使用MobileNet结构对这个分类器进行distill。这个distillation的过程是训练分类器来模拟较大模型的输出,而不是GT的输出。我们使用更小的MobileNet结构来模拟这个大的分类器,且不需要正则化。表12中可以明显看出,我们取得了取原来相当的mAP,但是只使用了原来1%的计算量。

4.6 Object Detection

MobileNet可以在现代目标检测系统中用作基础网络。我们在COCO数据集上报告了基于MobileNet训练的网络结构,并且赢得了2016COCO竞赛。表13中,MobileNet与VGG和Inception v2使用了Faster R-CNN和SSD框架进行了对比。在我们实验中,SSD使用300的输入分辨率,Faster R-CNN使用300和600输入分辨率。Faster R-CNN每张图评估300个RPN proposal。模型在COCO train+val上训练,在minival上评价。对于这两种框架,MobileNet都取得了相当的表现,而使用了更少的计算量和模型尺寸。

4.7 Face Embeddings

FaceNet模型是一种SOTA人脸识别模型。它基于triplet loss来构建face embeddings。**为了构建一个移动端的FaceNet模型,我们使用distillation来训练,训练时最小化MobileNet和FaceNet在训练数据上输出的平方差。**表14展示了结果。

5. Conclusion

我们提出了一种基于深度可分离卷积构建的新模型,叫做MobileNet。我们探究了一些设计方法,来使模型取得最高效率。然后,我们验证了如何使用宽度乘数和分辨率乘数构建更小更快的MobileNet来达到准确率和速度之间的平衡。然后我们将不同的MobileNet与流行的网络进行对比,验证了网络的尺寸、速度和准确率的结果。最后,我们将MobileNet应用到多个任务上,来验证它的高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值