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
   5   6   7   8   9   10   11   12   13   14   15