论文地址:https://arxiv.org/abs/1911.11907
阅读笔记:
-
论文总览
-
论文图表与内容
-
补充
论文总览:
1、特征图的冗余对于CNNs的成功是一个重要特征,但在神经网络的设计中很少被研究
2、轻量化卷积模型的方法主要有两类:一类是模型压缩,一类是小型的模型设计,但是特征映射之间的相关性和冗余从未得到很好的利用
3、gost module使用更少的参数产生更多的特征,是一个即插即用的组件,它将普通卷积层分成两部分。第一部分涉及普通卷积,但它们的总数将受到严格控制。给定第一部分的内在特征映射,然后应用一系列简单的线性运算来生成更多的特征映射
4、设计了GhostNet,达到SOTA效果
论文图表与内容:
介绍
特征图中有很多冗余,会出现相似的特征图对,一对特征图可以用操作简单的线性转换获得
算法核心
假设原本卷积操作,输入通道数位c,输出通道数为n,卷积核大小为k,输出尺寸为h,w,参数量为c*n*k*k,计算量为c*n*k*k*h*w。
ghost module则分为两步,第一步是 卷积操作,特征映射到m维,m远小于n,计算量为c*m*k*k,第二步是线性转换,将第一步的m个特征图都做s个转换(m*s=n),线性核大小为d*d,计算量为m*(s-1)*d*d,其中有一个为第一步的特征图。ghost module和卷积运算的运算量与参数量比例计算如下,都可以缩小s倍:
ghost module的ghost bottleneck结构:
GhostNet的结构如下:
实验效果
对于一对ghost特征图,对比不同的线性核大小下,线性变换后的特征图和原来的特征图比较它们MSE的大小,发现MSE值非常小,并且相差并不大,说明特征图存在相关性,并且确实存在冗余,还可以用内部特征图线性变换得到。论文只用deepwise 卷积来做线性变换,并且d是固定大小
在vgg16上插入Ghost module,s=2时,改变d,效果为表3。d为3时,改变s,效果为表4
对Ghost模块产生的特征进行了可视化,尽管从内在特征线性变换而来,但还是有明显的差异,说明线性变换足够灵活
可以看到使用Ghost模块不仅比其它压缩方法更能降低模型的体量,也最能保持模型准确率
在大型网络上使用Ghost模块,压缩效果和准确率依然很不错
不同的模型大小使用不同的α\alphaα值进行调整,整体而言,GhostNet最轻量且准确率最高
在one-stage和two-stage检测算法上,GhostNet能降低大部分计算量,而mAP与其它主干网络差不多
总结
为了减少神经网络的计算消耗,论文提出Ghost模块来构建高效的网络结果。该模块将原始的卷积层分成两部分,先使用更少的卷积核来生成少量内在特征图,然后通过简单的线性变化操作来进一步高效地生成ghost特征图。从实验来看,对比其它模型,GhostNet的压缩效果最好,且准确率保持也很不错
补充:
模型压缩方法:剪枝、量化、知识蒸馏、张量分解
小型的网络:MobileNets,ShuffleNet,Xception,SqueezeNet