目录
论文信息:
链接:ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
发表时间:2017年
来源:Face++
作者:Xiangyu Zhang
摘要:
本文引入了一种极具计算效率的CNN架构,名为ShuffleNet,它专门设计用于计算能力非常有限的移动设备。新架构采用了两种新的操作,逐点组卷积和通道整合,大大降低了计算成本,同时保持了精度。
由于昂贵的1x1卷积代价,在极小的网络中,最先进的基础架构如Xception 和ResNeXt 变得不那么有效。我们建议使用逐点组卷积来减少1x1卷积的计算复杂度。为了克服群组卷积带来的副作用,我们提出了一种新颖的频道平滑操作来帮助跨特征频道的信息流动。基于这两种技术,我们构建了一个称为ShuffNet的高效架构.
网络结构:
- 1x1卷积的计算量问题
分组卷积应用在很多轻量级网络中,例如Xception 和ResNeXt等。但这些网络存在一个很大的弊端是采用了密集的1x1 pointwise convolution,1x1卷积占据了很大的计算量。一个简单的解决方案就是在1x1层上应用通道稀疏连接,例如对1x1卷积采用channel sparse connection 即分组操作,通过确保每个卷积仅在相应的输入通道组上运行,组卷积显着降低了计算成本,如上图(a)所示。
- 分组卷积带来的通道特征通讯问题
如果多个组卷积叠加在一起,则会产生一个副作用:某个通道的输出仅从一小部分输入通道中导出。上图(a)示出了两个堆叠的卷积层的情况。很明显,某个群体的输出只与群组内的输入有关。该属性阻止通道组之间的信息流并削弱表示。如果我们允许组卷积从不同的组获得输入数据(如上图(b)所示),输入和输出通道将完全相关。具体而言,对于从前一个组层生成的特征映射,我们可以首先将每个组中的通道划分为若干个子组,然后将下一层中的每个组用不同的子组进行组合。这可以通过通道平滑操作(上图(c))得到高效和优雅地实现。
网络架构:
-
ShuffleNet Unit
(a)是一个用DWConv改造后的resnet结构;
(b)对(a)进行改进,将密集的1x1卷积替换成1x1的group convolution和channel shuffle操作的组合,注意3x3的depthwise convolution之后没有使用ReLU激活函数;
(c)中将DWConv的步长变为2来进行降维,将跳线链接改为步长为2的AVG Pool层以保证两条线的输出shape相同,然后将Add改为Concat连接,减少参数量和计算量。
-
ShuffleNet 网络结构
实验结果:
- 不同group,不同通道数的对比
从上图可以看出group越大,效果越好,因为group越大信息能得到更充分的混合,网络的特征提取能力越强。1x是基准模型,而0.5x和0.25x表示的是在基准模型上将通道数缩小为原来的0.5和0.25,可见通道数越多精度越高,但计算量和参数量也更多。还可以看出较小的模型倾向于从group中获益更多。
- 有无shuffle通道混合对比
可见采用channle shuffle之后,网络性能更好,尤其是,当组数相对较大时(例如g=8),带有信道混合的模型以相当大的优势胜过对应的模型,这证明channle shuffle的有效性。
- ShuffleNet与MobileNet对比
与MobileNet相比,ShuffleNet在计算复杂度和精度方面都表现得更加优秀。