参考链接
前言
对于移动设备,计算资源比较受限,而卷积操作的计算量又很大,于是深度可分离卷积应运而生。
常规卷积
输入:128×128×3
卷积核:3x3x4
卷积层共有4个Filter,每个Filter包含3个Kernel,每个Kernel的大小为3×3。因此卷积层的参数数量可以用如下公式来计算:
N_std = 4 × 3 × 3 × 3 = 108
深度可分离卷积
深度可分离卷积是将一个完整的卷积运算分解为两步进行:
- Depthwise卷积
- Pointwise卷积
Depthwise卷积
不同于常规卷积操作,Depthwise卷积的一个卷积核负责一个通道,所以一个三通道的图像经过运算后生成了3个特征图,如下图所示:
其中一个Filter只包含一个大小为3×3的Kernel,卷积部分的参数个数计算如下:
N_depthwise = 3 × 3 × 3 = 27
Depthwise卷积的缺点:完成后的特征图数量与输入层的通道数相同,无法扩展特征图数目。而且这种运算对输入层的每个通道独立进行卷积运算,没有有效地利用不同通道在相同空间位置上的特征信息。
因此需要Pointwise卷积来将这些特征图进行组合生成新的特征图
Pointwise卷积
Pointwise卷积的运算与常规卷积运算类似,它的卷积核的尺寸为 1×1×M,M为上一层的通道数。这里的卷积运算会将上一步的特征图在通道方向上进行加权组合,生成新的特征图,有几个卷积核就有几个输出特征图。
由于采用的是1×1卷积的方式,此步中卷积涉及到的参数个数可以计算为:
N_pointwise = 1 × 1 × 3 × 4 = 12
参数对比及优势
相同的输入,同样是得到4张特征图,深度可分离卷积的参数个数是常规卷积的约三分之一。因此,在参数量相同的前提下,采用深度可分离卷积的神经网络层数可以做的更深。