Loading...

参考链接


前言

对于移动设备,计算资源比较受限,而卷积操作的计算量又很大,于是深度可分离卷积应运而生。


常规卷积

输入: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张特征图,深度可分离卷积的参数个数是常规卷积的约三分之一。因此,在参数量相同的前提下,采用深度可分离卷积的神经网络层数可以做的更深。