轻量化网络-squeezeNet、MobileNet、ShuffleNet

时间:2024-04-11 21:12:18

对于轻量化的网络设计,目前较为流行的有SqueezeNet、 MobileNet、ShuffleNet等结构。其中,SqueezeNet采用压缩再扩展的结构,MobileNet使用了效率更高的深度可分离卷积,而ShuffleNet提出了通道混洗的操作,从而进一步降低了模 型的计算量。
轻量化网络-squeezeNet、MobileNet、ShuffleNet

1.SqueezeNet

SqueezeNet从网络结构优化的角度出发,使用了如下3点策略来减少网络参数,提升网络性能:
1.使用1×1卷积来替代部分的3×3卷积
2.通过1×1卷积来实现减少输入通道的数量.
3.在减少通道数之后,使用多个尺寸的卷积核进行计算,保留更多的信息,提升分类的准确率。

基于以上3点,SqueezeNet提出了Fire Module的基础模块。
轻量化网络-squeezeNet、MobileNet、ShuffleNet
其中,
SqueezeNet层:首先使用1×1卷积进行降维,特征图的尺寸不变,这里的S1小于M,达到了压缩的目的。(S1可控制channel的个数) 。
Expand层:并行地使用1×1卷积与3×3卷积获得不同感受野的特征图,有点类似Inception模块,达到扩展的目的。
Concat层:对得到的两个特征图进行通道拼接,作为最终输出。

SqueezeNet的网络结构如图所示:
轻量化网络-squeezeNet、MobileNet、ShuffleNet
SqueezeNet是一个精心设计的轻量化网络,基于其轻量化的特性,可以广泛地应用到移动端,促进了物体检测技术在移动端的部署与应用。

2.MobileNet

SqueezeNet虽在一定程度上减少了卷积计算量,但仍然使用传统 的卷积计算方式,而在其后的MobileNet利用了更为高效的深度可分离卷积的方式,进一步加速了卷积网络在移动端的应用。

首先,我们看下标准的卷积计算过程:假设当前特征图大小为Ci×H×W,需要输出的特征图大小为 Co×H×W,卷积核大小为3×3,Padding为1。
轻量化网络-squeezeNet、MobileNet、ShuffleNet
1.对于输入特征图的左上Ci×3×3特征,利用Ci×3×3大小的卷积核 进行点乘并求和,得到输出特征图中一个通道上的左上点,这一步操 作的计算量为Ci×3×3。
2.在输入特征图上进行滑窗,重复第一步操作,最终得到输出特 征图中一个通道的H×W大小的输出,总计算量为Ci×3×3×H×W。
3.利用Co个上述大小的卷积核,重复第一步过程,最终得到 Co×H×W大小的特征图。

在整个标准卷积计算过程中,所需的卷积核参数量为:Ci×3×3×H×W×Co

在标准卷积在卷积时,同时考虑了图像的区域与通道信息,那么为什么不能分开考虑区域与通道呢?基于此想法,诞生了深度可分离卷积(Depthwise Separable Convolution),将卷积的过程分为逐通道卷积逐点1×1卷积两步。
然后,我们看下逐通道卷积的计算过程:
轻量化网络-squeezeNet、MobileNet、ShuffleNet
对于一个通道的输入特征 H×W,利用一个3×3卷积核进行点乘求和,得到一个通道的输出 H×W。然后,对于所有的输入通道Ci,使用Ci个3×3卷积核即可得到 Ci×H×W大小的输出。卷积核参数量为Ci×3×3,远少于标准卷积Ci×3×3×Co的数量。通道之间相互独立,没有各通道间的特征融合,这也是逐通道卷积的核心思想。
因此在整个卷积计算过程中,逐通道卷积所需的计算量为:Ci×3×3×H×W
由于逐通道卷积通道间缺少特征的融合,并且通道数无法改变, 因此后续还需要继续连接一个逐点的1×1的卷积,一方面可以融合不 同通道间的特征,同时也可以改变特征图的通道数。由于这里1×1卷 积的输入特征图大小为Ci×H×W,输出特征图大小为Co×H×W,因此 这一步的总计算量:Ci×1×1×H×W×Co

综合这两步,可以得到深度可分离卷积与标准卷积的计算量之比为:
轻量化网络-squeezeNet、MobileNet、ShuffleNet
可以看到,虽然深度可分离卷积将卷积过程分为了两步,但凭借 其轻量的卷积方式,总体计算量约等于标准卷积的1/9,极大地减少 了卷积过程的计算量。
MobileNet v1使用的深度可分离模块的具体结构如图所示:
轻量化网络-squeezeNet、MobileNet、ShuffleNet
MobileNet v1整体的网络是由上述深度可分离卷积基本单元组成,
轻量化网络-squeezeNet、MobileNet、ShuffleNet

3.ShuffleNet

为了降低计算量,卷积网络通常在3×3卷积之前增加 一个1×1卷积,用于通道间的信息流通与降维。然而在网络中1×1卷积却占用了大量的计算资源。ShuffleNet v1从优化网络结构的角度出发,利用组卷积与通道混(Channel Shuffle)的操作有效降低了1×1逐点卷积的计算量。
通道混洗操作示意图如下:
轻量化网络-squeezeNet、MobileNet、ShuffleNeta图代表了常规的两个组卷积操作,可以看到,如果没 有逐点的1×1卷积或者通道混洗,最终输出的特征仅由一部分输入通 道的特征计算得出,这种操作阻碍了信息的流通,进而降低了特征的 表达能力。因此,我们希望在一个组卷积之后,能够将特征图之间的通道信息进行融合。通道混洗可以通过几个常规的张量操作巧妙地实现这一过程。
轻量化网络-squeezeNet、MobileNet、ShuffleNet

本文总结了SqueezeNet、MobileNet 及ShuffleNet中部分结构。其中,SqueezeNet精心设计了一个压缩再扩展的模块,有效降低了卷积计算量;MobileNet 则发挥了 深度可分离卷积的优势,提升了卷积计算的效率。ShuffleNet更进一 步,在分组卷积的思想上提出了通道混洗操作,避免了大量1×1卷积的操作,可谓经典。通常情况下,将这几种轻量化网络应用到检测框 架中,在速度上均可以得到不同程度的提升。