GhostNet(CVPR2020)

参考:https://www.wanglichun.tech/2020/03/08/ghostnet/

论文链接:https://arxiv.org/abs/1911.11907

作者解读:https://zhuanlan.zhihu.com/p/109325275

开源代码:pytorch :https://github.com/iamhankai/ghostnet.pytorch/blob/master/ghost_net.py


       本篇论文是发表于CVPR2020的一篇轻量级网络的论文,作者是华为诺亚方舟实验室,文章的总体思路比较清晰,为了减少网络计算量,作者将传统的卷积分成两步进行,首先利用较少的计算量通过传统的卷积生成channel较小的特征图,然后在此特征图的基础上,通过cheap operation(depthwise conv)再进一步利用较少的计算量,生成新的特征图,最后将两组特征图拼接到一起,得到最终的output,最终实验效果还不错,相同计算量的情况下比MobileNet- V3的效果还要更好一些。


虽然说mobileNet或者是shuffleNet提出了使用depthwise或者是shuffle等操作,但是引入的1x1卷积依然会产生一定的计算量

为什么1x1依然会产生较大的计算量?看卷积计算量的计算公式n∗h∗w∗c∗k∗k,可以发现,由于c和n都是比较大的,所以会导致这个计算量也是比较大的,但是作者在分析输出的特征图的时候发现,其实有些特征图是比较相似的,如下所示,作者认为可以通过简单的变换得到。

基于此,作者得到启发,是不是每张图都需要用这么大的计算量去得到?是否可以通过cheap transformation得到这些相似的特征图?

于是乎,就诞生了GhostNet。Ghost就是说相似的特征图,犹如另一个的幽灵,可以通过简单的线性变换得到。

1.Ghost模块

对于某个特征层,只用卷积操作生成部分真实的特征层(真实特征层),剩余的特征层(幻象特征层)通过对真实特征层进行线性操作获得,然后将真实特征层与幻象特征层拼接到一起组成完整的特征层。

2. 复杂度分析

假设我们输入特征图的尺寸是h*w*c,输出特征图的尺寸是h'*w'*n,卷积核大小为k*k

在cheap operation变换中,我们假设特征图的channel是m,变换的数量是s,最终得到的新的特征图的数量是n,那么我们可以得到等式:

n=m∗s

由于Ghost的变换过程中最后存在一个恒等变换(Identity),所以实际有效的变换数量是s-1,所以上式可以得到如下公式:

m∗(s−1)=n/s∗(s−1)

所以我们便可以计算得到如下结果:

 Ghost模块具有两个超参数

① s:用于生成 m=n/s 个内在特征图,

② 以及用于计算幻影特征图的线性运算的  d*d(即深度卷积核的大小)。

 实验得s=2;d=3

 深度可分卷积vs幻象模块
深度可分卷积用深度卷积处理每个特征通道上的空间信息,然后用点卷积进行通道间的特征融合。而幻象模块用正常卷积生成部分真实特征层,然后由真实特征层线性变换得到幻象特征层,最终由真实特征层和幻象特征层组成完整特征层

3.GhostNet bottleneck

下图是Ghost bottleneck结构图,很类似resnet结构,不同的是channel是先升维再降维。

 

Ghost Bottleneck:利用Ghost模块的优势,作者介绍了专门为小型CNN设计的Ghost bottleneck(G-bneck)。如图3所示,Ghost bottleneck似乎类似于ResNet中的基本残差块(Basic Residual Block),其中集成了多个卷积层和shortcut。Ghost bottleneck主要由两个堆叠的Ghost模块组成。第一个Ghost模块用作扩展层,增加了通道数。这里将输出通道数与输入通道数之比称为expansion ratio。第二个Ghost模块减少通道数,以与shortcut路径匹配。然后,使用shortcut连接这两个Ghost模块的输入和输出。这里借鉴了MobileNetV2,第二个Ghost模块之后不使用ReLU,其他层在每层之后都应用了批量归一化(BN)和ReLU非线性激活。上述Ghost bottleneck适用于stride= 1,对于stride = 2的情况,shortcut路径由下采样层和stride = 2的深度卷积(Depthwise Convolution)来实现。出于效率考虑,Ghost模块中的初始卷积是点卷积(Pointwise Convolution)。

Difference from existing methods

  • 在MobileNet等网络中,基本都会使用1x1的卷积,而在GhostNet中,可以使用任何尺寸的卷积。
  • 在MobileNet中,使用了pointwise+depthwise,但是在GhostNet中,可以使用正常的卷积。
  • Ghost使用了更多的线性变换。

4.GhostNet:

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

 

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2020年的计算机视觉与模式识别国际会议(CVPR)中,小样本学习成为了一个热门话题。在CVPR 2020中,许多重要的研究都集中于小样本学习解决方案。 小样本学习的意义在于模型如何从很少的数据点中学习。在现实世界中,我们面临的很多问题都是小样本问题,例如医学影像分析,金融风险评估,自然语言处理等等。采用小样本学习的方法为这些问题提供了有效的解决方案。 在2020年的CVPR中,研究者们提出了许多小样本学习算法和模型。其中最重要的是元学习。元学习在小样本学习中非常重要。元学习的基本思想是通过迁移学习,让模型从不同数据集中进行学习并进行知识迁移学习。在元学习中,一个模型会从一个任务中学习并推广到其他任务中。 另一种常见的小样本学习方法是采用生成式对抗网络(GANs)进行特征提取和图像生成。研究者们使用GANs来生成新的图片样本,从而增加数据样本的数量。这种方法在小样本学习中非常有用,因为GANs可以生成无限数量的样本集。 总之,小样本学习在计算机视觉和模式识别领域中变得越来越重要。在CVPR 2020中,我们看到了许多新方法和技术的出现,它们为解决小样本学习问题提供了前所未有的解决方案。我们相信,随着更多的研究和技术的进步,小样本学习将成为计算机视觉和模式识别的重要工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值