分组卷积——Group convolution
常规卷积
如果输入feature map尺寸为C∗H∗W,卷积核有N个,输出feature map与卷积核的数量相同也是N,每个卷积核的尺寸为C∗K∗K,N个卷积核的总参数量为N∗C∗K∗K,输入map与输出map的连接方式如上图左所示。
分组卷积
Group Convolution分组卷积,最早见于AlexNet——2012年Imagenet的冠军方法,Group Convolution被用来切分网络,使其在2个GPU上并行运行,AlexNet网络结构如下
Group Convolution顾名思义,则是对输入feature map进行分组,然后每组分别卷积。假设输入feature map的尺寸仍为C∗H∗W,输出feature map的数量为N个,如果设定要分成G个groups,则每组的输入feature map数量为$\frac{C}{G}$,每组的输出feature map数量为$\frac{N}{G}$,每个卷积核的尺寸为$\frac{C}{G}∗K∗K$,卷积核的总数仍为N个,每组的卷积核数量为$\frac{N}{G}$,卷积核只与其同组的输入map进行卷积,卷积核的总参数量为$N∗\frac{C}{G}∗K∗K$,可见,总参数量减少为原来的$\frac{1}{G}$,其连接方式如上图右所示,group1输出map数为2,有2个卷积核,每个卷积核的channel数为4,与group1的输入map的channel数相同,卷积核只与同组的输入map卷积,而不与其他组的输入map卷积。
用途
- 减少参数量
分成G组,则该层的参数量减少为原来的$\frac{1}{G}$ - Structured Sparss
每个卷积核的尺寸由$C∗K∗K$变为$\frac{C}{G}∗K∗K$,可以将其余$(C−\frac{C}{G})∗K∗K$的参数视为0,有时甚至可以在减少参数量的同时获得更好的效果(相当于正则)。 - Depthwise Convolution
当分组数量等于输入map数量,输出map数量也等于输入map数量,即$G=N=C$、N个卷积核每个尺寸为$1∗K∗K$时,Group Convolution就成了Depthwise Convolution - Global Depthwise Convolution(GDC)
如果分组数$G=N=C$,同时卷积核的尺寸与输入map的尺寸相同,即$K=H=W$,则输出map为$C∗1∗1$即长度为C的向量,此时称之为Global Depthwise Convolution(GDC),可以看成是全局加权池化,与 Global Average Pooling(GAP) 的不同之处在于,GDC 给每个位置赋予了可学习的权重(对于已对齐的图像这很有效,比如人脸,中心位置和边界位置的权重自然应该不同),而GAP每个位置的权重相同,全局取个平均。