轻量化网络GhostNet解读

每一个不曾起舞的日子都是对生命的辜负

 

论文: GhostNet: More Features from Cheap Operations

Github:https://github.com/huawei-noah/ghostnet

 

华为诺亚方舟实验室

cvpr2020

 

论文提出一种基于现有的特征图,通过廉价的操作,生成现有特征图的一个变换,或者伪影ghost的操作。该操作可以实现等同于卷积的效果,却具有更少的参数,更少的计算量。基于这样的方式,组成ghost 模块。通过ghost模块组成GhostNet网络结构。

实验证明,GhostNet具有比 MobileNetV3更高的精度。在ImageNet ILSVRC-

2012 数据集上达到了 75:7% 的分类精度。

ResNet-50的第一个残差模块的输出特征图,图中相同颜色的就代表了冗余的特征。GhostNet的思想,不是暴力的去掉这些冗余的特征,而是对这些冗余的特征,使用廉价的计算方法进行生成。

Instead of avoiding the redundant feature maps, we tend to embrace them, but in a cost-efficient way

 

设计思想

a图表示正常的卷积的处理流程。

b图表示GhostNet的处理流程,这里首先使用卷积生成一部分特征图。然后基于这些特征图,通过廉价的计算单元 Φ生成另外一部分特征图。这里要注意,这另外一部分特征图的通道数可以和输入廉价计算单元之前的特征图通道数不一样。

这里廉价的计算单元,通过group卷积实现。

实现代码,

class GhostModule(nn.Module):
    def __init__(self, inp, oup, kernel_size=1, ratio=2, dw_size=3, stride=1, relu=True):
        super(GhostModule, self).__init__()
        self.oup = oup
        init_channels = math.ceil(oup / ratio)
        new_channels = init_channels*(ratio-1)

        self.primary_conv = nn.Sequential(
            nn.Conv2d(inp, init_channels, kernel_size, stride, kernel_size//2, bias=False),
            nn.BatchNorm2d(init_channels),
            nn.ReLU(inplace=True) if relu else nn.Sequential(),
        )

        self.cheap_operation = nn.Sequential(
            nn.Conv2d(init_channels, new_channels, dw_size, 1, dw_size//2, groups=init_channels, bias=False),
            nn.BatchNorm2d(new_channels),
            nn.ReLU(inplace=True) if relu else nn.Sequential(),
        )

    def forward(self, x):
        x1 = self.primary_conv(x)
        x2 = self.cheap_operation(x1)
        out = torch.cat([x1,x2], dim=1)
        return out[:,:self.oup,:,:]

理论加速比,

理论压缩比,

通过将GhostModule进行堆叠组合就形成了Ghost bottleneck一共有2种形式的bottleneck一种不支持下采样一种支持下采样下采样操作使用深度可分离卷积实现

 

整体网络结构

实验结果

使用GhostModule压缩ResNet-50的效果

硬件加速比效果,

imagenet分类效果,

coco检测效果,

总结

  1. 有点类似crelu的思想,但是和而不同。
  2. 如果从并行的角度理解,一部分做正常卷积,一部分基于正常卷积的结果,做其他变换,然后2个特征进行融合。这么看的话,思想有点意思。如果从串行的角度思考,先做正常卷积,然后再做一个廉价的组卷积,然后做个特征concat,感觉就是残差的简单组合,感觉亮点就不大。
  3. 贡献了一个轻量化的网络结构。

 

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值