CVPR 2020 论文选听: 华为提出轻量级网络 GhostNet
近年来随着高性能智能手机的普及,神经网络的应用也趋向于移动设备。但由于内存和计算资源的限制,在嵌入式设备上部署深度神经网络并不容易。因此,有必要给网络模型减肥。比如对网络作剪枝、量化、知识蒸馏等操作,或者直接设计适合嵌入式设备的轻量级网络架构,如谷歌提出的 MobileNet。这篇论文提出了所谓的 Ghost 模块,以及由此建立的轻量级网络 GhostNet。
下面我们来简单解读一下这篇论文。
1动机与简介
先来分析一下论文的动机 Motivation: 训练好的网络一般都有丰富甚至冗余的特征图信息来实现对输入的理解,这篇论文试图从特征图冗余的这个角度来改善网络性能。下图展示的是 ResNet-50 的特征图,可以看到有很多相似的特征图,这里称它们为幻影 Ghost。特征冗余未必就是多余的,反而是网络的关键特性。这篇论文认为与其去避免特征的冗余,不如以一种低成本高效率的方式来主动生成它,从而在保持性能的同时达到压缩网络的目的。这篇论文的想法简单有效,具有启发性,值得阅读和参考。
论文主要包含两个环节,
1、提出能用更少参数提取更多特征的 Ghost 模块, 2、基于 Ghost 模块提出 GhostNet,将原始的卷积层替换为 Ghost 模块。
2Ghost 模块
先来看第一部分,即所谓的 Ghost 模块,思想不难,如下图所示。原始的卷积层出来的特征图具有很多相似特征图,这就意味着这些卷积操作有重复性。我们知道,卷积网络里有大量的卷积核,也因此存在大量的相似计算。那么如何降低这部分的计算量呢?可以先用几个卷积核产生一部分特征图,称为内在特征图,然后由内在特征图经过一系列简单的线性变换来生成更多的 Ghost 特征图。这样,Ghost 模块整体的参数量和计算量就被降低了,但可以输出与原始卷积层相同数量的特征图。
3GhostNet
然后,论文在 Ghost 模块的基础上提出了 Ghost Bottleneck,与 ResNet 里的 residual 块类似,主要由两个 Ghost 模块堆叠而成。Ghost Bottleneck 包括两个版本,如下图所示。
然后再改写 MobileNetV3 网络,将它的 bottleneck 块换成上面的 Ghost bottleneck。论文宣称在 ImageNet 分类数据集上计算成本类似,GhostNet 可以实现比 MobileNet V3 更高的性能。
4小结
这篇论文提出 Ghost 模块来构建轻量级高效网络。该模块生产两类特征图,包括少量内在特征图以及由内在特征图经过线性变换得到的 Ghost 特征图。在 Ghost 基础上提出了 GhostNet。实验表明,GhostNet 在保持性能的同时压缩效果达到最好。
论文就介绍到这里,有兴趣的同学可以参阅论文[1]和代码[2]。
⟳参考资料⟲
论文: https://arxiv.org/pdf/1911.11907.pdf
[2]