GhostNet:使用廉价操作构造更多特征.

作者观察到卷积神经网络提取的特征存在冗余(上图展示了三对冗余特征),尽管这些冗余保证了网络具有较高的准确率,但增加了网络的计算负担。作者提出使用更廉价的操作来构造网络的冗余(称为Ghost模块),并进一步提出了GhostNet

1. Ghost模块

若记输入特征为$X \in \Bbb{R}^{c\times h\times w}$,经过卷积网络的输出特征为$Y \in \Bbb{R}^{n\times h’\times w’}$,则卷积操作表示为:

\[Y=X*f\]

其中$f \in \Bbb{R}^{c\times k\times k\times n}$表示卷积核。该操作的FLOPs为$c\cdot k\cdot k\cdot n\cdot h’\cdot w’$。

作者提出的Ghost模块首先使用卷积操作生成较少通道的特征,再用线性操作生成更多特征。其中卷积操作生成$m<n$个特征:

\[Y'=X*f'\]

其中$Y’ \in \Bbb{R}^{m\times h’\times w’}$,$f’ \in \Bbb{R}^{c\times k\times k\times m}$。

对于每一个特征,再使用$s$个线性操作$\Phi$(包括一个恒等映射)生成$s$个新的特征:

\[y_{ij}=\Phi_{i,j}(y_i'), \quad i=1,2,...,m,\quad j=1,2,...,s\]

下面分析Ghost模块的FLOPs。假设输出特征通道数仍为$n=ms$,对于每一个特征使用一次恒等映射和$\frac{n-m}{m}=s-1$次线性操作,假设该线性操作为$d \times d$的卷积核,则Ghost模块的FLOPs计算为:

\[c\cdot k\cdot k\cdot m\cdot h'\cdot w'+(n-m)\cdot d\cdot d\cdot h'\cdot w'\]

Ghost模块相对于普通卷积的加速比为:

\[r_s = \frac{c\cdot k\cdot k\cdot n\cdot h'\cdot w'}{c\cdot k\cdot k\cdot m\cdot h'\cdot w'+(n-m)\cdot d\cdot d\cdot h'\cdot w'} \\ = \frac{c\cdot k\cdot k\cdot m\cdot s}{c\cdot k\cdot k\cdot m+m(s-1)\cdot d \cdot d } \\ = \frac{c\cdot k\cdot k\cdot s}{c\cdot k\cdot k+(s-1)\cdot d \cdot d} ≈ \frac{c \cdot s}{c+s-1} ≈ s\]

2. GhostNet

作者提出的Ghost瓶颈层如上图所示,由两个Ghost模块堆叠组成。第一个模块作为扩展层,用于增加通道的数量,其中输出通道与输入通道数量之比称为扩展比(expansion ratio)。第二个模块用于减少通道数量以获取输出特征。当需要下采样时,使用stride大于$1$的深度卷积。

GhostNet网络结构如上表所示。结构基本遵循MobileNetV3,部分模块中额外使用了通道注意力机制。为了进一步降低模型尺寸,可以在每一层通道数量上乘以宽度因子$\alpha$。

3. 实验分析

GhostNet网络的两个主要超参数为每个特征的线性映射次数$s$以及线性核的尺寸$d$。两个参数的消融如下:

作者可视化了GhostNet网络中学习到的特征和通过线性映射得到的特征:

不同模型的准确率和模型尺寸对比如下: