深度可分离卷积网络

以[3,64,64]的input为例,假设我们要得到[4,64,64]的output.以3x3卷积核为例.
常规的卷及操作如下图所示:

参数量共计3 x 3 x 3 x 4 = 108.

深度可分离卷积可分为2个部分

  • depthwise convolution
  • pointwise convolution

depthwise convolution

常规卷积,卷积核是作用于所有的depth方向的. depthwise conv对不同channel用不同的卷积核做卷积

得到[3,64,64]的输出. 此时参数共计3 x 3 x 3 = 27.

pointwise convolution

depthwise卷积没有考虑到同一位置不同channel上的数据之间的关联.所以我们用一个1 x 1的卷积核对depthwise得到的[3,64,64]输出再做卷积.这里做的就是常规卷积. 得到[1,64,64]. 用4个这样的1x1卷积核去做常规卷积. 得到输出[4,64,64].
如下图所示:

这一步参数量为3 x 1 x 1 x 4 = 12.

深度可分离卷积一共耗费参数量为27 + 12 = 39个.
所以可以看出同样是得到[4,64,64]的feature map. 相比普通卷积的108个参数量,深度可分离卷积的方式大大减少了参数量.

总结一下就是:

  1. 现在深度方向对不同channel用不同卷积核做卷积.
  2. 对第一步得到的输出用1x1的卷积核去做常规卷积.达到使用不同channel的数据的目的. 用1x1的卷积核的数量控制深度.

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

猜你喜欢

转载自www.cnblogs.com/sdu20112013/p/11759928.html