当前位置:   article > 正文

上采样、转置卷积、反卷积、反池化,傻傻分不清_反卷积和上采样的区别

反卷积和上采样的区别

下采样downsample:是图像处理上的概念,即将分辨率大的图像转换为分辨率小的图像,即将图像缩小。可以采用的方法为线性差值、卷积、池化等。

上采样updown:则与下采样相反,是将分辨率小的图像转换为分辨率大的图像,即将图像放大。可以采用的方法有线性插值、转置卷积、反池化等。

卷积convolution:也是来自于图像处理上的概念,在深度学习邻域就是指卷积神经网络了。它可以提取图像的特征,通过合理配置kernel size、padding和stride也可以实现图像分辨率的缩小。

池化pooling:与卷积相似,不过kernel上没有参数,也可以用来缩小图像的分辨率。

转置卷积transposed convolution:这个操作也常被称为反卷积/去卷积,即deconvolution,该反卷积与数学上的反卷积有所区别,所以不要混淆了。这个操作实际上称为转置卷积是更为合适的,下面会解释。转置卷积与卷积相反,合理配置超参数可以放大图像的分辨率。

反池化unpooling是与池化相反,与转置卷积对应的概念,也可以用来放大图像的分辨率。

深入转置卷积
视角一:转置卷积是卷积的逆操作
在这里插入图片描述
在转置卷积过程中,会把输入图像上的每个元素分别与转置卷积核相乘,分别获得多个输出特征图,然后把特征图叠加起来,可以看到输出特征图的尺寸要比输入图像大。长得比较帅的同学会问了,那么为什么输出的特征图尺寸为3呢?因为设置步幅为1,因此可以看到第二个特征图中2x2的数字矩阵的位置是第一个特征图的2x2数字矩阵往右移动一列;而第三个特征图则是在第一个特征图基础上往下移动一行。

我们看看步幅为2的情况,可以看到移动的行列数变成2了。
在这里插入图片描述
考虑一下padding的情况,卷积的时候,padding会在输入图像的最上下左右分别添加空白行列;而在转置卷积时正好相反,会被输出的特征图的最上下左右行列删除。

视角二:转置卷积也可以作为卷积操作

转置卷积可以看做填充+上下左右翻转卷积核+卷积
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

视角三:矩阵变换-数学本质
定义一个全连接层的输入输出分别为行向量 x x x和列向量 y y y,权重矩阵为 W W W,则全连接层的计算可以写为
y = X x y = Xx y=Xx
而卷积实际上就是局部连接权值共享的全连接层,如果我们将输入图像和输出特征图都写成列向量的形式,即 x x x y y y,那么也可以把卷积核扩写成权重矩阵 W W W

假设卷积核为
在这里插入图片描述

我们可以推出对应的权重矩阵为
在这里插入图片描述
可以观察到,权值矩阵其中有很多零,因为卷积层是局部连接的,事实上每一行只有四个非零参数,刚好对应卷积核的四个参数。

在早期深度学习框架中,卷积的计算正是转换为这种 y = W x y=Wx y=Wx的形式。

而对于转置卷积,我们假设转置卷积核和上面的卷积核是一致的,那么它写出来的权值矩阵为
在这里插入图片描述
很幸运地,它刚好是 W W W的转置。也就是说在同样的卷积核的情况下,转置卷积的权值矩阵是卷积的权值矩阵的逆。这里我们把卷积的输出作为转置卷积的输入,得到
x ′ = W T y x'=W^Ty x=WTy
长得比较帅的同学会问了,这里的 x ′ x' x是不是刚好等于 x x x,也就说卷积和转置卷积是可以互逆的。答案是否定的,很明显, x = W T y x=W^Ty x=WTy y = W x y=Wx y=Wx并不等价,除非 W W W是正交矩阵,这个条件太严苛了。

反池化
用的很少,主要分为反最大池化反平均池化

反最大池化
在这里插入图片描述
反平均池化
相当于卷积核全是1的转置卷积。

补充一下卷积和转置卷积之后的尺寸变换
卷积时,假设输入图片变成为 ( n , n ) (n,n) (n,n),padding为 2 p 2p 2p,stride为 s s s,kernel size为 k k k,输出特征图边长 ( m , m ) (m,m) (m,m),则
m = ( n − k + 2 p + s ) / s = ( n − k + 2 p ) / s + 1 m = (n-k+2p+s)/s=(n-k+2p)/s+1 m=(nk+2p+s)/s=(nk+2p)/s+1
可以看出 m m m不一定为正数,一般会往小里取整,相当于把 n n n减掉最后几行几列。
在转置卷积时,刚好相反,我们把 m m m当做输入, n n n当做输出就可以了,非要换一下形式的话就是
n = s m + k − 2 p − s n=sm+k-2p-s n=sm+k2ps
这里就不存在整除问题了。而且一般为了方便,如果我们想要转置卷积后图像分辨率增大 n n n倍,我们就让 s = n s=n s=n,并且使得 k − 2 p = s k-2p=s k2p=s就可以了,因为这可以使得上述公式变成 n = s m n=sm n=sm

参考链接:
【1】https://zh.d2l.ai/chapter_computer-vision/transposed-conv.html#subsec-connection-to-mat-transposition
【2】https://www.bilibili.com/video/BV1CM4y1K7r7?spm_id_from=333.999.0.0

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/75164
推荐阅读
相关标签
  

闽ICP备14008679号