Group Convolution

Group convolution: 群卷积。

群卷积最早出现在alexnet中,作者认为group conv的方式能够增加filter之间的对角相关性,而且能够减少训练参数,不容易过拟合,类似于正则效果。

假设上一层的输出feature mao有N个,也就是N个channel(卷积核)。再假设群卷积的群数目M。那么该卷积层的操作就是,先将channel分为M份,每个group对应N/M个channel。各个group卷积完成后将输出concat在一起,作为这一层的输出channel。

比如下图是一个正常的、没有分组的卷积层结构。下图用三维图形展示了CNN的结构,一个filter对应一个输出channel。随着网络层数加深,通道数急剧增加,而空间维度随之减少,因为卷积层的卷积核越来越多,随着池化操作特征图越来越小。所以在深层网络中channel的重要性越来越大。

Group Convolution_第1张图片

下图是一个群卷积的CNN结构。filters呗分成了两个froup。每一个group都只有原来一般的feature map

Group Convolution_第2张图片

其实使用group convolution会导致信息不流畅,也就是输出的feature map没有包含所有输入feature map的信息。在mobilenet中,depth-wise convolution也会导致这个问题,在mobilenet中使用point-wise (逐点卷积也就是分离卷积)来解决这个问题。shufflenet中作者使用channel shuffle来 解决这个问题。参考https://blog.csdn.net/qq_21997625/article/details/88240828

下图为何凯明的group normalization中的图,大家可以立体理解一下

Group Convolution_第3张图片

参考:

https://blog.yani.io/filter-group-tutorial/

https://blog.csdn.net/hhy_csdn/article/details/80030468

https://blog.csdn.net/qq_21997625/article/details/88239165

你可能感兴趣的:(#,深度学习Deep,learning)