首页 > 编程知识 正文

深度分离卷积 反卷积,深度可分解的卷积的计算量只有原来的多少

时间:2023-05-03 11:02:08 阅读:194821 作者:13

在计算资源受限制的移动端设备上,常规的卷积操作由于运算量大,经常难以满足实际运行速度的要求,这时,深度可分离卷积(Depthwise Separable Convolution)就排上了用场。深度可分离卷积是由Depthwise(DW)卷积与Pointwise(PW)卷积组成。该结构和常规卷积类似,可用来提取特征,但相比常规卷积,其参数量和运算成本较低。所以在一些轻量级网络中经常会用到此类结构,如MobileNet,ShuffleNet等。

常规卷积
对于一幅128×128像素、三通道彩色输入图像(尺寸为128×128×3),经过一个包含4个Filter的3×3卷积核的卷积层(Filter的个数对应输出通道数,此时卷积核尺寸为3×3×3×4),最终输出4个特征图(Feature Map)。整个过程可以用下图来表示。

此时,卷积层共有4个Filter,每个Filter包含3个Kernel,每个Kernel的大小为3×3。因此卷积层的参数数量可以用如下公式来计算:

N_std = 4 × 3 × 3 × 3 = 108

深度可分离卷积
深度可分离卷积是将一个完整的卷积运算分解为两步进行,即Depthwise卷积与Pointwise卷积。

1)Depthwise卷积
不同于常规卷积操作,Depthwise卷积的一个卷积核负责一个通道,一个通道只被一个卷积核卷积。上面所提到的常规卷积每个卷积核是同时操作输入图片的每个通道。

同样是对于一幅128×128像素、三通道彩色输入图像(尺寸为128×128×3),Depthwise卷积首先经过第一次卷积运算,不同于上面的常规卷积,Depthwise卷积完全是在二维平面内进行。卷积核的数量与上一层的通道数相同,即,通道和卷积核一一对应。所以一个三通道的图像经过运算后生成了3个特征图,如下图所示。


其中一个Filter只包含一个大小为3×3的Kernel,卷积部分的参数个数计算如下:

N_depthwise = 3 × 3 × 3 = 27

Depthwise卷积完成后的特征图数量与输入层的通道数相同,无法扩展特征图数目。而且这种运算对输入层的每个通道独立进行卷积运算,没有有效地利用不同通道在相同空间位置上的特征信息。因此需要Pointwise卷积来将这些特征图进行组合生成新的特征图。

2)Pointwise卷积
Pointwise卷积的运算与常规卷积运算类似,它的卷积核的尺寸为 1×1×M,M为上一层的通道数。这里的卷积运算会将上一步的特征图在通道方向上进行加权组合,生成新的特征图。有几个卷积核就有几个输出特征图。如下图所示。

由于采用的是1×1卷积的方式,此步中卷积涉及到的参数个数可以计算为:

N_pointwise = 1 × 1 × 3 × 4 = 12

经过Pointwise卷积之后,同样输出了4张特征图,与常规卷积的输出维度相同。

参数对比
常规卷积的参数个数为:

N_std = 4 × 3 × 3 × 3 = 108

深度可分离卷积的参数由两部分相加得到:

N_depthwise = 3 × 3 × 3 = 27N_pointwise = 1 × 1 × 3 × 4 = 12N_separable = N_depthwise + N_pointwise = 39

相同的输入,同样是得到4张特征图,深度可分离卷积的参数个数是常规卷积的约三分之一。因此,在参数量相同的前提下,采用深度可分离卷积的神经网络层数可以做的更深。


参考文献
https://yinguobing.com/separable-convolution/

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。