分组卷积(Group Convolution)
分组卷积在ResNext中用到了
首先必须明确:
常规卷积(Convolution)的参数量是:
K*K*C_in*n
K是卷积核大小,C_in是input的channel数,n是卷积核个数(output的channel数)
分组卷积的参数量是:
K*K*C_in*n*1/g
K是卷积核大小,C_in是input的channel数,n是卷积核个数(output的channel数),g是分组数
分组卷积,输出特征图通道数不需要与输入通道数相同
pytorch的nn.Conv2d中的groups参数代表需要分的组数量,默认值为1(即常规卷积)
深度可分离卷积Depthwise Separable Conv等价于
DW(Depthwise Convolution)卷积+PW(Pointwise Conv) 卷积
DW卷积也叫做可分离卷积,DW+PW的组合在MobileNet中使用了
depthwise convolution: 卷积是在二维平面进行的,一个卷积核对应一个通道,输出通道数等于输入通道数
DW卷积的参数量是:
K*K*C_in (此时C_in = n)
K是卷积核大小,C_in是input的channel数,DW卷积中,卷积核个数与input的channel数相同
PW卷积的参数量是:
1*1*C_in*n
PW卷积的卷积核为1*1大小,C_in是input的channel数,n是卷积核个数(output的channel数)
总结
- 分组卷积的参数量是常规卷积(Convolution)参数量的1/g, 其中g是分组数
- DW卷积的参数量是常规卷积(Convolution)参数量的1/n, 其中n是卷积核个数
- 当分组卷积中的g=C_in, n=C_in时,DW==分组卷积