线性插值改变图像尺寸_图像分割-->上采样的那些事

71bb9da58b0ab38332d26c875a046d4e.png

在图像分割中,因为FCN的提出,上采样操作成为了分割中不可或缺的部分。上采样就是将提取到的feature map还原到原始分辨率大小的操作,但是这里要注意的是上采样不是下采样的逆过程,也就是说上采样输出的图像和下采样之前的图像是不一样的。

上采样操作主要分为三种方法:

1.转置卷积

如上述所说,上下采样不是可逆关系,所以我不太喜欢使用‘'反卷积”这个词,转置卷积是通过卷积运算来实现分辨率的还原。因为是卷积操作中有权重参数,所以这是一种可以学习的方法,通过参数的学习实现输出图像尽可能与原图像相似。具体的细节可以参考下面的这一篇文章

孙小也:反卷积(Transposed Convolution)详细推导​zhuanlan.zhihu.com
528b81a25b7b2d4c03fc647981170dec.png

在学习的时候,转置卷积的输入和输出大小一直是我比较头疼的地方,在反复地计算和思考之后我给出我比较能理解的思路。

首先,先确定一下变量和其意义

代表输入的尺寸

代表输出的尺寸

分别代表卷积核的大小,卷积核的步长以及padding的大小

确定顺序为

然后先要明确的一点就是这里的步长和正向的卷积过程操作有一些不一样,这里的stride不是直接将卷积核移动大小为stride的长度,而是在输入每两个像素之间增加大小为stirde的空像素,和空洞卷积的空洞操作是一样的。

(1)根据输出和卷积和大小计算输入经过stirde操作和padding之后的尺寸大小

中间尺寸

(2)得到上述的大小后,减去padding,获得输入加上stride的尺寸

输入+stride

(3)对上面的式子进行整理和化简

2.线性插值

线性插值就是利用几何关系通过已知点的数值来计算线性空间内的值,常见的插值方法包括二次线性插值和三次线性插值,二次线性插值就是利用四个点来对矩形空间内的点进行估计,三次线性插值同理,不过使用八个点。具体的细节可以参考下面的一篇文章

时凹:【数学】线性插值​zhuanlan.zhihu.com
633c8fdb32945982bef2a5565f43eb6f.png

3.解池化

我目前看到的情况,解池化使用的比较少一点,主要是使用两次线性插值和解卷积多一些,但是由于线性插值的方法不需要学习参数,所需要的计算资源就会少一些,所以双线性插值会更多一些。

我目前只在SegNet中看到过,他使用的方法使用了“最大池化索引”,也就是在池化的时候记录池化滑窗中最大值的位置,然后在恢复的时候在还原的时候只使用记录的最大值,其过程如下图所示。

e56bdd46470a640d39de10e66331cdcd.png

除了滑窗内的最大值,其他值都会被设置为0,基于keras的实现方法如下:

https://blog.csdn.net/nima1994/article/details/84319859​blog.csdn.net

当然,现在还有新型的上采样方法,但是我还没有深入了解过,等读到有关的方法会进行更新。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值