Page 10 - 《软件学报》2020年第9期
P. 10
葛道辉 等:轻量级神经网络架构综述 2631
D × k D × k M × D × F D + F M × N D× F × D F = 1 + 1
×
D × k D × k M × N D × F D F N D 2 k .
[1]
[8]
计算量大致变为原来的 1/9 至 1/8.最终,MobileNet 与 VGG-16 相比:在准确率接近一致的情况下,模型大
小是 VGG-16 的 1/32,计算消耗量是其 1/27.
一般常用的卷积核大小为 3×3,即,一个深度可分离卷积的 FLOPs 为 3×3× M×H×W+1×1×M×N×H×W,M 为输
入特征通道数,H,W 为输入特征高和宽,N 为当前层卷积核数量.一般来说 N 要远大于 9,此时,深度卷积的主要计
[9]
算量集中在 1×1 的逐点卷积上.为解决这个问题,ShuffleNet 提出了 Group 逐点卷积,将逐点卷积进行分组卷积
操作,以降低在逐点卷积操作方面的计算消耗,如图 4 所示.图 4(a)为一般分组卷积,造成分组之间信息无法流通;
图 4(b)和图 4(c)为通道混洗(channel shuffle)操作.
← -- --Channels-- -- → ← -- --Channels-- -- → ← -- --Channels-- -- →
Input
Gconv1
Feature
Gconv2
Output
(a) (b) (c)
Fig.4
图 4
[9]
ShuffleNet 首先将输入通道分组,在每个组中进行单独的卷积运算.如果单纯地堆叠分组卷积操作,会造成
各个组之间的信息无法流通,影响网络的表达能力.为了让分组卷积能够得到其他分组产生的特征,ShuffleNet [9]
提出了混洗(shuffle)操作,将来自不同组的特征重新进行排列,使得新的分组中包含来自之前各个组的特征,保
证了各个组之间的信息流通.
[9]
ShuffleNet 利用混洗操作和分组逐点卷积(group pointwise convolution)组合成 ShuffleNet Unit.当
输入特征大小为 H×W×C 1 、Bottlenect 的通道数为 C 2 时,ResNet Unit 需要 2 HW C× × × 1 × C + 2 9 H W C× × × 2 2 的
2 HW C× × × × C
9
FLOPs;ResNeXt [19] 需要 2×H×W×C 1 ×C 2 +9×H×W×C 2 的 FLOPs;而 ShuffleNet Unit 只需要 1 2 +×
g
H×W×C 2 的 FLOPs,进一步减少了计算量(如图 5 所示).
1×1 Conv 1×1 GConv
BN ReLU BN ReLU
Channel
shuffle
3×3 DWConv
3×3 DWConv
BN ReLU
BN ReLU
1×1 Conv 1×1 GConv
BN BN
Add Add
ReLU ReLU
(a) 深度分离卷积 (b) ShuffleNet unit
Fig.5
图 5