一文看懂普通卷积、转置卷积以及空洞卷积 convolution、 transposed convolution、dilated convolution
本文希望尽量以图说话,简明扼要地分享干货。
- 首先是普通卷积,下图可能是一张比较经典的展示。其计算公式为:
其中f为kernel的尺寸,p为padding的大小,s为步长的大小。
2.接下来介绍转置卷积transposed convolution
又名逆卷积/deconvolution。
这里要sorry一下,忘记了之前是从哪个网页找的一张老外手写的图片。把转置卷积计算过程写的很清楚。把这个计算过程很直观的介绍给了我们,这样我们就不用再很迷茫地考虑什么转置过程啊,之类的。其计算公式:o=s(i−1)+k−2p
下图相当于把上图过程总结了下。
3. Dilated convolution空洞卷积
首先需要清除的是所谓dilated指的是对卷积核的操作。这样可以在参数数量不变的同时,具有更大的感受野。
假设原始特征为feat0,首先使用扩张率为1的空洞卷积生成feat1,feat1上一点相对feat0感受野为33(如图a);
然后使用扩张率为2的空洞卷积处理feat1生成feat2(如图b),使第一次空洞卷积的卷积核大小等于第二次空洞卷积的一个像素点的感受野,图b即feat1上一个点综合了图a即feat0上33区域的信息,则生成的feat2感受野为7*7,即整个图b深色区域;
第三次处理同上,第二次空洞卷积的整个卷积核大小等于第三次空洞卷积的一个像素点的感受野,图c即feat2上每个点综合了feat0上77的信息(感受野),则采用扩张率为3的空洞卷积,生成的feat3每一个点感受野为1515。
相比较之下,使用stride为1的普通3*3卷积,三层之后感受野仅仅为(kernel-1)*layer+1=7。
可以简单理解为通过dilated,产生了新的kernel,再用这个kernel去做普通卷积。具体计算过程可以参考:https://blog.csdn.net/zw__chen/article/details/85007519。如下图。
dilated后的kernel_size:(d-1)*(k+1)+k。膨胀系数为d。
膨胀卷积输出图像尺寸计算公司:
或(相当于在普通卷积基础上增加了一项):
来源:CSDN
作者:CV_Dreamer
链接:https://blog.csdn.net/WANGWUSHAN/article/details/103575060