ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

channel shuffle

文章对CNN进行改进,采用pointwise convolution 和 channel shuffle,保持精度的同时,减少了计算量,加快了计算速度.

在ImageNet classification and MS COCO上的实验上取得了比top1,即mobile net,错误率减小6.7%.相比AlexNet,计算速度提高13倍,同时精度基本不变.

CNN网络中,为了减小计算量,核心算法,如Xception(文献3), ResNeXt(文献37),引入了depthwise separable convolutions 或者 group convolutions,来代替标准的卷积层,以减小计算量.然而, depthwise separable convolutions 和group convolutions这两个结构都需要 1×1 卷积,而 1×1 卷积需要相当的复杂性.例如,ResNeXt中,近 3×3 层采用了 group convolutions,这样对于每个residual unit,e pointwise convolutions占用来93.4%的乘法加法计算.在tinny network中,pointwise convolutions导致了有限的channels数量,以减小复杂度,这可能减小精度.

为了解决这个问题,一种直接的方法是采用channel sparse connections.例如,group convolutions,每个卷积操作只作用于输入channel group,这样做的好处是减小了计算量,但是对于每一个特定的输出,其只来源于一部分的input channels,如图1(a)所示, 分三个group对输入进行特征提取,得到输出output,每组的output只与本组的卷积特征输出相关,而已其他组的特征无关,这阻塞了不同groups之间的信息传递,削弱了特征.如果我们运行group convolutions能够获得不同组的输入,如图1(b)所示,那么既可以完整地连接输入和输出.对于来自前一个group layer的feature map,可以将这些feature map分为多个不同的subgroup,将这些subgroup输入到下一层的group中去,如图1(c)所示.feature map的channel采用channel shuffle操作,分为多个组,再将这些特征输入到下一层.例如,图1(c)中,GConv1层包含3个groups,每个groups输出channels为3,这样得到9个feauture map,将这9个feaure map采用channel shuffle 操作打乱,再分为3组,输入到GConv2层.

这里写图片描述

即使两个卷积层有不同数量的groups,也可以进行channel shuffle操作,同时channel shuffle是可微的,因此可以进行端到端训练.

ShuffleNet Unit

利用channel shuffle操作,本文提出例一种新的ShuffleNet结构,适用于小的网络的设计.例如下面的网络结构:

这里写图片描述
图2(a)为一个residual block,在residual结构中,引入 3×3 depthwise convolution.2(b)(c)为将(a)的第 1×1 卷积层 pointwise group convolution代替,并在其后进行channel shuffle操作,组成一个SuffleNet Unit.

ShuffleNet architecture

在ShuffleNet Unit基础上,文章试验了一个完整的ShuffleNet architecture,参数如下:
这里写图片描述

试验效果

滤波器个数对精度的影响:

这里写图片描述

“ShuffleNet 1×”为Table 1 的参数结构,”ShuffleNet s×”为”ShuffleNet 1×”滤波器的s倍.

有无Channel Shuffle试验对比:

这里写图片描述

与其他网络的分类精度对比:

这里写图片描述

这里写图片描述

在MS COCO 物体检测上的效果:

这里写图片描述

移动端计算速度:

这里写图片描述

代码实现

ShuffleNet caffe代码:https://github.com/farmingyard/ShuffleNet

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值