【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

ShuffleNet是旷视科技针对移动端低功耗设备提出的一种更高效的卷积神经网络结构,论文原文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》。

移动端设备因为计算资源的限制,只能运行更轻量级的网络。虽然Xception等网络已经将普通的卷积替换为深度卷积核逐点卷积,有效减少了计算量和参数量,但是因拆分而产生的逐点卷积的计算量却是相当可观的,这一点又成为新的瓶颈。

因此作者提出使用分组卷积(group convolution),通过将卷积运算的输入限制在每个组内,使得模型的计算量显著下降。但与此同时,也带来了新的问题:在多层逐点卷积堆叠时,网络的信息流只在组内流动,组间并没有信息交换,降低了信息的表达能力,从而影响模型的表示能力和识别精度。

为解决这一问题,作者引入了组间的信息交换机制,即通道重排(channel shuffle)。

【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

假设将一个卷积层分为g组,每组有n个通过,那么:

1. 这一卷积层总的输出通过数为g x n

2. 将输出特征reshape为(g, n)

3. 再转置为(n, g)

4. 将第3步的结果平坦化,再分为g组作为下一层的输入

基于分组逐点卷积和通道重排,作者提出了ShuffleNet结构单元,该结构继承了残差网络ResNet的思想,在此基础上做了进一步的改进:1. 使用逐通道卷积替换原来的3 x 3卷积,降低卷积操作抽取空间特征的复杂度;2. 将原来结构中的两个1 x 1逐点卷积分组化,并在之间加上通道重排,进一步降低卷积运算跨通道的计算量。

【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

完整的ShuffleNet网络由16个ShuffleNet单位堆叠而成,分属三个阶段,每一个阶段之后feature map的空间尺寸减半,而通道数翻倍。通过简单的将各层通道数进行缩放,可以得到其他复杂度的模型。

【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices


下面是一些实验结果。

在ImageNet 2012分类数据集上的设置大部分和ResNeXt一致,除了:1. weight decay从1e-4修改为4e-5和使用 linear-decay learning rate policy; 2. 数据增强使用较少的aggressive scale。

【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

说明分组越多,模型的计算量就越低。因此在计算量一定时,较大的分组可以允许较多的通道数,这有利于编码信息,提升模型的识别能力。

【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

有通道重排的总比没有通道重排的效果好。

【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

【论文学习记录】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices