深度学习之群卷积(Group Convolution)

最近在看MSRA的王井东研究员的《Interleaved Group Convolutions for Deep Neural Networks》。论文中多次提到群卷积这个概念,所以特地学习了一下群卷积。

群卷积最早出现于AlexNet中。是为了解决显存不够的问题,将网络部署在两张GTX 580显卡上训练,Alex认为group conv的方式能够增加 filter之间的对角相关性,而且能够减少训练参数,不容易过拟合,这类似于正则的效果。

我们假设上一层的输出feature map有N个,即通道数channel=N,也就是说上一层有N个卷积核。再假设群卷积的群数目M。那么该群卷积层的操作就是,先将channel分成M份。每一个group对应N/Mchannel,与之独立连接。然后各个group卷积完成后将输出叠在一起(concatenate),作为这一层的输出channel

下图是AlexNet的结构,可以看出网络分了上下两部分。
这里写图片描述
下图是将上下两部分的卷积核可视化的结果。
这里写图片描述

AlexNet conv1 filter separation: as noted by the authors, filter groups appear to structure learned filters into two distinct groups, black-and-white and colour filters.
第1卷积层的可视化结果显示,经过学习,1个group成了黑白滤波器,另一个似乎是彩色滤波器。

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

这里写图片描述
下图则是一个群卷积的CNN结构。filters被分成了两个group。每一个group都只有原来一半的feature map。
这里写图片描述

参考:A Tutorial on Filter Groups (Grouped Convolution)

猜你喜欢

转载自blog.csdn.net/hhy_csdn/article/details/80030468