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

上采样:算法

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


下采样:blog

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


反卷积:io

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

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

在解释反卷积以前,咱们先再回顾一下卷积的过程,不过咱们把卷积这一步骤再详细的解释一下,那就是若是这是过滤器:方法

这是输入矩阵:im

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

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

由于输入矩阵有4行,因此这个操做也要重复四遍,变成这个样子:

而后输入矩阵须要像全链接层那样变成一列:

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

只须要把这个4*1的列向量,变成2*2的矩阵就能够了!

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

好了,咱们如今能够讲解反卷积了!

既然差很少是逆过程,那么从数学公式来说,若是输出矩阵是Y,输入矩阵是X,稀疏矩阵是C那么就有:

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

可能你难以接受,但事实上咱们就是这么作的。刚才也说了,反卷积并不能获得与原矩阵如出一辙的矩阵,只能获得和原矩阵大小同样的矩阵。

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

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

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

经过这个图,能够看到,同一个过滤器,卷积的时候是9对1,反卷积的时候是1对9.

相关文章
相关标签/搜索