首页 > 编程知识 正文

Group Convolution 分组卷积

时间:2023-05-04 00:18:55 阅读:286496 作者:3312

Group Convolution分组卷积
最早见于AlexNet——2012年Imagenet的冠军方法,Group Convolution被用来切分网络,使其在2个GPU上并行运行,AlexNet网络结构如下:

Group Convolution 原理

如果输入feature map尺寸为 C ∗ H ∗ W C*H*W C∗H∗W,卷积核有N个,输出feature map与卷积核的数量相同也是N,每个卷积核的尺寸为 C ∗ K ∗ K C*K*K C∗K∗K,N个卷积核的总参数量为 N ∗ C ∗ K ∗ K N*C*K*K N∗C∗K∗K。如下图所示,传统卷积方法和分组卷积方法。

Group Convolution,则是对输入feature map进行分组,然后每组分别卷积。其实也就是,原本应该是 C ∗ H ∗ W C*H*W C∗H∗W 的图片,用N个传统的卷积核 C ∗ K ∗ K C*K*K C∗K∗K,就可以生成 N ∗ H ∗ W N*H*W N∗H∗W(假设经过池化,图片尺寸不变)这样其实,是一个通道为C来进行整体卷积生成一个图片。而分组卷积,是一个通道为 C G frac{C}{G} GC​来进行整体卷积生成一个图片。
具体来说就是,假设输入feature map的尺寸仍为 C ∗ H ∗ W C*H*W C∗H∗W,输出feature map的数量为N个,如果设定要分成G个groups,则每组的输入feature map数量为 C G frac{C}{G} GC​,每组的输出feature map数量为 N G frac{N}{G} GN​,每个卷积核的尺寸为 C G ∗ K ∗ K frac{C}{G}*K*K GC​∗K∗K,卷积核的总数仍为N个,每组的卷积核数量为 N G frac{N}{G} GN​,卷积核只与其同组的输入map进行卷积,卷积核的总参数量为 N ∗ C G ∗ K ∗ K N∗frac{C}{G}*K*K N∗GC​∗K∗K,可见,总参数量减少为原来的 1 G frac{1}{G} G1​。

Group Convolution的用途

减少参数量,分成G组,则该层的参数量减少为原来的 1 G frac{1}{G} G1​Group Convolution可以看成是structured sparse,每个卷积核的尺寸由 C ∗ K ∗ K C*K*K C∗K∗K 变为 C G ∗ K ∗ K frac{C}{G}*K*K GC​∗K∗K,可以将其余 ( C − C G ) ∗ K ∗ K (C−frac{C}{G})*K*K (C−GC​)∗K∗K的参数视为0,有时甚至可以在减少参数量的同时获得更好的效果(相当于正则)。

参考文献
https://www.cnblogs.com/shine-lee/p/10243114.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。