深度可分离卷积(Depthwise Separable Convolution)和分组卷积(Group Convolution)的理解,相互关系及PyTorch实现

1. 分组卷积(Group Convolution)

分组卷积最早出现在AlexNet中,如下图所示。在CNN发展初期,GPU资源不足以满足训练任务的要求,因此,Hinton采用了多GPU训练的策略,每个GPU完成一部分卷积,最后把多个GPU的卷积结果进行融合。AlexNet结构图
接下来回顾一下常规卷积是怎样进行的,假设输入的特征图(Tensor)的shape为 C i n × H × W C_{in} \times H \times W Cin×H×W,输出通道数为 C o u t C_{out} Cout,那么,卷积过程中就会有 C o u t C_{out} Cout个卷积核(Convolution Kernel),每个卷积核的尺寸为 C i n × K × K C_{in} \times K \times K Cin×K×K,其中, K K K为卷积核的大小,换句话说,就是每个卷积核会和输入特征图的每个通道都进行卷积计算,每个卷积核的计算结果是各通道卷积结果的和。文字可能枯燥,下图是是常规卷积的示意图。
常规卷积示意图
可以很明显看出,常规卷积的计算结果中,特征图的每个通道和输入特征图的所有通道都有关。下图是分组卷积的示意图,差别就非常明显了。分组卷积的输出特征图的每个通道,只和输入特征图的一部分通道有关,而这部分通道,就是一个分组(Group)。依旧假设输入特征图的尺寸为 C i n × H × W C_{in} \times H \times W Cin×H×W,分为3组进行分组卷积,那么,对于每一组,输出特征图的通道数都是 C o u t / 3 C_{out}/3 Cout/3,卷积核大小变为 C i n × K × K C_{in} \times K \times K Cin×K×K,最后只需要将各个分组的计算结果按照通道进行连接(Cat)即可。

分组卷积可以很大程度上减少卷积所需的参数量,上述例子中,常规卷积所需的参数量(仅考虑卷积权重,不考虑偏置)为:
C

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值