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之后的结果。
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