ShuffleNet V1

ShuffleNet: AnExtremely Efficient Convolutional Neural Network for Mobile Devices

这篇文章在mobileNet的基础上主要做了1点改进:

mobileNet只做了3*3卷积的deepwiseconvolution,而1*1的卷积还是传统的卷积方式,还存在大量冗余,ShuffleNet则在此基础上,将1*1卷积做了shuffle和group操作,实现了channel shuffle 和pointwise group convolution操作,最终使得速度和精度都比mobileNet有提升。

如下图所示,

(a)是原始的mobileNet的框架,各个group之间相互没有信息的交流。

(b)将feature map做了shuffle操作

(c)是经过channel shuffle之后的结果。

ShuffleNet V1

Shuffle的基本思路如下,假设输入2个group,输出5个group

| group 1   | group 2  |

| 1,2,3,4,5  |6,7,8,9,10 |

转化为矩阵为2*5的矩阵

1 2 3 4 5

6 7 8 9 10

转置矩阵,5*2矩阵

1 6

2 7

3 8

4 9

5 10

摊平矩阵

| group 1   | group 2  | group 3   | group 4  | group 5  |

| 1,6           |2,7          |3,8           |4,9          |5,10        |

ShuffleNet Units 的结构如下,

(a)是一个带depthwiseconvolution (DWConv)的bottleneck unit

(b)在(a)的基础上,进行了pointwisegroup convolution (GConv) and channel shuffle

(c)进行了AVG pooling和concat操作的最终ShuffleNetunit

ShuffleNet V1