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

看了一些关于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)

在这里插入图片描述

思想:将卷积核进行“扩张”(拉大间距产生空洞,产生的空洞weight以0值填充,有一个扩张率参数d,可理解成有效卷积点间的距离)
好处:在不增加卷积核参数量的前提下或者不进行下采样的条件下有效扩大感受野,在图像需要全局信息的问题中,能够很好的应用dilated conv

顺便提一下dilated conv感受野的计算方法,设dilated conv的原始kernel size为k,dilated rate为d,则对应的实际卷积核大小也即局部感受野为k+(k-1)*(d-1),如上图的感受野为3+2*1=5,至于多层堆叠的感受野计算,可参看我之前写的博客关于CNN中感受野的理解和计算方法或使用这里的感受野计算器。

转置卷积(Transposed convolution)

思想
思考角度1:对正向卷积的输出(较小分辨率)向量化后(下图浅蓝色矩形)去与卷积转置矩阵(将卷积核进行重排列并堆叠得到的,其权重参数可学习)进行矩阵相乘再将结果reshape(较大分辨率)(具体可参考一文搞懂反卷积,转置卷积

思考角度2:直接对输入张量进行合适的零填充(zero-padding)然后执行普通的卷积也可达到相同的效果,见下图。
在这里插入图片描述
好处:可实现参数可学习的上采样,常用于语义分割和图像生成(DCGAN)中。

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

参考资料:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值