对几种常见卷积的简单理解

看了一些关于CNN中常见卷积方法的介绍,简单做一些笔记,详细介绍可参考文末的链接。

深度可分离卷积(Depthwise separable convolution)

在这里插入图片描述
思想:先逐通道地(depthwise)对输入数据体空间域做卷积,再沿着通道方向做1*1卷积进行通道融合
好处

  • 将通道和空间区域进行解耦分离;
  • 有效降低参数量(e.g 卷积权重参数k*k*Ci*Co->k*k*Ci+1*1*Ci*Co)

分组卷积(Croup convolution)

在这里插入图片描述
思想:将输入数据体沿通道维度分成多组,对每组分别进行卷积,然后再将各组卷积的输出连接(concatenate)起来
好处

扩张/空洞卷积(Dilated/Atrous convolution)

在这里插入图片描述
思想:将卷积核进行“扩张”(拉大间距,新扩张的地方以0值填充)
好处:在不增加卷积核参数量的前提下有效扩大感受野

转置卷积(Transposed convolution)

思想
思考角度1:对正向卷积的输出(较小分辨率)向量化后去乘以卷积转置矩阵(其权重参数可学习)再将结果reshape(较大分辨率)(具体可参考一文搞懂反卷积,转置卷积
思考角度2:直接对输入张量进行合适的零填充(zero-padding)然后执行普通的卷积也可达到相同的效果,见下图。
在这里插入图片描述
好处:可实现参数可学习的上采样,常用于语义分割和图像生成(DCGAN)中。

下面贴一小段PyTorch的二维卷积和转置卷积的代码(注意转置卷积的结果和卷积前的结输入是不一样的,说明转置卷积并不是卷积的完全逆过程,只是恢复了卷积前的形状),另外一般深度学习框架的卷积API都含有可设置分组卷积和扩张卷积的参数,可方便地实现分组卷积和扩张卷积乃至深度可分离卷积(分组卷积的分组数设置成输入通道数再加1*1卷积)
在这里插入图片描述

参考资料:

  1. 转置卷积
  2. 一文搞懂反卷积,转置卷积
  3. 对深度可分离卷积、分组卷积、扩张卷积、转置卷积(反卷积)的理解

猜你喜欢

转载自blog.csdn.net/Blateyang/article/details/84640259