上采样、下采样、反卷积的初步理解

本文深入探讨了卷积神经网络中的卷积和反卷积(转置卷积)运算,详细解释了这两种操作的数学原理及其实现过程,包括卷积的多对一关系和反卷积的一对多关系,以及它们在图像处理中的应用。

上采样:

即放大图像。其目的是在更高分辨率的显示设备上。图像放大几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素。上采样有3种常见的方法:双线性插值(bilinear),反卷积(Transposed Convolution),反池化(Unpooling)。


下采样:

即缩小图像。其目的是1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。


反卷积:

我们首先已经知道,3*3的过滤器用于连接输入矩阵的9个值和输出矩阵的1个值,卷积运算形成了一种多对一的关系

而反卷积与之相反,反卷积运算形成了一种一对多的关系,它想把矩阵中的1个值和另一个矩阵的9个值联系起来。反卷积不是正向卷积的完全逆过程,因为反卷积只能保证得到的矩阵和原矩阵大小一致,但各元素的值不一定能一致。用一句话来解释反卷积的过程就是:反卷积是一种特殊的正向卷积,先按照一定的比例通过补0来扩大输入图像的尺寸(padding),接着转置过滤器,再进行正向卷积。

在解释反卷积之前,我们先再回顾一下卷积的过程,不过我们把卷积这一步骤再详细的解释一下,那就是如果这是过滤器:

a0e4fe3f3c80bb03093b4267b6cd4e1395e.jpg

这是输入矩阵:

f663f7e13ad82c55f7b97ce85a18a060d4f.jpg

那么实际上卷积的过程是这样的:

将过滤器转换成稀疏矩阵,也就是这样操作:

b5a878b95f4e09c6c8f83ff417c4238ef75.jpg

因为输入矩阵有4行,所以这个操作也要重复四遍,变成这个样子:

c6212198be6aecb103c257e9233b10d0e0f.jpg

然后输入矩阵需要像全连接层那样变成一列:

414e420259c4cfe795f64275120737b037d.jpg

最后把稀疏矩阵乘上输入矩阵,就得到了输出矩阵,也就完成了卷积计算。

c609afe9269b5b3f8c41df0b725ab9f1c0f.jpg

只需要把这个4*1的列向量,变成2*2的矩阵就可以了!

1636b7c611334eda959351682724b035d87.jpg

Fine,这就是卷积的结果,跟以前所认识的是一样的,只不过我们把conv2D拆开看了看它是如何运作的而已。

好了,我们现在可以讲解反卷积了!

既然差不多是逆过程,那么从数学公式来讲,如果输出矩阵是Y,输入矩阵是X,稀疏矩阵是C那么就有:

a8edc9e5db885824bdea4b0a3229b3f685d.jpg

实际上刚才所讲的过程已经印证了这个事情,不是吗?好,既然如此,如果我们知道了Y和C,如何求X呢?答案是:

41da57379246b3ba777c01b0c3a2ab0da18.jpg

可能你难以接受,但事实上我们就是这么做的。刚才也说了,反卷积并不能得到与原矩阵一模一样的矩阵,只能得到和原矩阵大小一样的矩阵。

接受了这一点,我们继续讲。按照公式,我们需要将稀疏矩阵转置,然后去乘输出矩阵,这样就得到了输入矩阵。不过同样的,我们也要把Y给变换成正向卷积中的X那样,一列的样子。

44c01aa5d6e8a9151b248e36aaf71ff65b1.jpg

老规矩,把得到的列变成矩阵:

1257edca479e8fc185a86552e5086d7000f.jpg

wow,amazing,这是我独享的moment!我得到了一个与原矩阵一样大小的矩阵,但是元素却不相同。但它就是这个样子的,这就是反卷积的整个过程了。

76f588ef3e2fdbea969ab0dd4d7b17bc515.jpg

通过这个图,可以看到,同一个过滤器,卷积的时候是9对1,反卷积的时候是1对9.

 

转载于:https://my.oschina.net/u/4135288/blog/3062642

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值