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。

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

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

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

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

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