当前位置:   article > 正文

轻量级网络Ghostnet(GhostConv(幻影卷积)、Ghost BottleNeck)详解

ghostconv

简介

该论文提供了一个全新的Ghost模块,旨在通过廉价操作生成更多的特征图。基于一组原始的特征图,作者应用一系列线性变换,以很小的代价生成许多能从原始特征发掘所需信息的“Ghost”特征图(Ghost feature maps)。该Ghost模块即插即用,通过堆叠Ghost模块得出Ghost bottleneck,进而搭建轻量级神经网络——GhostNet。

亮点

幻影卷积步骤:
先进行1 x 1卷积聚合通道间的信息特征,然后再使用分组卷积,生成新的特征图
为了减少网络计算量,作者将传统的卷积分成两步进行,首先通过传统的卷积生成channel较小的特征图以较少的计算量,然后在得到的特征图的基础上,通过cheap operation(depthwise conv,廉价操作)再进一步减少计算量,生成新的特征图,最后将两组特征图拼接到一起,得到最终的output。
卷积操作是卷积-批归一化BN-非线性激活全套组合,而所谓的线性变换或者廉价操作(cheap operation)均指普通卷积,不含批归一化和非线性激活。

观点提要

在效果较好的CNN模型中,特征图存在冗余是非常重要的,但是很少有人在模型结构设计上考虑特征图冗余问题;
从特征图冗余问题出发,提出一个仅通过少量计算(cheap operations)就能生成大量特征图的结构——Ghost Module;
Ghost Module通过一系列线性操作(a series of linear transformations)生成特征图,其中经过线性操作生成的特征图称为ghost feature maps,而被操作的特征图称为intrinsic feature maps;
Ghost Module的优点:
即插即用:Ghost Module是一个即插即用模块,可以无缝衔接现有的CNN中;
使用Ghost Module组成的Ghost bottlenecks,设计出GhostNet,在ILSVRC-2012上top-1超过Mobilenet-V3,并且参数(params)更少。

特征图冗余

本文作者在观察ResNet50第一个残差块输出的特征图时,发现有许多输出特征很相似,图一中的红、绿、蓝框的特征图,作者认为很相似,基本只要进行简单的线性变换就能得到,而不需要进行复杂的非线性变换得到;作者该对其中的一个特征图可以通过廉价操作(图中用扳手表示)将另一特征图变换而获得,可以认为其中一个特征图是另一个的“Ghost”。因为,本文提出并非所有特征图都要用卷积操作来得到,“Ghost”特征图可以用更廉价的操作来生成。

在这里插入图片描述

Ghost Module

常规卷积:

在这里插入图片描述

Ghost Module:

深度卷积神经网络通常引用由大量卷积组成的卷积神经网络,导致大量的计算成本。尽管最近的工作,例如MobileNet和ShuffleNet引入了深度卷积或混洗操作,以使用较小的卷积核(浮点运算)来构建有效的CNN,其余1*1卷积层仍将占用大量内存和FLOPs。
由于主流CNN计算出的中间特征图中存在大量的冗余,作者提出减少所需的资源,即用于生成它们的卷积核。

步骤

在这里插入图片描述
在这里插入图片描述
假设输入特征图的shape为[28,28,6],首先对输入特征图使用1*1卷积下降通道数,shape变为[28,28,3];再使用3*3深度卷积对每个通道特征图提取特征,shape为[28,28,3],可以看作是经过前一层的一系列线性变换得到的;最后将两次卷积的输出特征图在通道维度上堆叠,shape 变为 [28,28,6];
在这里插入图片描述

Ghost Bottlenecks

利用Ghost模块的优势,作者介绍了专门为小型CNN设计的Ghost bottleneck(G-bneck)。

如图所示,Ghost bottleneck似乎类似于ResNet中的基本残差块(Basic Residual Block),其中集成了多个卷积层和shortcut。

Ghost bottleneck主要由两个堆叠的Ghost模块组成:

第一个Ghost模块用作扩展层,增加了通道数,这里将输出通道数与输入通道数之比称为expansion ratio;

第二个Ghost模块减少通道数,以与shortcut路径匹配,然后,使用shortcut连接这两个Ghost模块的输入和输出。

这里借鉴了MobileNetV2,第二个Ghost模块之后不使用ReLU,因为深度卷积后再加ReLU效果会变差,可能是深度卷积输出太浅了, 应用 ReLU会带来信息丢失,其他层在每层之后都应用了批量归一化(BN)和ReLU非线性激活。

上述Ghost bottleneck适用于stride= 1,

对于stride = 2的情况,shortcut路径由下采样层和stride = 2的深度卷积(Depthwise Convolution)来实现。

出于效率考虑,Ghost模块中的初始卷积是逐点卷积(Pointwise Convolution)。
在这里插入图片描述

GhostNet

基于Ghost bottleneck,作者提出GhostNet,如下表所示:
1.作者遵循MobileNetV3的基本体系结构的优势,然后使用Ghost bottleneck替换MobileNetV3中的bottleneck;
2.GhostNet主要由一堆Ghost bottleneck组成,其中Ghost bottleneck以Ghost模块为构建基础;
第一层是具有16个卷积核的标准卷积层,然后是一系列Ghost bottleneck,通道逐渐增加。这些Ghost bottleneck根据其输入特征图的大小分为不同的阶段;
除了每个阶段的最后一个Ghost bottleneck是stride = 2,其他所有Ghost bottleneck都以stride = 1进行应用;
3.最后,利用全局平均池和卷积层将特征图转换为1280维特征向量以进行最终分类。SE模块也用在了某些Ghost bottleneck中的残留层;
4.与MobileNetV3相比,这里用ReLU换掉了Hard-swish激活函数。尽管进一步的超参数调整或基于自动架构搜索的Ghost模块将进一步提高性能,但下表所提供的架构提供了一个基本设计参考。
在这里插入图片描述

实验结果提炼

1.Ghost模块消融实验:当s=2、d=3的时候,Ghost模块的性能优于更小或更大的Ghost模块。这是因为大小为1的内核无法在特征图上引入空间信息,而较大的内核(例如d=5或d=7)会导致过拟合和更多计算。

2.特征图可视化:生成的特征足够灵活,可以满足特定任务的需求。

3.ImageNet分类数据集:通常较大的FLOPs会在这些小型网络中带来更高的准确性,这表明了它们的有效性。而GhostNet在各种计算复杂度级别上始终优于其他竞争对手,主要是因为GhostNet在利用计算资源生成特征图方面效率更高。

4.硬件推理速度:作者的模型总体上胜过其他最新模型,例如谷歌MobileNet系列,ProxylessNAS,FBNet和MnasNet。

5.COCO目标检测数据集:GhostNet可以在单阶段的RetinaNet和两阶段的Faster R-CNN框架上达到和MobileNetV2和MobileNetV3类似的mAP。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/806783
推荐阅读
相关标签
  

闽ICP备14008679号