一、文献梳理
1、文献背景
由于Xception和ResNeXt中存在大量密集的1*1卷积,导致网络十分低效。因此,旷世提出了pointwise group convolutions来减少1*1卷积的计算复杂度。但是,这样会带来副作用:通道间的信息没有得到很好的交流融合。
2、研究成果
1)模型意义
鉴于以往的Xception或者ResNext网络因为使用了大量的 1 × \times× 1 的卷积而导致在小模型上精度下降,所以提出使用1 × \times× 1 分组卷积来降低计算复杂度。同时为了消除分组卷积带来的负面效应,采用了通道打乱(channel shuffle) 的方法来保证信息的流动。相比较其他网络而言,shufflenet能够使用更多的特征通道,这样对于网络的精度保持会有很大帮助。
2)实验及其结果
二、文献核心思想
1、分组卷积
其实分组卷积并不是什么新鲜的东西,早在AlexNet中,就通过将模型部署到2台GPU上进行训练,后来的ResNext里面作者用了多路卷积的方式也实现了组卷积;最近在Xception中和MobileNet中都使用了depthwise separable convolution也包含着分组卷积的思想。
2、通道打乱
这个方法很少被一些模型使用,而在这里,通过在分组卷积后接通道打乱的操作,可以在很大程度上避免分组卷积打来的边界效应,从而提升模型的表现能力。
三、文献重点
1、动机
作者认为,在以前的Xception或者ResNext 中,都没有大量充分使用1 × \times× 1卷积核所带来的计算量和参数的优势,因此模型的计算量和参数量都还是很大的。而对于小的网络模型如shufflenet而言,可能单纯的使用1 *1 卷积都可能带来非常大的计算开销。因为传统的卷积方式都是将每个卷积核分别与输入通道进行卷积后相加输出结果,这个过程计算量还是很大的。之前的MobileNet对这方面进行了改进。而这里shufflenet可以说非常充分的借鉴了MobileNet的思想。即进行depthwise separable convolution。但是又不能仅仅这样做,不然的话,就和MobileNet一样了。因此再借鉴了一下ResNext的想法,干脆分组做,这样就既做了depthwise separable convolution,又利用了group的优势,两全其美!
2、channel shuffle
左图是普通的group卷积,卷积核只有相应的输入通道进行作用,不同通道之间信息没有交流。如果组数等于通道数,就可以理解成mobilenet中的depthwise convolution。(b)图是将通道进行重新打乱排列,使得不同通道信息之间能相互交流。(c)图是(b)图的等价,使用了channle shuffle进行通道重新排列。如果group卷积能够获得不同group中的输入数据,输入特征和输出特征就能很好的关联起来。通过channle shuffle操作,能构建更加强有力的网络结构。
主要关注中间特征层的处理,(a)和(b)中的特征层处理结合起来就是(c)中的表示。做法就是将每个分组卷积之后的中间特征图又进行了进一步划分,然后再这些小的特征图中进行打乱,当然,这里的打乱并不是完全shuffle,而是有规律的重新组合,这样可以保证每组中间的特征图都包含其他组的特征,相当于进行了特征的重新组合
3、ShuffleNet 单元结构
(a)图是ResNeXT的残差模块,经过1*1的卷积来降低通道数,然后使用3*3的group卷积,最后使用1*1的卷积将通道数提升回原来。(b)图是作者提出的ShuffleNet Unit,与残差模块类似,将残差模块中的1*1卷积换成1*1的group卷积,并加入了channel shuffle操作。值得注意的是,3*3的group卷积后,没有接激活函数。(c)图是步长为2的情况,基本类似,但最后是concat操作,而不是add,这样做的目的是在很小的计算成本下,更容易扩大通道数。
ShuffleNet相对的FLOPs较小。换而言之,在相同的计算资源限制下,ShuffleNet能使用更宽的特征图。这个对轻量化网络来说,是非常重要的。因为轻量化网络通常由于特征图宽度不足而无法更好处理信息。基于提出的ShuffleNet Unit,可以构建出Shuffle网络, 如Table.1所示。在整体计算资源变化不大下(~140MFLOPs),当组数g扩大的时候,可以采用更加宽的特征图,来更好的编码信息。
4、网络结构
假设原来网络卷积核有m个,那么这个时候就有s × m个卷积核,这样就可以通过增加或者减少卷积核来增加或者减少运算量。从上图中,作者发现,一直增加group的数量并不能带来性能的线性提升,因为增加group让每个卷积处理的信息变少,即使进行shuffle也不能带来这方面的影响,具体使用还是看实际情况。