【转】ShuffleNet

转自:http://blog.csdn.net/shuzfan/article/details/77141425

本文介绍旷视科技最近提出来的ShuffleNet, 目的同样也是利用特殊的网络结构达到参数少速度快的效果。

文章链接: 《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》

caffe实现: https://github.com/farmingyard/ShuffleNet

1. 方法介绍

方法很容易理解,如下图:

【转】ShuffleNet_第1张图片

(1) 图a是一般的group convolution的实现效果(原理可以参考我的另一篇博文中的描述)。 其造成的问题是,输出通道只和输入的某些通道有关,导致全局信息流通不畅,网络表达能力不足。

(2) 图b就是本文的方法啦。 即通过均匀排列,把group convolution后的feature map按通道进行均匀混合, 这样就可以更好的获取全局信息了。 图c是操作后的等价效果图。

2. ShuffleNet Unit

整个ShuffleNet同样采用了类似于ResNet一样的模块化设计,如下图:

【转】ShuffleNet_第2张图片

(1) 图a是之前的一种ResNet网络结构模块,其参考了“MobileNet”的实现。其中的DWConv指的是 depthwise convolution。

(2) 图b是本文给出的一种模块(输出前后feature的size不变), 相比于图a,只是将第一个1x1卷积改成了group convolution,同时后续增加通道 shuffle。

(3) 图c是本文给出的另一种模块(输出前后feature的size变小,但通道数增加),主要是为了应对下采样问题。 注意,最后的合并操作由原来的 “Add” 变成了 “Concat”, 目的是为了增加通道数。

3. 网络结构

原始版本的ShuffleNet的结构如下:(为了保证参数量基本一致,当使用不同group时作者调整了feature map的数量)

【转】ShuffleNet_第3张图片

不同配置下的网络性能对比图:

【转】ShuffleNet_第4张图片

  • “s x”表示feature map的channels数量与原始结构的比例;
  • arch2: 将stage3中的两个单元移除,同时增加整体的网络宽度。对于小网络,feture map的宽度至关重要。

4. 实验效果

下面给出ShuffleNet 同之前一些网络的对比效果:

【转】ShuffleNet_第5张图片

整体上来看,相比Xception和Mobilenet,ShuffleNet都获得了性能上的提升,至于速度带来的提升则不是很明显。 毕竟,ShufflleNet的主要改进就只是增强了全局信息的流通。


你可能感兴趣的:(Deep,Learning)