ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

depthwise separable convolution:depthwise convolution+ pointwise convolution。
depthwise convolution:比如输入是AXA大小,M通道,输出大小是BXB,N通道。比如卷积核大小为KXK。depthwise convolution就是:使用M个KXK大小的卷积核,分别对输入进行卷积,与常规的卷积不同的是,没有对卷积完的结果进行累加,而是直接作为M个输出。
pointwise convolution:使用1X1大小的卷积核进行常规卷积。

一些大的架构如Xception 和ResNeXt,在极度小的网络上效率非常低(由于1 × 1卷积)。
channel shuffle operation:为了解决由group convolutions 导致的side effects。方法如图1。
group convolution通过保证每个卷积只在对应的输入通道上操作,大量的减少了计算。每个通道是一个组。如果每个组之间不交流,最后的特征图表达能力较差,所以不同组特征图之间的”交流”很重要。如图1。

这里写图片描述

之前减少网络参数的办法一般是先通过depthwise,然后在加1X1卷积。虽然大量减少计算,但是1X1卷积也还可以继续优化,方法就是channel sparse connections。
pointwise group convolutions:通过对1X1的卷积改为group convolutions操作,来减少计算量。如图2。
结合残差模块的ShuffleNet模块单元如图2。

这里写图片描述

将原始的1X1的卷积变为group convolutions,然后进行shuffle,在加一个3X3的depthwise separable convolution操作。图2中(c)改变了两处,1,在短路径增加一个3 × 3 average pooling;2,将最后叠加改为拼接。
结论就是,ShuffleNet可以使用更加广泛的特征图,而这个对于小网络来说非常重要,因为小网络通道个数较小,难以处理信息。
Network Architecture
ShuffleNet如表1。

这里写图片描述
表中,如果对应的stride为2,表示使用图2中c模块;如果stride为1,表示使用图2中模块b。ShuffleNet模块中参数通过表1中output channels列计算得到。
总结就是:在保证精确度的前提下,通过减少计算量(pointwise group convolutional和depthwise separable convolutional)来加快速度。由于group convolutional会出现side effects,通过channel shuffle来消除。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值