目录
Separable Convolution(可分离卷积)是一种卷积操作,旨在减少卷积层中的参数数量,从而减少模型的计算复杂性,同时保持对特征的有效提取能力。
标准的卷积操作包括在输入特征图的所有位置应用一个卷积核(也称为滤波器),通过在输入和卷积核之间进行卷积运算来生成输出特征图。然而,这种方法在卷积核的尺寸较大时,会引入大量的参数,从而增加了模型的计算负担。
可分离卷积将标准卷积分解为两个步骤:深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。
1.深度卷积(Depthwise Convolution):在这一步骤中,对输入特征图的每个通道应用一个独立的卷积核,这样就生成了与输入具有相同通道数量的特征图。深度卷积不涉及通道之间的组合,因此可以显著减少参数数量。
2.逐点卷积(Pointwise Convolution):在这一步骤中,使用1x1的卷积核在深度方向上对前一步的输出特征图进行卷积,将通道之间的信息进行组合。逐点卷积通过使用较小的卷积核,在减少计算复杂性的同时,仍然可以引入非线性变换。
通过将深度卷积和逐点卷积结合起来,可分离卷积可以用较少的参数有效地对输入特征进行卷积操作,从而在保持模型性能的同时降低计算成本。这对于资源有限的环境或移动设备等场景非常有用,同时也有助于构建更轻量级、高效的神经网络模型。
这里根据B站Eve的科学频道的相关视频进行理解。
1.普通卷积
一次性对三个维度进行卷积,卷积核数=输入通道数=卷积核深度,最后一次性输出一个特征图。
2.可分离卷积
2.1深度卷积
将输入的特征通道数逐个分组进行逐层卷积,最后将每个输入特征的特征图进行组合。但是最后组合出的特征图每一个特征只能表示输入中的一层特征,也就是说输出特征图的每一层特征并不能像普通卷积那样包含输入中其他层的特征。
2.2点对点卷积
为了使深度卷积输出特征图的每一层都能包含输入的所有层的特征,这里又进行了点对点的卷积,他的卷积核是1*1*输入深度,卷积核个数=输入特征层数。再进行卷积就能够输出和普通卷积相同的特征图。
最后,以上是个人的一些比较浅显的理解,有不足之处欢迎交流讨论。从结果上将这种方法要比普通卷积的运行速度和性能更好,初学过程中并没有进行验证。