分组卷积(Group Convolution)最早出现在AlexNet网络中,分组卷积被用来切分网络,使其能在2个GPU上并行运行。
接下来我们看下面的图来分析分组卷积和普通卷积的区别:
普通卷积进行运算的时候,如果输入feature map尺寸是 C × H × W C\times H \times W C×H×W,卷积核有N个,那么输出的feature map与卷积核的数量相同也是N个,每个卷积核的尺寸为 C × K × K C\times K \times K C×K×K,N个卷积核的总参数量为 N × C × K × K N \times C \times K \times K N×C×K×K。
分组卷积的主要对输入的feature map进行分组,然后每组分别进行卷积。如果输入feature map尺寸是 C × H × W C\times H \times W C×H×W,输出feature map的数量为N个,如果我们设定要分成G个group,则每组的输入feature map数量为 C G \frac{C}{G} GC,则每组的输出feature map数量为 N G \frac{N}{G} GN,每个卷积核的尺寸为 C G × K × K \frac{C}{G} \times K \times K GC×K×K,卷积核的总数仍为N个,每组的卷积核数量为 N G \frac{N}{G} GN,卷积核只与其同组的输入map进行卷积,卷积核的总参数量为 N × C G × K × K N \times \frac{C}{G} \times K \times K N×GC×K×K,易得总的参数量减少为原来的 1 G \frac{1}{G} G1。