当前位置:   article > 正文

Ghost Module/GhostNet:一种模型压缩的轻量级模块/网络(论文阅读)(1)_ghostmodule

ghostmodule

温馨提示:(1)讲Ghost模块 (2)讲GhostNet,文章过于话多,快速理解内容只需看图

(2)GhostNet网络架构请看博客下篇

Ghost Module是一种模型压缩的方法,即在保证网络精度的同时减少网络参数和计算量,从而提升计算速度(speed),降低延时(latency)。Ghost 模块可以代替现有卷积网络中的每一个卷积层。基于Ghost模块,论文作者堆叠Ghost模块构建了GhostNet。

 

Ghost Module

模型提出的缘由:卷积输出的一组特征图在通道方向上,有部分通道内容相似。

比如下图是对Resnet-50某层输出的可视化,每张图代表一个通道,图中三组颜色相连的图非常相似。论文将一组中的一张图称为本征图(intrinsic),其他和本征图相似的图称为本征图的魅影(ghost)。那么,既然ghost和Intrinsic非常相似,我们是否可以通过一种相对简单的、计算量较少的运算代替运算量大的卷积操作生成ghost图?ghost模块就是基于这种想法,提出用简单的线性运算生成ghost,但总共的通道数(# intrinsic+ghost)以及生成特征图的大小和原来保持一致。

Ghost模块:生成ghost图的过程采用简单的线性运算Φ,代替原本的卷积操作。如下图所示,假设原始卷积操作中输入Input与n组k x k的Kernel卷积后生成通道数为n,尺寸为h’ x w’大小的输出。在ghost模型中,我们用m组k x k的Kernel与input进行卷积,生成m x h’ x w’的本征图intrinsic,之后本征图进行线性变换Φ产生ghost图,将intrinsic和ghost一起作为输出。

线性变换Φ究竟是什么函数?原理上可以是仿射变化函数,小波变换等。但考虑到统一计算形式有利于硬件部署,现在的硬件架构有许多针对卷积的优化计算,论文中的Φ是depthwise conv。

m层intrinsic进行线性变化,每层的Φ是否相同,具体到depth wise conv运算就是指kernel的尺寸是否都相同?原理上,如下图所示,可以每层用不同的Φ1,Φ2……,但是,计算越不规整统一,硬件执行的效率越低。由此在论文中,Φ其实是相同的。具体到depthwise conv kernel的尺寸多少合适,这个超参数的值是做实验选出来的。

下图中可以看到,需要生成s-1组ghost图,使得ghost模块的输出和原始卷积输出的大小相同。S(或者说m)多少合适呢?这也是做实验选出来的。

 

模型压缩量定量计算

下面计算用一个ghost模块取代原始的一层卷积操作带来多少计算量、参数量上的优势。

加速比(rs:speed up ratio):这里用计算量来近似代替速度。

压缩比(compression ratio):

ghost模块效率验证

ghost模块可以替代现有神经网络架构中的卷积层。(区别于作者提出的GhostNet,前者以Ghost模块代替原有网络中卷积操作命名为ghost-xxnet,比如ghost-Resnet-50。而GhostNet是作者提出的一种网络架构)从下图的实验结果看来,相比于其他模型压缩方法,ghost 有出色表现。

特别说明:禁止转载,欢迎交流学习!

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

闽ICP备14008679号