Ghost Net: 如何从轻量的计算中提取更多的特征?

Ghost Net: 如何从轻量的计算中提取更多的特征?

GhostNet: More Features from Cheap Operations_arXiv:1911.11907v1 [cs.CV] 27 Nov 2019(本人自译,转载译本需经许可)

Abstract:

​ 由于有限的内存和计算资源,在嵌入式设备上部署卷积神经网络(CNN)十分困难。 特征图中的冗余是那些成功的CNN的重要特征,但很少在神经体系结构设计中进行研究。 本文提出了一种新颖的Ghost模块,可以通过廉价的操作生成更多的功能图。 基于一组固有特征图,我们以较小的代价应用了一系列线性变换来生成许多可以完全揭示固有特征信息的ghost特征图。 所提出的Ghost模块可以作为即插即用组件来升级现有的卷积神经网络。 Ghost瓶颈旨在堆叠Ghost模块,然后可以轻松建立轻量级的GhostNet。 在基准上进行的实验表明,提出的Ghost模块是基准模型中卷积层的令人印象深刻的替代方案,并且与ImageNet ILSVRC-2012相比,我们的GhostNet可以实现比MobileNetV3更高的识别性能(例如75.7%top-1精度) 分类数据集。 可以从https://github.com/iamhankai/ghostnet获得代码。

1.Introduction:

深度卷积神经网络在各种计算机视觉任务(例如图像识别,对象检测和语义分割)上均表现出出色的性能。 传统的CNN通常需要大量的参数和浮点运算(FLOP)才能获得令人满意的精度,例如 ResNet-50具有大约25.6M参数,需要4.1B FLOP来处理尺寸为224×224的图像。因此,深度神经网络设计的最新趋势是探索可移动设备且性能可接受的便携式高效网络体系结构 (例如,智能手机和自动驾驶汽车)。

多年来,已经提出了一系列方法来研究紧凑的深度神经网络,例如网络修剪,低位量化,知识提炼等。Han et al提出修剪神经网络中不重要的权重, 利用“ 1范数正则化”来修剪有效CNN的过滤器。 量化权重和激活到1位数据,以实现大的压缩和加速比。 知识提炼,用于将知识从较大的模型转移到较小的模型。 但是,这些方法的性能通常受到作为其基线的预训练深度神经网络的上限。

除此之外,有效的神经体系结构设计在建立具有较少参数和计算量的高效深度网络方面具有很高的潜力,并且最近取得了相当大的成功。 这种方法还可以为自动搜索方法提供新的搜索单元。 例如,MobileNet利用深度卷积和点卷积来构造一个单元,用较大的滤波器近似原始卷积层,并获得可比的性能。 ShuffleNet进一步探索了通道随机操作,以增强轻量级模型的性能。

在这里插入图片描述

​ 训练有素的深度神经网络的特征图中的大量信息,甚至是冗余信息,通常可以保证对输入数据的全面了解。 例如,图1展示了ResNet-50生成的输入图像的一些特征图,并且存在许多相似的特征图对,例如彼此重影。 特征图中的冗余可能是成功的深度神经网络的重要特征。 我们倾向于避免使用多余的特征图,而是以一种经济高效的方式来使用它们。

在本文中,我们介绍了一种新颖的Ghost模块,可通过使用较少的参数来生成更多功能。 具体来说,深度神经网络中的普通卷积层将分为两部分。 第一部分涉及普通卷积,但是将严格控制它们的总数。给定第一部分的固有特征图,然后将一系列简单的线性运算应用于生成更多特征图。 与普通卷积神经网络相比,在不更改输出特征图大小的情况下,该Ghost模块中所需的参数总数和计算复杂度均已降低。 基于Ghost模块,我们建立了一种有效的神经体系结构,即GhostNet。 我们首先在基准神经体系结构中替换原始的卷积层,以证明Ghost模块的有效性,然后在多个基准视觉数据集上验证GhostNets的优越性。 实验结果表明,提出的Ghost模块能够在保持相似识别性能的同时降低通用卷积层的计算成本,并且GhostNets在各种任务上可以超越MobileNetV3等先进的高效深度模型,能在移动设备上快速推断。

本文的其余部分安排如下:第2部分简要总结了该领域的相关工作,然后在第3部分中提出了Ghost模块和GhostNet,在第4部分中进行了实验和分析,最后在第5部分中给出了结论。

2.Related Work:

在这里,我们从两个部分重新审视减轻神经网络的现有方法:模型压缩和紧凑模型设计。

2.1Model Compression:

对于给定的神经网络,模型压缩旨在减少计算,能源和存储成本。 修剪连接切断了神经元之间不重要的连接。 通道修剪的目标还在于删除无用的通道,以便在实践中更轻松地进行加速。 模型量化表示神经网络中的权重或激活,具有用于压缩和计算加速的离散值。具体来说,只有1位值的二值化方法可以通过有效的二进制运算极大地加速模型。 张量分解通过利用权重的冗余和低秩属性来减少参数或计算量。 知识提炼利用较大的模型来教较小的模型,从而提高了较小模型的性能。这些方法的性能通常取决于给定的预训练模型。 基本操作和体系结构的改进将使它们走得更远。

2.2Compact Model Design:

随着在嵌入式设备上部署神经网络的需求,近年来提出了一系列紧凑模型。SqueezeNet使用瓶颈方法以少50倍的参数来达到AlexNet级别的精度。 Xception利用深度卷积运算来更有效地使用模型参数。MobileNets是一系列基于深度可分离卷积的轻型深度神经网络。 MobileNetV2提出了反向残差块,而MobileNetV3进一步利用AutoML技术以更少的FLOP实现了更好的性能。 ShuffleNet引入了信道混洗操作,以改善信道组之间的信息流交换。 ShuffleNetV2进一步考虑了目标硬件在紧凑模型设计中的实际速度。尽管这些模型仅用很少的FLOP即可获得出色的性能,但从未充分利用特征图之间的相关性和冗余性。

3.Approach:

在本节中,我们将首先介绍Ghost模块,以利用一些小型过滤器从原始卷积层生成更多特征图,然后开发具有高效架构和高性能的新GhostNet。
在这里插入图片描述

3.1Ghost Module for More Features:

深度卷积神经网络通常由大量卷积组成,从而导致大量的计算成本。 尽管最近的工作,例如MobileNet和ShuffleNet已经引入了深度卷积或混洗操作,以使用较小的卷积滤波器(浮点数运算)来构建有效的CNN,但其余的1×1卷积层仍会占用大量内存 和FLOP。考虑到如图1所示,主流CNN计算出的中间特征图中存在广泛的冗余,我们建议减少所需资源,即: 用于生成它们的卷积滤波器。 实际上,给定输入数据X∈R^(c×h×w),其中c是输入通道的数量f,h和w分别是输入数据的高度和宽度,用于生成n的任意卷积层的操作 特征图可以表述为:

在这里插入图片描述

其中∗是卷积运算,b是偏置项,Y∈R(h’×w’×n)具有n个通道的输出特征图,f∈R(c×k×k×n)是该层中的卷积滤波器 。 另外,h’和w’分别是输出数据的高度和宽度,k×k分别是卷积滤波器f的核尺寸。 在此卷积过程中,所需的FLOP数量可以计算为n·h’·w’·c·k·k,由于通常是成千上万个的滤波器的数量n和通道数量c,因此所需的FLOP数量也非常大。

根据等式1。 如图1所示,要优化的参数数量(以f和b表示)由输入和输出特征图的尺寸明确确定。 如图1所示,卷积层的输出特征图通常包含很多冗余,其中一些可能彼此相似。 我们指出,没有必要使用大量的FLOP和参数一一生成这些冗余特征图。 假设输出要素图是少数具有一些廉价转换的内部要素图的“ghosts”。 这些固有特征图通常具有较小的大小,并由普通的卷积滤波器生成。 具体来说,使用一次卷积生成m个固有特征图Y’∈R(h’×w’×m)

在这里插入图片描述

其中f’∈R^( c×k×k×m)是使用的滤波器,m≤n,并且为简化操作省略了偏置项。 诸如filter size,stride,padding之类的超参数与普通卷积(等式1)中的相同,以保持空间大小(即:输出要素图的h’和w’)保持一致。 为了进一步获得所需的n个特征图,我们建议根据以下函数对Y’中的每个固有特征应用一系列地轻量的线性运算,以生成s个ghost特征:

在这里插入图片描述

其中y’i是Y’中的第i个固有特征图,上述函数中的Φi,j是用于生成第j个ghost特征图yi,j的第j个(最后一个除外)线性运算,即:例如,y’i可以拥有一个或多个ghost特征图在这里插入图片描述。最后一个Φi,s是用于保留固有特征图的Identity映射,如图2(b)所示。 利用等式3,我们可以得到n = m·s个特征图Y = [y11,y12,…,yms]作为Ghost模块的输出数据
注意,线性运算Φ在每个通道上进行运算,其计算成本比普通卷积小得多。 实际上,Ghost模块中可能有几种不同的线性运算,例如 3×3和5×5线性核,将在Experiments部分进行分析。

Difference from Existing Methods:

提出的Ghost模块与现有的有效卷积方案有很大的不同:

  • 与现有方法中的单位广泛使用1×1点向卷积相比,Ghost模块中的初级卷积可以具有自定义的内核大小。
  • 现有的方法采用点卷积来处理跨通道的特征,然后采用深度卷积来处理空间信息。相比之下,Ghost模块采用普通卷积来首先生成一些内部特征图,然后利用轻量的线性运算来增强特征并且增加通道。
  • 在以前的有效架构中,处理每个特征图的操作仅限于深度卷积或移位操作,而Ghost模块中的线性操作能够具有很大的多样性。
  • 此外,Identity映射与Ghost模块中的线性变换并行进行,以保留固有特征图。
Analysis on Complexities:

由于我们可以利用等式3中提出的Ghost模块生成与普通卷积层相同数量的特征映射,因此我们可以很容易地将Ghost模块集成到现有设计良好的神经结构中,以降低计算成本。在此,我们进一步分析了使用Ghost模块在内存使用和理论速度方面的好处。例如,有1个Identity映射和m·(s-1)=n/s·(s-1)线性运算,每个线性运算的平均核大小等于d×d。理想情况下,n·(s-1)线性运算可以有不同的形状和参数,但考虑到CPU或GPU卡的实用性,在线推理将受到阻碍。因此,我们建议在一个Ghost模块中采用相同大小的线性操作(例如3×3或5×5),以实现高效的实现。使用Ghost模块升级普通卷积的理论加速比为:

在这里插入图片描述

3.2Building Efficient CNNs:

Ghost Bottlenecks:

利用Ghost模块的优势,我们介绍了专门为小型CNN设计的Ghost瓶颈(G-bneck)。 如图3所示,Ghost瓶颈似乎类似于ResNet中的基本残差块,其中集成了多个卷积层和捷径。提出的ghost 瓶颈主要由两个堆叠的Ghost模块组成。 第一个Ghost模块用作扩展层,增加了通道数。 我们将输出通道数与输入通道数之比称为扩展比。 第二个Ghost模块减少了与捷径路径匹配的通道数。 然后,将捷径连接到这两个Ghost模块的输入和输出之间。 批处理归一化(BN)和ReLU非线性在每层之后应用,除了ReLU在第二个Ghost模块之后不使用(如MobileNetV2所建议的)外。上述Ghost瓶颈适用于Stride=1。

在这里插入图片描述


至于表1. GhostNet的总体架构。 G瓶颈表示Ghost瓶颈。 #exp表示扩展大小。 #out表示输出通道数。#SE表示是否使用SE模块。

在这里插入图片描述

在stride = 2的情况下,捷径路径由下采样层实现,并且在两个Ghost模块之间插入stride = 2的深度卷积。 实际上,出于效率考虑,Ghost模块中的主要卷积是逐点卷积。

GhostNet:

我们在ghost瓶颈的基础上,提出了GhostNet,如表7所示。由于其优越性,我们遵循MobileNetV3的基本体系结构,并用我们的Ghost瓶颈替代了MobileNetV3中的瓶颈块。 GhostNet主要由一堆Ghost瓶颈组成,其中以Ghost模块为构建基块。 第一层是具有16个过滤器的标准卷积层,然后是一系列Ghost瓶颈,通道逐渐增加。 这些Ghost瓶颈根据其输入要素图的大小分为不同的阶段。 所有Ghost瓶颈都以stride =1进行应用,除了每个阶段的最后一个是stride = 2。 最后,利用全局平均池和卷积层将特征图转换为1280维特征向量以进行最终分类。 如表7所示,SE模块也适用于某些ghost瓶颈中的残差层。与MobileNetV3相比,由于延迟长,我们不使用hard-swish非线性函数。 尽管进一步的超参数调整或基于自动架构搜索的ghost模块将进一步提高性能,但所提出的架构提供了基本的参考设计。

在这里插入图片描述

Width Multiplier:

尽管表7中给定的体系结构已经可以提供低延迟和保证的准确性,但是在某些情况下,我们可能需要在特定任务上使用更小更快的模型或更高的准确性。 为了根据需要定制网络,我们可以简单地在每一层均匀地将通道数乘以因子α。该因数α被称为宽度倍增器,因为它可以改变整个网络的宽度。 宽度乘数可以大致由α^2二次方地控制模型大小和计算成本。 通常,较小的α导致较低的延迟和较低的性能,反之亦然。

4.Experiments:

在本节中,我们首先用提出的Ghost模块替换原始的卷积层,以验证其有效性。 然后,将在图像分类和对象检测基准上进一步测试使用新模块构建的GhostNet架构。

Datasets and Settings:

为了验证所提出的Ghost模块和GhostNet架构的有效性,我们在几个基准视觉数据集上进行了实验,包括CIFAR-10,ImageNet ILSVRC 2012数据集和MS COCO对象检测基准。利用CIFAR-10数据集分析该方法的属性,该方法由10类60,000张32×32彩色图像,50,000张训练图像和10,000张测试图像组成。 采用包括随机裁剪和镜像的常见数据增强方案。ImageNet是一个大型图像数据集,包含超过1000个类别的120万个训练图像和50K个验证图像。在训练期间应用包括随机裁剪和翻转的常见数据预处理策略。 我们还对MS COCO数据集进行了目标检测实验。 按照惯例,我们在COCO trainval35k分割(80K训练图像和来自验证集的图像的随机35K子集的结合)上训练模型,并在5K图像的最小分割上进行评估。

4.1. Efficiency of Ghost Module :

4.1.1Toy Experiments:

我们在图1中显示了一个图,以指出存在一些相似的特征图对,可以使用一些有效的线性运算来有效地生成这些特征图对。在这里,我们首先进行一个玩具实验,以观察原始特征图和生成的ghost特征图之间的重建误差。 以图1中的三对(即红色,绿色和蓝色)为例,使用ResNet-50的第一个残差块提取特征。 将左侧的特征作为输入,将另一个作为输出,我们利用一个小的深度卷积滤波器来学习映射,即它们之间的线性运算Φ。 卷积滤波器d的大小在1到7的范围内,每对具有不同d的MSE(均方误差)值如表2所示。

在这里插入图片描述

在表2中可以发现,所有MSE值都非常小,这表明在深度神经网络中的特征图之间存在很强的相关性,并且这些冗余特征图可以从多个固有特征图生成。除了上述实验中使用的卷积之外,我们还可以探索仿射变换和小波变换等其他低成本线性运算来构造Ghost模块
然而,卷积是当前硬件已经很好地支持的一种有效操作,它可以覆盖许多广泛使用的线性操作,例如平滑,模糊,运动等。此外,尽管我们还可以了解每个滤波器的大小。 如果采用线性运算Φ,则不规则模块会降低计算单元(例如CPU和GPU)的效率。 因此,我们建议让Ghost模块中的d为固定值,并利用深度卷积实现等式。在以下实验中构建高效的深度神经网络。

4.1.2 CIFAR-10:

我们在CIFAR-10数据集上,基于两种流行的网络架构(即VGG-16和ResNet-56)评估了建议的Ghost模块。 由于VGG-16最初是为ImageNet设计的,因此我们使用其变体,该变体在文献中广泛用于进行以下实验。 这两个模型中的所有卷积层都被提议的Ghost模块替换,新模型分别表示为Ghost-VGG-16和Ghost-ResNet-56。我们参考了【Deep residual learning for image recognition. In CVPR, pages770–778, 2016】中网络模型的参数配置,其中包括momentum,learning rate等。我们首先分析Ghost模块中两个超参数s和d的影响,然后将Ghost模型与状态最先进的方法进行比对。

Analysis on Hyper-parameters:

如等式中所述。 如等式3所示,为有效的深度神经网络建议的Ghost模块具有两个超参数,即s用于生成m = n / s固有特征图,以及线性运算的核大小d×d(即深度卷积滤波器的大小)用于计算ghost特征图。以下测试了这两个参数对VGG-16架构的影响。

首先,我们设定s = 2并在{1、3、5、7}中调整d,并在表3中列出CIFAR-10验证集的结果。我们可以看到,提出的d = 3的Ghost模块的性能最优的。 这是因为大小为1×1的内核无法在特征图上引入空间信息,而较大的内核(例如d = 5或d = 7)会导致过度拟合和更多计算。因此,在以下实验中我们采用d = 3来提高有效性和效率。

在这里插入图片描述

Comparison with State-of-the-arts:

我们将GhostNet与VGG-16和ResNet-56架构上的几个代表性的最新模型进行了比较。 比较的方法包括不同类型的模型压缩方法,l1pruning,SBP,channel pruning(CP)和AMC。 对于VGG-16,我们的模型可以获得比原始模型高2倍加速度的精度,这表明VGG模型具有相当大的冗余度。 我们的Ghost-VGG-16(s = 2)以最高的性能(93.7%)优于竞争对手,并且FLOP明显减少。 对于已经比VGG-16小得多的ResNet-56,我们的模型可以以2倍的加速率达到与基线相当的精度。 我们还可以看到,其他具有相似或更大计算成本的最新模型所获得的准确性低于我们的模型。(参考表5)

在这里插入图片描述

Visualization of Feature Maps:

我们还可视化了ghost模块的特征图,如图4所示。尽管生成的特征图来自主要特征图,但它们之间确实存在显着差异,这意味着生成的特征足够灵活,可以满足特定任务的需求。

在这里插入图片描述

4.1.3 Large Models on ImageNet:

​ 接下来,我们将Ghost模块嵌入标准的ResNet50中,并在大型ImageNet数据集上进行实验。 ResNet-50具有约25.6M参数和4.1B FLOP,top-5误差为7.8%。 我们使用Ghost模块替换ResNet50中的所有卷积层以获得紧凑的模型,并将结果与几种最先进的方法进行比较,如表6所示。为了公平比较,优化设置,学习率, 和批次大小等训练设置完全相同。

在这里插入图片描述

4.2. GhostNet on Visual Benchmarks:

在证明了所提出的Ghost模块可有效生成特征图的优越性之后,我们随后分别使用Ghost瓶颈分别在图像分类和对象检测任务上评估了设计良好的GhostNet体系结构,如表7所示。

4.2.1 ImageNet Classification:

为了验证所提出的GhostNet的优越性,我们对ImageNet分类任务进行了实验。 我们遵循【 Learning transferable architectures for scalable image recognition. In CVPR, pages 8697–8710, 2018.】中使用的大多数训练设置,除了在8个GPU上批量大小为1,024时,初始学习率设置为0.4。 在ImageNet验证集上报告的所有结果均具有单季作物top-1的性能。 对于GhostNet,为简单起见,我们在一次卷积中将内核大小设置为k = 1,在所有Ghost模块中设置s = 2和d = 3。

选择了几种现代小型网络架构作为竞争者,包括MobileNet系列,ShuffleNet系列,IGCV3,ProxylessNAS,FBNet,MnasNet等。 结果总结在表7中。这些模型分为四个级别的计算复杂性,通常用于移动应用程序,即 〜50,〜150和200-300 MFLOP。 从结果中我们可以看到,通常较大的FLOP在这些小型网络中会导致更高的准确性,这表明了它们的有效性。 我们的GhostNet在各种计算复杂度级别上始终优于其他竞争对手,因为GhostNet在利用计算资源生成特征图方面更加高效。

在这里插入图片描述

Actual Inference Speed:

由于建议的GhostNet是为移动应用程序设计的,因此我们使用TFLite工具进一步测量了GhostNet在基于ARM的手机上的实际推理速度。 按照【 Mobilenetv2: Inverted residuals and linear bottlenecks. In CVPR, pages 4510–4520,2018.】中的通用设置,我们使用批处理大小为1的单线程模式。从图7的结果中可以看出,在相同的延迟下,GhostNet的top-1精度比MobileNetV2高出约0.5%, 和GhostNet需要更少的运行时来达到类似的性能。 例如,精度为75.0%的GhostNet仅具有40毫秒的延迟,而精度类似的MobileNetV3大约需要45毫秒来处理一张图像。 总体而言,我们的模型通常优于著名的最新模型,即MobileNet系列,ProxylessNAS,FBNet和MnasNet。

在这里插入图片描述

4.2.2 Object Detection:

为了进一步评估GhostNet的泛化能力,我们在MS COCO数据集上进行了对象检测实验。 我们使用trainval 35k拆分作为训练数据,并按照【Focal loss for dense object detection. In ´ ICCV,2017.】以最小拆分的平均平均精度(mAP)报告结果。 具有功能金字塔网络(FPN)的两阶段Faster R-CNN和一阶段的RetinaNet都被用作我们的框架,而GhostNet充当了骨干特征提取器的替代品。 我们使用SGD从ImageNet预训练权重中使用SGD训练了12个时期,并使用【Focal loss for dense object detection. In ´ ICCV,2017.】中建议的超参数。 将输入图像的大小调整为800的短边和不超过1333的长边。表8显示了检测结果,其中FLOP是通常使用224×224图像计算的。 通过显着降低的计算成本,GhostNet可以在一阶段的RetinaNet和两阶段的Faster R-CNN框架上通过MobileNetV2和MobileNetV3实现类似的mAP。

在这里插入图片描述

5.Conclusion:

为了减少最新的深度神经网络的计算成本,本文提出了一种用于构建有效的神经体系结构的新型Ghost模块。 基本的Ghost模块将原始卷积层分为两部分,并使用较少的过滤器来生成多个内在特征图。然后,将进一步应用一定数量的廉价变换操作以有效地生成ghost特征图。 在基准模型和数据集上进行的实验表明,该方法是一种即插即用模块,用于将原始模型转换为紧凑模型,同时保持可比的性能。 此外,在效率和准确性方面,使用提出的新模块构建的GhostNet均优于最新的便携式神经体系结构。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Super__Tiger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值