参考视频 ResNext相当于ResNet的升级结构,只是更新了block结构。
(一)普通卷积与组卷积
1、假设输入的特征矩阵的channel=4,那么对于每一个卷积核,它的channel要与输入特征矩阵的channel保持一致,也=4;假设输出的特征矩阵的channel=n,那么意味着我们要使用n个卷积核进行处理。 设每个卷积核的高度和宽度都是k,输入特征矩阵的channel是Cin,因为输出特征矩阵的channel=n,因此有n个卷积核。每个卷积核需要的参数个数是:k X k X Cin 普通卷积所需要的参数个数:k X k X Cin X n 2、假设输入的特征矩阵的channel=4,那么对于每一个卷积核,它的channel要与输入特征矩阵的channel保持一致,也=2(因为将卷积核划分成两个组);假设输出的特征矩阵的channel=n,那么意味着我们要使用n个卷积核进行处理。(因为将卷积核划分成两组,那么每组channel=n/2) 设每个卷积核的高度和宽度都是k,输入特征矩阵的channel是Cin,将输入特征矩阵分为g组。因为输出特征矩阵的channel=n,因此每个组的每个卷积核需要的参数个数是:k X k X Cin/g 而每个组需要n/g个卷积核,因此每个组的所有卷积核需要的参数个数是: k X k X Cin/g X n/g 因为共划分成了g个组,那么组卷积所需要的参数个数:k X k X Cin/g X n/g X g 相当于对我们输入特征矩阵的每一个channel分配了一个channel为1的卷积核进行卷积。
(二)ResNet与ResNext对比
下面三组block模块,它们在数学计算上完全等价。
左图是ResNet,右图是ResNext,ResNext只是将ResNet的block替换成了组卷积,其准确率就更加提升了。(注意:ResNext只适合与深度>=3的网络)
|