分组卷积介绍
分组卷积(Group Convolution)最早出现在AlexNet网络中,分组卷积被用来切分网络,使其能在2个GPU上并行运行。
接下来我们看下面的图来分析分组卷积和普通卷积的区别:
普通卷积进行运算的时候,如果输入feature map尺寸是C×H×WC\times H \times WC×H×W,卷积核有N个,那么输出的feature map与卷积核的数量相同也是N个,每个卷积核的尺寸为C×K×KC\times K \times KC×K×K,N个卷积核的总参数量为N×C×K×KN \times C \times K \times KN×C×K×K。
分组卷积的主要对输入的feature map进行分组,然后每组分别进行卷积。如果输入feature map尺寸是C×H×WC\times H \times WC×H×W,输出feature map的数量为N个,如果我们设定要分成G个group,则每组的输入feature map数量为CG\frac{C}{G}GC,则每组的输出feature map数量为NG\frac{N}{G}GN,每个卷积核的尺寸为CG×K×K\frac{C}{G} \times K \times KGC×K×K,卷积核的总数仍为N个,每组的卷积核数量为NG\frac{N}{G}GN,卷积核只与其同组的输入map进行卷积,卷积核的总参数量为N×CG×K×KN \times \frac{C}{G} \times K \times KN×GC×K×K,易得总的参数量减少为原来的1G\frac{1}{G}G1。
分组卷积的作用
- 分组卷积可以减少参数量。
- 分组卷积可以看成是稀疏操作,有时可以在较少参数量的情况下获得更好的效果(相当于正则化操作)。
- 当分组数量等于输入feature map数量时,输出feature map数量也等于输入feature map数量,这时分组卷积就成了Depthwise卷积,可以使参数量进一步缩减。