深度学习中组卷积(Group convolution)、深度卷积(Depthwise Convolution)以及深度可分离卷积(Depthwise Separable Convolution)的区别

在轻量化网络中,经常使用组卷积、深度卷积或是深度可分离卷积来降低FLOPs,那么三者的区别在哪里呢?下面总结一下。

一、标准卷积
下面是用一个卷积核对输入特征做一次卷积,得到的输出特征的通道为1。

深度学习中组卷积(Group convolution)、深度卷积(Depthwise Convolution)以及深度可分离卷积(Depthwise Separable Convolution)的区别_第1张图片
二、组卷积
组卷积是将输入特征按通道分为g组,每组特征中的通道数为 C i n g \frac{C_{in}}{g} gCin,所以相应的卷积核的大小也变了,通道数变少了。每次卷积后的特征按通道concat输出特征。当分组数量和输出特征的通道相同时,即只有 C o u t C_{out} Cout个卷积核时,卷积分别对输入特征的每一组卷积1次;当输出特征的通道大于分组数量时,需要 C o u t C_{out} Cout个卷积核对输入特征的每一组卷积 C o u t / g C_{out}/g Cout/g次。
深度学习中组卷积(Group convolution)、深度卷积(Depthwise Convolution)以及深度可分离卷积(Depthwise Separable Convolution)的区别_第2张图片
深度学习中组卷积(Group convolution)、深度卷积(Depthwise Convolution)以及深度可分离卷积(Depthwise Separable Convolution)的区别_第3张图片

深度学习中组卷积(Group convolution)、深度卷积(Depthwise Convolution)以及深度可分离卷积(Depthwise Separable Convolution)的区别_第4张图片

三、深度卷积
深度卷积是组卷积的极端情况,将输入特征的每一通道分为一组,即分组数为 g = C i n g=C_{in} g=Cin。后续步骤和组卷积一致。
四、深度可分离卷积
深度可分离卷积是将深度卷积和点卷积( 1 × 1 1 \times 1 1×1卷积核)相结合。可以从深度卷积中可以得知,卷积核只是对通道的每一层进行了提取了特征,和标准卷积缺少了通道之间的信息交互。加入点卷积后可以增强特征通道之间的信息交互,进一步提升性能。具体可参考MobileNets v1。

最后本文只是对三种卷积感性上的认识,具体的不同卷积的FLOPs计算请参考这篇文章。

你可能感兴趣的:(深度学习)