简介
本文是来自face++ 的ShuffleNet. 比mobilenet 在imagenet上准确率高 (absolute 7.8%) 。
论文地址:https://arxiv.org/pdf/1707.01083.pdf
代码地址:https://github.com/farmingyard/ShuffleNet
Motivation
之前的Google的网络Xception采用深度可分离卷积,将普通卷积拆分成 depthwise separable convolution 和 pointwise convolution进行。而facebook的ResNext则先用pointwise convolution降维再用深度可分离卷积代替普通卷积。因此大量的计算集中z在网络的 pointwise convolution(1x1卷积)部分。对比普通的卷积和分组卷积的区别,如果对1x1卷积也使用组卷积,那么会引入一个问题就是通道之间的信息没有交流。因此为了让通道之间的信息流能够交互,face++提出了shufflenet。
ResNext网络示意图如下:
核心方法
图a是直接在ResNet的基础上使用可分离卷积实现。图b是对1x1使用组卷积,然后使用通道重排的操作,加强通道信息的交流。图c是当输出的feature map大小减半时,使用concat提升维度。
相比同样配置的ResNet和ResNeXt,ShuffleNet的计算量要低得多。假设输入数据大小为chw,bottleneck层(1x1+3x3+1x1)通道数为m,那么ResNet单元需要hw(2cm+9mm) FLOPs,ResNeXt需要hw(2cm+9mm/g) FLOPs,而ShuffleNet只需要hw(2cm/g+9m) FLOPs,其中g为分组数量。
网络配置
Experiment
- 表二显示带有分组的(g>1)的网络的始终比不带分组(g=1)的网络的错误率低。作者观察到对于较小的网络(如 ShuffleNet 0.25x ),较大的分组会得到更好结果,认为更宽的通道对于小网络尤其重要。
2.有通道重排的网络始终优于没有通道重排的网络
- 与其他网络比较