一、Depth-wise Convolution
普通卷积操作示意图:
Depth-wise 卷积操作示意图:
二、Point-wise Convolution
该卷积操作就是把卷积核的大小设置为1x1:
三、Depth-wise Separable Convolution
该卷积操作是把Depth-wise Convolution和Point-wise Convolution结合,能产生和普通卷积操作一样的效果:
该操作产生的结果和普通卷积的一样,且在大部分情况下能够显著降低参数量:
- 情况一:
假设初始特征图为HxWxC大小,经过普通卷积3x3xC大小的卷积核,得到HxWx1的最终特征图,此时普通卷积的参数量为3x3xC;
那如果用Depth-wise Separable Convolution产生HxWx1大小的最终特征图,就要先经过Depth-wise Convolution,卷积核大小为3x3x1,一共C个;再经过Point-wise Convolution,卷积核大小为1x1xC,这样一来参数量为3x3xC + 1x1xC
这样下来Depth-wise Separable Convolution所需参数量大于普通卷积。
- 情况二:
一般情况下,假设我们最终得到的特征图大小为HxWxN,那么普通卷积需要N个3x3xC大小的卷积核;
而Depth-wise Separable Convolution首先经过Depth-wise Convolution,需要C个3x3x1大小的卷积核;再经过Point-wise Convolution,此时需要的卷积核大小为1x1xN,总参数量为3x3xC + 1x1xN。
可以发现如果N过大的话,用Depth-wise Separable Convolution所需参数量远小于普通卷积,且能达到同样效果。