CVPR2020 -- GhostNet: More Features from Cheap Operations

论文:GhostNet: More Features from Cheap Operations

一、序

又到了CVPR放榜之日,各脉大仙们各显神通,偶然间寻得一妖魅之术,名为幽灵网络。

二、初识

CVPR2020 -- GhostNet: More Features from Cheap Operations_第1张图片
作者通过对ResNet-50的第一个残差块生成的特征图进行可视化,不看不知道,一看吓一跳!又能搞点事情了,嘿嘿。
作者发现这些特征图中有一部分很相似,如图中的扳手标记处,既然很相似,那么大概应该或许能够用线性变换得到吧!

三、详解

  • 常规卷积
    CVPR2020 -- GhostNet: More Features from Cheap Operations_第2张图片
    在这里插入图片描述
    公式(1)中:X为输入,f 代表卷积操作,b为偏置
    X : c×h×w
    f : c×k×k×n
    Y : h×w×n
    FLOPs = h×w×c×k×k×n
    作者认为随着卷积核数目的增加,生成的特征图数目随之增加,计算量会显著增大,那么这就很明确了,要想减小计算量,得从特征图的数目入手。
    另外,作者指出没有必要生成多余的特征图,因为特征图之间存在冗余。

  • 幽灵模型
    CVPR2020 -- GhostNet: More Features from Cheap Operations_第3张图片

既然没必要生成多余的特征图,那么可以先生成m个特征图(intrinsic feature maps);
在这里插入图片描述
X : c×h×w
f : c×k×k×m
Y : h×w×m
FLOPs = h×w×c×k×k×m

然后对这m个特征图进行线性变换,得到n = m×s个特征图;
s :线性操作的方式(例如3×3,5×5卷积,激活函数为linear)
CVPR2020 -- GhostNet: More Features from Cheap Operations_第4张图片
另外,保留原始的m个feature maps(Identity mapping),这一点很重要。

设线性变换的卷积核平均尺寸为d×d,可以计算Ghost Module相比普通模型的加速比例:
CVPR2020 -- GhostNet: More Features from Cheap Operations_第5张图片
可以看到,计算量和参数量都可以压缩 s 倍,即有几种线性变换方式就能压缩几倍。

四、总览

  • Ghost bottleneck
    CVPR2020 -- GhostNet: More Features from Cheap Operations_第6张图片
  • GhostNet
    CVPR2020 -- GhostNet: More Features from Cheap Operations_第7张图片
    对于stride = 2的地方,shortcut采用下采样的方式,并且在两个Ghost module之间插入一个depthwise卷积
  • Experiments on ImageNet dataset
    CVPR2020 -- GhostNet: More Features from Cheap Operations_第8张图片

五、总结

从作者给出的实验结果来看,轻量级网络又要再添一员大将了,而且实现起来也不复杂,抓紧时间实现一下看看效果如何。

你可能感兴趣的:(Paper,Reading)