美文网首页深度学习
CNN中几种upsample方法

CNN中几种upsample方法

作者: X_xxieRiemann | 来源:发表于2019-01-23 18:33 被阅读0次
参考conv_arithmetic上的动图

符号约定: i,o,k,p,s分别表示:卷积的输入大小input size,输出大小 output size,卷积核大小 kernel sizepaddingstride
下面的图片蓝色(底部)为输入,绿色(顶部)为输出。

1、常规卷积:

(1)、i=4,o=2,k=3,p=0,s=1"VALID模式"


(2)、i=5,o=5,k=3,p=1,s=1 "SAME模式"或者"HALF模式"
(3)、i=5,o=7,k=3,p=2,s=1 "FULL模式"
(4)、i=5,o=2,k=3,p=0,s=2
(5)、i=5,o=3,k=3,p=1,s=2

2、反卷积/转置卷积:

(1)、i=2,o=4,k=3,no_padding,s=1


(2)、i=5,o=5,k=3,same_padding,s=1
(3)、i=7,o=5,k=3,full_padding,s=1
(4)、i=2,o=5,k=3,no_padding,s=2
(5)、i=3,o=5,k=3,padding,s=2
实际上通过反卷积操作并不能还原出卷积之前的图片,只能还原出卷积之前图片的尺寸。
反卷积(转置卷积)通常用在以下几个方面:
  1. CNN可视化,通过反卷积将卷积得到的feature map还原到像素空间,来观察feature map对哪些pattern相应最大,即可视化哪些特征是卷积操作提取出来的;
  2. FCN全卷积网络中,由于要对图像进行像素级的分割,需要将图像尺寸还原到原来的大小,类似upsampling的操作,所以需要采用反卷积;
  3. GAN对抗式生成网络中,由于需要从输入图像到生成图像,自然需要将提取的特征图还原到和原图同样尺寸的大小,即也需要反卷积操作。
     
    当反卷积的s = 1时,反卷积和一般的卷积并没有什么不同,只是padding的称呼方式有所变化,方向和卷积相反。由反卷积的图5可以看到反卷积的一些缺点,在s > 1时,会降低图片的分辨率,并且不同于一般的convolution,反而增大了输出的feature mapsize
    对于s = 2padding=1k=4的反卷积,输入AXA图像,输出为2AX2A。

3、膨胀卷积:

又称为空洞卷积扩张卷积英文为:Dilation[daɪ'leɪʃn] Convolution/Atrous['ətrəs] Convolution/Convolution with holes

作用:

首先膨胀卷积的目的是为了在扩大感受野的同时,不降低图片分辨率不引入额外参数及计算量(一般在CNN中扩大感受野都需要使用s>1conv或者pooling,导致分辨率降低,减少了feature map的信息。如果使用大卷积核,确实可以达到增大感受野,但是会引入额外的参数及计算量)。
膨胀卷积多了一个参数dilation rate, 指的是kernel的间隔数量(e.g. 一般的convolutiondilatation rate = 1)。把dilation rate简记为r
图像参考:i = 7,o = 3,k = 3,p = 0,s = 1,r = 2


扩充后的卷积核size = k + (k-1) x (r-1),特别地,对于3*3的卷积核,如果p = r,则特征图尺寸大小不改变。既然膨胀卷积的初衷之一就是不降低图片分辨率,那么我们可以认定膨胀卷积的s = 1
 
总起来说,dilation conv是对卷积核进行upsample,deconv是对feature map进行upsample;或者说,dilation conv是skip掉map中的一些元素,而deconv是对map中的元素进行补0操作。

参考:
1、反卷积/转置卷积: transposed conv/deconv
2、彻底搞懂CNN中的卷积和反卷积
3、谈谈膨胀卷积
4、dilation conv 和 deconv
5、如何理解空洞卷积(dilated convolution)?-知乎

相关文章

网友评论

    本文标题:CNN中几种upsample方法

    本文链接:https://www.haomeiwen.com/subject/hbkrjqtx.html