上采样下采样

图像处理中的上采样和下采样


下采样

下采样即缩小图像,主要有两个目的:使得图像符合需要的大小;生成对应图像的缩略图。
下采样的原理很简单,比如对于一幅尺寸为MxN的图像,对其进行s倍下采样,即得到(M/s)x(N/s)尺寸的图像。这可以通过把原始图像划成sxs的窗口,使每个窗口内的图像变成一个像素,这个像素点的值可以是窗口内所有像素的均值或者最大值等等。另外我认为高斯滤波等卷积方式本身也是一种下采样。


上采样

上采样与下采样相反,其目的是放大图像。注意,它并不能带来更多关于该图像的信息,因此图像的质量会受到影响。
上采样的实现主要有两种思路。一种是内插值的方法,另一种是采用反卷积(也称转置卷积)的方法。

注:还有一种现在已经比较少用的方法也就是反池化,想了解的话可以看一下computer-vision笔记:反池化


插值方法

  1. 最邻近元法

    这种方法最简单,不需要计算,即在待求像素的四个邻像素中,选取距离待求像素最近的邻像素的灰度值赋给待求像素。

    最邻近元法

    如上图所示,新增在A区内的像素就用左上角的像素点来赋值,其余三个区域同理。
    虽然最邻近元法计算量较小,但可能会造成插值生成的图像灰度上的不连续,在灰度变化的地方可能会出现明显的锯齿状。
  2. 双线性插值法

    双线性插值法

    这种方法也很好理解,就是把原本四个像素点围成的新的区域中的灰度值变化视作线性的,然后根据插入点的位置,按照比例计算两次,得到最终要赋的值。

    看成线性按照比例

    这也是一种比较常用的插值方法。
  3. 三次内插法

    该方法是理论上最优的sinc函数(辛格函数)逼近,其数学表达式为:Sinc(x)=sin(x)xSinc(x)=sin(x)x
    待求像素的灰度值由其周围16个灰度值加权内插得到,如下图所示。

    三次内插法

    待求像素的灰度计算式如下:

    f(x,y)=f(i+u,j+v)=ABCf(x,y)=f(i+u,j+v)=ABC

    其中ABCABC的含义分别如下所示。

    各项表示

    三次内插法计算量比较大,但插值后的图像效果最好。

反卷积

反卷积通常用于如下几个方面:在CNN可视化处理中,可以通过反卷积将卷积得到的feature map还原到像素空间,来观察feature map对哪些pattern相应最大,即可视化哪些特征是卷积操作提取出来的;在FCN全卷积网络中,由于要对图像进行像素级的分割,需要将图像尺寸还原到原来的大小,类似upsampling的操作,所以需要采用反卷积;在GAN对抗式生成网络中,由于需要从输入图像到生成图像,自然需要将提取的特征图还原到和原图同样尺寸的大小,即也需要反卷积操作。
为了方便理解和比较,我们将卷积和反卷积对照着看。
我们先来看卷积时使用3x3卷积核,且没有padding,strides为1时的情况。

卷积

反卷积


可以看到,由于卷积使用了no padding,那么对应的反卷积就要添加padding,反卷积的padding值可用padding = kernel_size - stride来计算。在上面的情况中,反卷积的padding就是3减1等于2。
前面说到反卷积也称转置卷积,这里说一下原因。
对于上面3x3卷积核的计算,我们可以通过这样一个4x16的稀疏矩阵来把卷积变成矩阵相乘Y=CXY=CX。

稀疏矩阵


注意到这里每一行有9个数值和7个0,也就是说在上面4x4的输入特征中,对每一个输出特征,有9个输入特征参与了计算。
如此,卷积的前向操作可以表示为输入和稀疏矩阵CC相乘。类似的,卷积的反向传播就是输出和CC的转置相乘。

注意:熟悉线性代数的读者应该会发现,要实现上面的运算,不应该是求矩阵的逆吗。信息论告诉我们,卷积是不可逆的,因此要注意,上面的两个CC指的并不是同一个,即用来进行反卷积的权重矩阵不一定来自于原卷积矩阵,但该权重矩阵的形状和转置后的原卷积矩阵完全相同。
此外,在一些深度学习的开源框架中,并不是通过这种转换方法来计算卷积的,因为这个转换会存在很多无用的0乘操作。

还有一个要注意的是,当卷积的stride为2时,要对输入矩阵中间补零才能完成反卷积,其实相当于进行了两次padding,一次内插补零,一次在外圈补零。

步长为2卷积

步长为2反卷积

  • 19
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值