ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices 论文笔记

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

论文链接: https://arxiv.org/abs/1707.01083

一、 Problem Statement

提出一个适用于移动设备的backbone,shufflnet。

二、 Direction

提出了两个操作:

  1. pointwise group convolution
  2. channel shuffle

三、 Method

1. Channel Shuffle for Group Convolutions

作者认为mobilenet,Xception,和ResNeXt中的pointwsie convolution,也就是1x1的卷积计算量大。为了解决这个问题,作者使用了pointwise group convolution来降低1x1卷积的计算复杂度。

具体可以看下面的图示:

在这里插入图片描述

可以知道,group convolutions的堆叠有一个副作用就是:某个通道的输出仅来自输入通道的一小部分。某个group的输出只与group的输入有关。这种特性阻碍了通道组之间的信息流,削弱了representation。

所以如果可以使得group convolution获取不同group的输入数据,这样输入和输出的通道就会完全相连。所以提出了channel shuffle的操作。如上图所示,假设一个卷积层有g个groups,其通道数为 g × n g \times n g×n。我们首先把输出通道的维度变为 ( g , n ) (g,n) (g,n),然后换位,将其展平,作为下一层的输入。

2. ShuffleNet Unit

作者基于ResNet,进行了改动,如下所示:
在这里插入图片描述

对于没有stride的shuffleNet:

  1. 对于3x3卷积层,作者使用了和Xception一样的3x3 Depthwise convolution。
  2. 用pointwise group convolution和 channel shuffle操作替换了第一个1x1卷积。
  3. 后面的一个pointwise group convolution是为了恢复维度,匹配shortcut的连接。

对于有stirde的shuffleNet:

  1. 添加了3x3 average pooling。
  2. 把element-wise addition 替换成了 channel concatenation。

尽管深度卷积通常具有很低的理论复杂度,但作者发现在低功耗移动设备上很难有效地实现,这可能是因为与其他密集运算相比,计算/内存访问比较差,因此也只是在bottleneck中使用了depthwise convolution 来减少开销。

3. ShuffleNet Architecture

在这里插入图片描述

四、 Conclusion

提出了pointwise group convolution和channel shuffle operation,减少了只是使用Pointwise convolution的计算复杂度,适用于移动设备或者嵌入式设备。

五、 Reference

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值