1、论文
论文题目:《GhostNets on Heterogeneous Devices via Cheap Operations》
论文地址: https://arxiv.org/pdf/2201.03297.pdf
代码地址: https://github.com/huawei-noah/CV-Backbones
2、引言
本文针对网络部署时面临的内存和资源有限的问题,提出两种不同的Ghost模块,旨在利用成本低廉的线性运算来生成Ghost特征图。
C-Ghost模块被应用于CPU等设备,并通过简单的模块堆叠实现C-GhostNet。
进一步考虑GPU设备的高效网络。不需要在构建阶段涉及太多gpu效率低的操作(例如,深度卷积),建议利用阶段性特征冗余来制定gpu效率高的G-Ghost stage结构。将某一stage的特征分为两部分,其中第一部分使用输出通道较少的原始块来生成内在特征,而另一部分使用利用阶段冗余的廉价操作来生成。
在基准上进行的实验证明了提出的C-Ghost模块和G-Ghost stage的有效性。C-GhostNet和G-GhostNet可以实现精度和延迟的最佳权衡。
3、发现问题
3.1
虽然C-GhostNets在保持高性能的同时保持准确度不变,但用于生成更多特性的廉价操作在GPU上仍不是非常廉价和高效。具体来说,深度卷积的运算强度通常较低,即计算与内存运算的比率,不能充分利用并行计算能力。如何在精度和GPU延迟之间取得更好的平衡,仍然是一个被忽视的问题。
除了FLOPs和参数数量,Radosavovic等人引入了激活度activations来测量网络的复杂性,即所有卷积层的输出张量的大小。GPU上的延迟更多的是与activations相关,而不是与FLOPs相关,也就是说,如果可以移除部分feature map,减少activations,就可以以高概率减少GPU上的延迟。
3.2
作者等人发现,现有大多数CNN架构中,主体通常由几个分辨率逐渐降低的stage组成,一个stage通常包括几个卷积层/块,同时在每个stage中的不同层/块,特征图的尺寸大小相同。因此一种猜想是:特征的相似性和冗余性不仅存在于一个层内,也存在于该stage的多个层之间。
下图验证了这种想法(如右边第三行第二列和第七行第三列的特征图存在一定相似性)。
如下图所示,以残差卷积神经网络(ResNet-50,作图省略残差连线)为例,相同stage之间,不同层/块的输出特征具有较高的相似性,不同stage之间,特征的相似性较低。因此我们利用相同stage之间跨层的廉价操作来让网络生成这些与关键特征相似性高的Ghost特征。
3.3 复杂特征和Ghost特征
在CNN的某个stage中,深层特征分为:
(1)Ghost特征是由该stage中,第一个卷积层/块浅层廉价操作所生成的;
(2)复杂特征是由该stage中,一系列连续的卷积层/块所生成的。
3.4
普通的CNN中每个阶段有n层/块L1,L2,⋅⋅⋅,Ln。给定输入特征映射X,则第一个和最后一个层/块的输出分别是:
为了得到输出特征 Yn,需要执行一系列块来对输入数据进行处理和聚合,即需要大量的计算成本。
G-Ghost中设每个stage具有n个卷积层/块,该stage的最终输出是Y ∈ R c * h * w ,经过n层/块,即最后一个层/块生成的复杂特征Y_n^c∈ R (1-λ) c * h * w :
将复杂特征和Ghost特征进行concatenating就可以得到该阶段的最终输出:
4、G-Ghost核心思想
4.1 G-Ghost stage
下图λ = 0.5 的 G-Ghost stage示意图可表示3.4.2的过程。
图(b)G-Ghost stage:给定模块的输入输出通道数(一般情况下输入通道数和输出通道数相同),第二层开始所有的卷积层的通道数都是输出通道数的1/2,剩下的1/2通道的输出特征由第一层卷积层的输出经廉价操作产生。
4.2 带mix操作的G-Ghost stage
4.2.1 mix操作
复杂特征经过逐层提取,包含更丰富的语义信息;而Ghost特征由浅层进行廉价操作所得,可能缺乏一部分深层信息。为了弥补信息的不足,作者提出利用复杂路径中的中间特征来增强廉价运算的表示能力。
下面是mix操作的过程(如何利用复杂路径的中间特征增强廉价操作的表示能力,从而得到语义信息丰富的Ghost特征):
4.2.2 带mix操作的G-Ghost stage
下图是λ = 0.5的带有mix操作的G-Ghost阶段示意图
注意:图(c)带mix操作的G-Ghost stage是在G-Ghost stage的基础上,将复杂特征与经过mix操作后的Ghost特征进行concat融合。此时的Ghost特征的语义信息是丰富的。
5、复杂度分析
6、G-GhostNet网络结构
G-GhostNet是由G-Ghost stage核心思想所设计的stage堆叠起来形成的
- block:采用残差模块
- output:输出特征图的大小
- out:输出特征图的通道数
- stride:步距
注意:
(1)使用带mix操作的G-Ghost stage,使用1×1卷积作为cheap廉价运算,λ=0.4
(2) resiual bottleneck中的expansion(扩展)因子=3,并对每个残差模块引入SE机制
(3)使用ReLU激活函数