ShuffleNet
ShuffleNet使用是一种计算效率极高的CNN架构,它是专门为计算能力非常有限的移动设备设计的;
通过逐点分组卷积(Pointwise Group Convolution)和通道洗牌(Channel Shuffle)两种新运算,在保持精度的同时大大降低了计算成本。
原论文:ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
ShuffleNet详解
背景介绍
在最先进的基础网络中,像ResNet在非常小的网络中效率会降低,因为密集的1*1卷积代价很高;基于此作者提出了Pointwise group convolution以减少计算复杂度;又为克制pointwise group convolution带来的副作用,提出了channel shuffle的操作,用于实现信息在特征通道之间的流动。
Group Convolution
分组卷积的概念首先是AlexNet中引入的,用于将模型分布到两块GPU上;
在Xception和MobileNet中使用的深度可分离卷积(depthwise separable convolution)也都印证了它的有效性;
在小型网络中,昂贵的逐点卷积会导致满足复杂度约束的通道数量有限,从而验证的影响精度;
最直接的解决方案:采用通道稀疏连接(channel sparse connections),例如分组卷积可以大大降低计算成本;
这样会出现一个问题:某个通道的输出只能来自一小部分输入通道,这样阻止了通道之间的信息流,也就削弱了神经网络表达能力;
作者进一步将分组卷积和深度可分离卷积推广为一种新的形式--利用通道洗牌操作(Channel Shuffle Operation)
Channel Shuffle
通过通道洗牌允许分组卷积从不同的组中获取输入数据,从而实现输入通道和输出通道相关联。