轻量化CNN模型整理—MobileNet,ShuffleNet,GhostNet

        卷积神经网络(Convolutional Neural Networks, CNNs)由于其强大的表征学习能力,在计算机视觉领域取得了瞩目的成就,并得到了广泛的应用。为了进一步提高网络的精度,目前CNN的整体发展趋势是向着更深、更复杂的网络发展,但也因此导致了更高的计算代价。而在实际应用中,网络可能需要部署在计算资源有限的平台上,因此简化网络参数、减少网络计算量、提高网络效率也成为卷积网络研究的一个方向。目前轻量化网络研究主要包括以下几个思路:(1)压缩预训练的网络,如通过剪枝(pruning)、乘积量化(product quantization)、矢量量化(vector quantization)、哈希编码、霍夫曼编码等方式实现网络计算量压缩;(2)设计具有更少参数及计算量的高效网络模型,如SquezeNet、Deep fried convnets 、MobileNet、ShuffleNet、GhostNet等;(3)模型蒸馏(distillation),基于预训练的大规模网络引导训练更小规模的网络。

        本文主要整理了轻量化网络结构设计研究中的几个经典网络模型:MobileNet[1]ShuffleNet[2]GhostNet[3]

1. 常规卷积网络

        在介绍轻量化网络模型前,先对常规卷积网络的操作做一回顾。常规卷积网络中,一个卷积层包含若干个滤波器(filters),每个滤波器包含若干个滤波矩阵,即卷积核(kernels)。一个滤波器对输入的操作如图1所示(忽略偏置计算),对于3通道的输入,一个滤波器将包含3个卷积核,每个卷积核对输入的一个通道进行卷积,各卷积核计算结果相加,得到一个输出特征图。当采用多个滤波器时,即可得到多通道的输出特征图。

图1 常规卷积运算

         常规卷积层的计算量(乘加操作数)为 H\times W\times C\times N\times k \times k。其中HWC分别为输入的高、宽及通道数,N为输出通道数(即滤波器数),k为卷积核尺寸。

2. MobileNet

        MobileNet由Google团队提出,旨在提供一种适用于计算资源有限的移动设备的卷积网络。其核心是卷积层采用深度可分离卷积(Depthwise separable convolution)

        由第1节回顾可以发现常规卷积层操作其实可以分成两步。第一步是对输入各通道进行卷积滤波,第二步是对第一步结果线性组合。由于常规卷积层中这两步操作并不解耦,因此每个滤波器的卷积核参数并不相同,卷积时需要独立计算,当各层输出特征图通道数增加(即C\times N增大)时计算量显著增大。

        深度可分离卷积的基本思路是将常规卷积层的两步操作解耦,即逐通道卷积(Depthwise convolution)和逐点卷积(Pointwise convolution),如图2所示。具体操作如下:

        (1)逐通道卷积实现深度方向的空间卷积。这一步中输入的每个通道对应一个卷积核,通过卷积操作得到和输入通道数C相同通道的输出。这一步可以看做只采用1个包含C个卷积核的滤波器对输入各通道分别卷积滤波但不求和。也可以看做C个滤波器,每个滤波器仅包含对应单通道的1个卷积核,相当于极端的分成C组的分组卷积(Group convolution)。该步的计算量为H \times W \times C \times k \times k

        (2)接着逐点卷积将逐通道卷积结果各通道进行组合的卷积。这一步可以看做对逐通道卷积输出结果进行常规的卷积操作,但卷积核尺寸固定为1*1,从而实现逐点的线性组合。这一步中滤波器数量可以自己设定,从而可以输出通道数为的特征图。该步的计算量为H \times W \times C \times N,这里假设逐通道卷积输出与输入尺寸相同。

图2 深度可分离卷积运算

        综上一个深度可分离卷积层的计算量为H \times W \times C \times k \times k + H \times W \times C \times N,相比具有相同输出特征图的常规卷积层其计算量减少为原来的1/N + 1/k^2倍。

        图3给出了MobileNet中采用的深度可分离卷积层结构和MobileNet整体结构。可以注意到MobileNet采用的深度可分离卷积在逐通道卷积和逐点卷积后均跟随Batch Normalization和ReLU激活函数。也有其他一些采用深度可分离卷积的方法尽在逐点卷积后进行Batch Normalization和ReLU激活。此外后续研究中MobileNet也有了更新的版本,如MobileNet V2,MobileNet V3,感兴趣的读者可以自行研究。

图3 MobileNet结构[1]

3. ShuffleNet

        ShuffleNet是旷视科技提出的应用于移动设备的高效CNN模型。其作者注意到此前的运用深度可分离卷积的方法中1*1的逐点级卷积(Pointwise convolution)占用大量的计算资源。一个直接的解决思路是利用通道稀疏连接的方法,如分组卷积(Group convolution),来降低其计算复杂度。

        分组卷积实际上早在AlexNet中就有使用,其基本思路是将输入特征图分为g组,每组内分别进行常规卷积,如图4(a)。由于每组输入和输出的通道数均变为原本的1/g,总计算量变为常规卷积的1/g。但是分组卷积存在的一个问题是一组输出只与本组内的输入有关,不同组间缺乏信息交互,可能会降低模型表征能力。

图4 两层的分组卷积及通道混洗分组卷积[2] (a) 分组卷积;(b), (c) 通道混洗分组卷积

        为了解决分组卷积组间信息无法交互的问题,ShuffleNet提出一种采用通道间混洗(Channel shuffle)的分组卷积。在一层分组卷积得到输出后,对各组输出均匀打乱,使得下一层分组卷积中各分组的特征图来自上一层不同组的输出,从而实现不同分组间信息交互,如图4(b)及(c)。具体实现中,如图5所示,通过简单的维度变换(Reshape)和转置(Transpose)即可实现通道混洗:首先将上一层输出的通道数g×n维度变化为(g, n),接着转置为(n, g),最后重新维度变化为g×n。综上通过通道混洗的分组卷积一方面降低了计算量,一方面实现了通道间的信息交互。

图5 具体的通道混洗操作

         在此基础上原文参考残差网络的bottleneck设计给出包含和不包含下采样的两个ShuffleNet Unit,如图6。

图6 ShuffleNet Unit[2] (a) 具有Depthwise Conv的bottleneck; (b) ShuffleNet Unit, stride=1; (c)ShuffleNet Unit, stride=2

         进一步的,给出不同分组数的ShuffleNet如图7。此外后续研究中ShuffleNet也有了更新的版本,如ShuffleNet V2,感兴趣的读者可以自行研究。

图7 ShuffleNet结构[3] 注意在Stage2,由于输出通道数较少,因此不应用分组卷积。

4. GhostNet

        GhostNet由华为诺亚方舟实验室提出,作者注意到常规卷积操作得到的特征图间存在很多冗余,例如图8中用相同颜色标出的特征图间相关性很高。因此可以减少常规卷积生成的特征图数量,而基于这些特征图采用一些廉价操作(Cheap operations),如简单线性变换等,生成更多特征图。原文中将常规卷积生成的特征图称为本质特征图(Intrinsic feature maps),由廉价操作生成的特征图称为幻影特征图(Ghost feature maps),因此该操作也可以称为幻影卷积(Ghost convolution)

图8 ResNet-50特征图可视化[3]

        幻影卷积的具体操作如图9所示。假设希望生成通道数为N的特征图输出,幻影卷积也可以分为两步:

(1)首先通过常规卷积生成通道数为M=N/s的本质特征图。这一步操作与常规卷积无异,但通过减少输出通道数降低了计算量,该步的计算量为H\times W\times C\times \frac{N}{s}\times k \times k

(2)接着对于本质特征图中的每一个特征图分别通过s个变换\phi_{1}, \cdots, \phi_{k}, \cdots, \phi_{s}生成最终输出的特征图。\phi_{k}可以采用线性变换、仿射变换及小波变换等,且可以同时采用多个不同类型或超参数的变换。但考虑到硬件计算效率及实用性,原文中采用固定尺寸的卷积操作实现线性变换(该卷积操作对每个通道独立进行,相当于对本质特征图进行了s-1次depthwise卷积)。同时变换的最后一项\phi_{s}取恒等映射,即在最终输出中保留本质特征图。假设采用卷积核尺寸为d的卷积实现线性变换,则该步的计算量为(s-1)\times \frac{N}{s}\times H\times W\times d \times d

图9 幻影卷积运算

         综上一个幻影卷积的计算量为

H\times W\times C\times \frac{N}{s}\times k \times k+(s-1)\times \frac{N}{s}\times H\times W\times d \times d

相比具有相同输出特征图的常规卷积层其计算量比为(后两项近似是通过假设kd近似相等,s远小于C得到的)

\frac{}{}\frac{H\times W\times C\times \frac{N}{s}\times k \times k+(s-1)\times \frac{N}{s}\times H\times W\times d \times d}{H \times W \times C \times N \times k \times k} \\= \frac{\frac{1}{s} \times C \times k \times k + \frac{s-1}{s} \times d \times d}{C \times k \times k}\approx \frac{s + C -1}{s \times C}\approx \frac{1}{s}

即计算量近似为常规卷积的1/s倍。

        在此基础上原文参考残差网络的bottleneck设计给出包含和不包含下采样的两个幻影卷积bottleneck(G-bneck),如图10。

图10 幻影卷积Bottleneck(G-bneck)[3]

        进一步的给出GhostNet结构设计如图11。其中SE代表是否采用SE模块。

图11 GhostNet结构[3]

5. 参考文献

[1] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, 2017.

[2] ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices, 2018.

[3] GhostNet: More Features from Cheap Operations, 2020.

  • 5
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值