深度可分离卷积与普通卷积的区别及原理
1. 普通卷积
普通卷积使用一个滤波器在输入特征图的所有通道上滑动,同时对所有通道进行加权求和,生成一个输出通道。如果有多个滤波器,则生成多个输出通道。假设上一层的特征图有 n 个通道,每个通道是一个二维的图像(比如灰度图)。当我们用一个滤波器进行卷积操作时,这个滤波器实际上包含了 n 个卷积核(kernel),每个卷积核对应上一层的一个通道。具体步骤如下:
- 每个卷积核分别与上一层对应通道的特征图进行卷积操作,得到 n 个卷积结果。
- 将这 n 个卷积结果相加,得到一个二维的特征图,这就是下一层的一个通道。
如果需要在下一层得到 m 个通道的特征图,就需要 m 个这样的滤波器,每个滤波器都会生成一个通道的特征图。
2. 深度可分离卷积
深度可分离卷积(Depthwise Separable Convolution),其实只对常规卷积做了一个很小的改动,但是带来的确实参数量的下降。它是一种优化的卷积操作,它广泛应用于轻量级深度学习模型中。它将标准卷积操作分解为两个独立的步骤:深度卷积(Depthwise Convolution, DW)和逐点卷积(Pointwise Convolution, PW)。
-
深度卷积:对输入特征图的每个通道分别应用一个滤波器进行卷积操作,不涉及通道间的交互,仅提取单通道内的局部特征。
-
逐点卷积:使用 1×1 的滤波器对深度卷积后的特征图进行线性组合,跨通道融合特征,以生成新的特征表示。
完整流程图如下图所示。