GhostNet(More Features from Cheap Operations)

arxiv:https://arxiv.org/pdf/1911.11907arxiv.org
github:https://github.com/iamhankai/ghostnet.pytorch

(在ARM CPU上的表现惊人)(CVPR2020)


目的及意义

文章提出了一种Ghost模块(和depth-wise convolution有点像的),用来降低卷积神经网络的计算成本。
模块可以即插即用,来代替常规的卷积操作。
在保持网络性能的前提下,将原始模型转换为紧凑模型。
具体结构下面介绍。

ghost模块解析
常规的卷积操作

C×H×W大小的特征图需要N个C×K×K的卷积核进行卷积,得到N×H×W的特征图。
C为输入特征图通道数,H为高,W为宽,N为输出特征图的通道数,K为卷积核大小。计算量如下


计算量
Ghost module

C×H×W大小的特征图首先与M个C×K×K的卷积核进行卷积,得到M×H×W的特征图。(M<N,且M*S=N)
之后对M×H×W进行S-1次分组卷积(文章中说是对每个通道均进行linear opera-
tion操作,和大小为d×d,d可以为1,3,5...)得到S-1个M×H×W大小的特征图,最后S个叠加到一起得到N×H×W的特征图。


计算量

两种方法计算量对比(相较于常规卷积操作,ghost module大约可以缩小S倍的计算量)
例如c=256,512或者其他,s=2,3后者其他,s<<c


这样我们可以看出ghost模块可在缩小S倍计算量的前提下代替传统卷积操作。

为什么可以怎么做呢?

论文中指出,复杂的卷积神经网络中,存在着很多相似的通道(下图所示),相似的通道在CNN中是存在一定道理的,虽然网络裁剪的过程中往往更倾向于删减掉这些通道。那ghost module中linear opera-
tion即是在减少计算量的前提下来增加这些相似通道。(也就是,既然人家网络存在着相似层,那我们也就不去想着怎么减少它了,而是找一种更高效的操作去直接生成它。我猜应该是这样子的。)


为了方便使用,提出两种结构

stride=1也没啥好说的
stride=2中用到了mobilenet中的DWConv(stride=2)来进行下采样,并且对输入特征图进行downsampling layer来保证Add操作时特征图的H×W一致。

参数D和S的尝试

有效减少计算量的同时精度得到了很好的保留


对比效果

相较于mobilenet v3,相似计算量时ghost net在准确度上也有一定的提升



结论

Ghost可降低CNN卷积操作的计算成本。先卷积生成一定数量的特征图,再进一步应用一定数量的廉价变换操作,有效地生成ghost特征图。该方法是一个即插即用的模块,并通过实验证明在保持可比性能的前提下,将原始模型转换为紧凑模型。此外,使用所提出的新模块构建的GhostNet在效率和准确性方面都优于最先进的轻量级神经架构。
ghost modual其实和可分离卷积有点像。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容