Group Convolution分组卷积,以及Depthwise Convolution和Global Depthwise Convolution

博客:blog.shinelee.me | 博客园 | CSDN

文章目录

  • 写在前面
  • Convolution VS Group Convolution
  • Group Convolution的用途
  • 参考

写在前面

Group Convolution分组卷积,最早见于AlexNet——2012年Imagenet的冠军方法,Group Convolution被用来切分网络,使其在2个GPU上并行运行,AlexNet网络结构如下:

Group Convolution分组卷积,以及Depthwise Convolution和Global Depthwise Convolution_第1张图片

Convolution VS Group Convolution

在介绍Group Convolution前,先回顾下常规卷积是怎么做的,具体可以参见博文《卷积神经网络之卷积计算、作用与思想》。如果输入feature map尺寸为 C ∗ H ∗ W C*H*W CHW,卷积核有 N N N个,输出feature map与卷积核的数量相同也是 N N N,每个卷积核的尺寸为 C ∗ K ∗ K C*K*K CKK N N N个卷积核的总参数量为 N ∗ C ∗ K ∗ K N*C*K*K NCKK,输入map与输出map的连接方式如下图左所示,图片来自链接:

Group Convolution分组卷积,以及Depthwise Convolution和Global Depthwise Convolution_第2张图片

Group Convolution顾名思义,则是对输入feature map进行分组,然后每组分别卷积。假设输入feature map的尺寸仍为 C ∗ H ∗ W C*H*W CHW,输出feature map的数量为 N N N个,如果设定要分成 G G G个groups,则每组的输入feature map数量为 C G \frac{C}{G} GC,每组的输出feature map数量为 N G \frac{N}{G} GN,每个卷积核的尺寸为 C G ∗ K ∗ K \frac{C}{G} * K * K GCKK,卷积核的总数仍为 N N N个,每组的卷积核数量为 N G \frac{N}{G} GN,卷积核只与其同组的输入map进行卷积,卷积核的总参数量为 N ∗ C G ∗ K ∗ K N * \frac{C}{G} *K*K NGCKK,可见,总参数量减少为原来的 1 G \frac{1}{G} G1,其连接方式如上图右所示,group1输出map数为2,有2个卷积核,每个卷积核的channel数为4,与group1的输入map的channel数相同,卷积核只与同组的输入map卷积,而不与其他组的输入map卷积。

Group Convolution的用途

  1. 减少参数量,分成 G G G组,则该层的参数量减少为原来的 1 G \frac{1}{G} G1
  2. Group Convolution可以看成是structured sparse,每个卷积核的尺寸由 C ∗ K ∗ K C*K*K CKK变为 C G ∗ K ∗ K \frac{C}{G}*K*K GCKK,可以将其余 ( C − C G ) ∗ K ∗ K (C- \frac{C}{G})*K*K (CGC)KK的参数视为0,有时甚至可以在减少参数量的同时获得更好的效果(相当于正则)。
  3. 当分组数量等于输入map数量,输出map数量也等于输入map数量,即 G = N = C G=N=C G=N=C N N N个卷积核每个尺寸为 1 ∗ K ∗ K 1*K*K 1KK时,Group Convolution就成了Depthwise Convolution,参见MobileNet和Xception等,参数量进一步缩减,如下图所示
    Group Convolution分组卷积,以及Depthwise Convolution和Global Depthwise Convolution_第3张图片
  4. 更进一步,如果分组数 G = N = C G=N=C G=N=C,同时卷积核的尺寸与输入map的尺寸相同,即 K = H = W K=H=W K=H=W,则输出map为 C ∗ 1 ∗ 1 C*1*1 C11即长度为 C C C的向量,此时称之为Global Depthwise Convolution(GDC),见MobileFaceNet,可以看成是全局加权池化,与 Global Average Pooling(GAP) 的不同之处在于,GDC 给每个位置赋予了可学习的权重(对于已对齐的图像这很有效,比如人脸,中心位置和边界位置的权重自然应该不同),而GAP每个位置的权重相同,全局取个平均,如下图所示:

Group Convolution分组卷积,以及Depthwise Convolution和Global Depthwise Convolution_第4张图片

以上。

参考

  • A Tutorial on Filter Groups (Grouped Convolution)
  • Interleaved Group Convolutions for Deep Neural Networks

你可能感兴趣的:(卷积神经网络)