ShuffleNet (An Extremely Efficient Convolutional Neural Network for Mobile Devices) —— Face++
shuffle 具体来说是 channel shuffle,是将各部分的 feature map 的 channel 进行有序的打乱,构成新的 feature map,以解决 group convolution 带来的 信息流通不畅 问题。(MobileNet 是用 point-wise convolution 解决的这个问题)
shuffle 不是什么网络都需要用的,是有一个前提,就是采用了 group convolution,才有可能需要 shuffle!!为什么说是有可能呢?因为可以用 point-wise convolution 来解决这个问题。
ShuffleNet将输入的group进行打散,从而保证每个卷积核的感受野能够分散到不同group的输入中,增加了模型的学习能力。
1.1 设计思想
卷积中的group操作能够大大减少卷积操作的计算次数,而这一改动带来了速度增益和性能维持在MobileNet等文章中也得到了验证。然而group操作所带来的另一个问题是:特定的滤波器仅对特定通道的输入进行作用,这就阻碍了通道之间的信息流传递,group数量越多,可以编码的信息就越丰富,但每个group的输入通道数量减少,因此可能造成单个卷积滤波器的退化,在一定程度上削弱了网络了表达能力。
1.2 网络架构
创新点:
-
a. 提出了一个类似于ResNet的bottleneck单元
图 (a):是一个带有 depth-wise convolution 的 bottleneck unit;
图 (b):作者在 (a) 的基础上进行变化,对 11 conv 换成 11 Gconv,并在第一个 1*1 Gconv 之后增加一个 channel shuffle 操作;
图 (c): 在旁路增加了 AVG pool,目的是为了减小 feature map 的分辨率;因为分辨率小了,于是乎最后不采用 Add,而是 concat,从而「弥补」了分辨率减小而带来的信息损失。 -
b. 提出用group操作替代1x1卷积,会得到更好的分类性能
在MobileNet中提过,1x1卷积的操作占据了约95%的计算量,所以作者将1x1也更改为group卷积,使得相比MobileNet的计算量大大减少。 -
c. 核心的shuffle操作将不同group中的通道进行打散,从而保证不同输入通道之间的信息传递。
ShuffleNet小结
- 与 MobileNet 一样采用了 depth-wise convolution,但是针对 depth-wise convolution 带来的副作用——「信息流通不畅」,ShuffleNet 采用了一个 channel shuffle 操作来解决。
- 在网络拓扑方面,ShuffleNet 采用的是 resnet 的思想,而 mobielnet 采用的是 VGG 的思想,2.1 SqueezeNet 也是采用 VGG 的堆叠思想
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">