上采样(最近邻插值、双线性插值法、反池化、转置卷积)

这篇具有很好参考价值的文章主要介绍了上采样(最近邻插值、双线性插值法、反池化、转置卷积)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一般图像分割的时候,需要对图像进行像素级别的分类,因此在卷积提取到抽象特征后需要通过上采样将feature map还原到原图大小,在FCN和U-net等网络中都提到了上采样的操作,这里会一些上采样的方法进行总结。

1、最近邻插值(Nearest neighbor interpolation)

最简单的图像缩放算法就是最近邻插值,也称作零阶插值,就是令变换后像素的灰度值等于距它最近的输入像素的灰度值。算法优点在与简单、速度快。
先假设一个2X2像素的图片采用最近邻插值法需要放大到4X4像素的图片,下图左边为原图,右边为要缩放的图片,我们首先将缩放完成的图片生成一个空白图,然后在依次向其填值。
上采样(最近邻插值、双线性插值法、反池化、转置卷积)
那么右边的?号需要填充的值用到了下面的公式:
srcX = dstX(srcWidth/dstWidth)*
srcY = dstY(srcHeight/dstHeight)*

scrX、scrY:目标图像(也就是上图右边的图像)某个点的横纵坐标
srcWidth:原图像(也就是上图左边的图像)的宽度
srcHeight:原图像(也就是上图左边的图像)的高度
dstWidth:目标图像(也就是上图左边的图像)的宽度
dstHeight:目标图像(也就是上图左边的图像)的高度

我们一般是以左上角的那个像素点坐标为(1,1),即如下图的x-y坐标系,一个像素点的大小为1
上采样(最近邻插值、双线性插值法、反池化、转置卷积)
上图右边?号的值为:
srcX=3*(2/4)=1.5,
srcY=2*(2/4)=1;
故?处的像素应该为原图像中的(1.5,1)像素的值,但是像素坐标没有小数,一般采用四舍五入取最邻,所以最终的结果为(2,1),对应原图像的橙色。

2、双线性插值法(bilinear interpolation)

线性插值

在讲双线性插值法之前先讲一下线性插值,线性插值就像我们平常说的线性关系。如图所示现在已知y=f(x)的两个点坐标分别是(x0,y0),(x1,y1),现在在区间(x0,x1)内给定任意x,如何求y,线性插值法采用图中红点的y值代替f(x)的y值。其实也就是把(x0,y0),(x1,y1),两点看成一条直线,我们认为我们要求的点在这条直线上。 假设x处的直线上的红点坐标为(x,Y),那么Y约等于y。也就是(x0,y0)到(x,Y)和(x,Y)到(x1,y1)的斜率一样,根据图可以得到公式:
上采样(最近邻插值、双线性插值法、反池化、转置卷积)
一般转换为非隐函数可以近似为
上采样(最近邻插值、双线性插值法、反池化、转置卷积)
上采样(最近邻插值、双线性插值法、反池化、转置卷积)

双线性插值法

现在我们就可以讲双线性插值法了
双线性插值法也叫双线性内插,根据前面讲的就很容易想到是在两个方向分别进行一次线性插值 。
如坐标图所示,用横纵坐标代表图像像素的位置,f(x,y)代表该像素点(x,y)的彩色值或灰度值
上采样(最近邻插值、双线性插值法、反池化、转置卷积)
现在假设目标图像的像素点(x’,y’)映射到原图像中是(x,y),也就是图中的P点。设Q11 = (x1, y1)、Q12 = (x1, y2)、Q21 = (x2, y1) 、 Q22 = (x2, y2),图中Q11,Q12,Q21,Q22分别为距离P点的最近的四个点。分别在X方向进行两次插值,最后在y方向进行插值即可得到目标图像的像素值。公式如下:
先计算X方向(也可以先计算Y方向,再计算X方向)的线性插值:
上采样(最近邻插值、双线性插值法、反池化、转置卷积)
再在y方向进行线性插值得到f§:
上采样(最近邻插值、双线性插值法、反池化、转置卷积)
经过公式的进一步化简可以得到:
上采样(最近邻插值、双线性插值法、反池化、转置卷积)
由于是最近的点,所以Q的四个点的坐标之间相差1,故进一步化简为:
上采样(最近邻插值、双线性插值法、反池化、转置卷积)

3、反池化

反池化是池化的逆操作,是无法通过池化的结果还原出全部的原始数据。因为池化的过程就只保留了主要信息,舍去部分信息。如果想从池化后的这些主要信息恢复出全部信息,则存在信息缺失,这时只能通过补位来实现最大程度的信息完整。
池化有两种:最大池化和平均池化,其反池化也需要与其对应。

平均池化和反平均池化

首先还原成原来的大小,然后将池化结果中的每个值都填入其对应原始数据区域中相应位置即可。
上采样(最近邻插值、双线性插值法、反池化、转置卷积)

最大池化和反最大池化

要求在池化过程中记录最大激活值的坐标位置,然后在反池化时,只把池化过程中最大激活值所在位置坐标值激活,其他的值设置为0.当然,这个过程只是一种近似。因为在池化过程中,除了最大值的位置,其他的值也是不为0的。
上采样(最近邻插值、双线性插值法、反池化、转置卷积)

4、转置卷积

转置卷积最大的特点就是可以进行学习的,这样就可以学出一种最优的上采样方法
我们都知道卷积操作就是输出的一个值对应着输入n个值的关系,这个n的大小和卷积核的大小一样。那么反卷积就是要找到这输出一个值对应原来输入n个值的关系,就很像卷积的逆操作,也叫反卷积。
上采样(最近邻插值、双线性插值法、反池化、转置卷积)
这个图的上面的常规的卷积,input是5×5,kernel是3×3,stride是2,最后的output为2×2。
下图就是转置卷积,input为2×2,每一元素与反卷积核相乘映射到output相应的位置,那么这些映射会用重叠的地方,重叠的地方直接相加(这也就是转置卷积出现棋盘化的原因)。
下面这个图也能解释转置卷积:
这是没有填充的,也就是pading=0
上采样(最近邻插值、双线性插值法、反池化、转置卷积)

这是有填充的,这里的pading=1

上采样(最近邻插值、双线性插值法、反池化、转置卷积)
上采样(最近邻插值、双线性插值法、反池化、转置卷积)

上采样(最近邻插值、双线性插值法、反池化、转置卷积)
这个图说明了该方法的棋盘化原因,该作者也说了建议使用通过上采样(插值)然后在正则卷积来避免棋盘化。
上采样(最近邻插值、双线性插值法、反池化、转置卷积)文章来源地址https://www.toymoban.com/news/detail-449186.html

到了这里,关于上采样(最近邻插值、双线性插值法、反池化、转置卷积)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践

    温馨提示:本文共有3748字,阅读并理解全文大概需要15-20分钟 数模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就 需要使用一些数学的方法,“模拟产生”一些新的但又比较靠谱的值来满足

    2024年02月05日
    浏览(35)
  • 【数值分析】拉格朗日插值法与牛顿插值法的C++实现

    设函数 y = f ( x ) displaystylecolor{red}y=f(x) y = f ( x ) 在区间 [ a , b ] displaystylecolor{red}[a,b] [ a , b ] 上有定义,且 a ≤ x 0 x 1 ⋯ x n ≤ b displaystylecolor{red}a ≤x_0x_1dotsx_n ≤b a ≤ x 0 ​ x 1 ​ ⋯ x n ​ ≤ b ,已知在 x 0 … x n displaystylecolor{red}x_0dots x_n x 0 ​ … x n ​ 点处的值分别为

    2024年02月06日
    浏览(32)
  • 算法--插值法

    插值法是一种数学方法,主要用于通过已知的离散数据来估算未知值。常见的插值法有线性插值、最近邻插值、双线性插值和双三次插值。以下是其基本原理和应用: 线性插值:假设在两个已知数据点之间,数据的变化是线性的,因此可以通过已知的两点的坐标来计算经过这

    2024年01月18日
    浏览(25)
  • 基于Matlab的插值问题(Lagrange插值法、三次插值多项式)

    要求 1、 利用Lagrange插值公式 L n ( x ) = ∑ k = 0 n ( ∏ i = 0 , i ≠ k n x − x i x k − x i ) y k {L_n}(x) = sumlimits_{k = 0}^n {left( {prodlimits_{i = 0,i ne k}^n {frac{{x - {x_i}}}{{{x_k} - {x_i}}}} } right)} {y_k} L n ​ ( x ) = k = 0 ∑ n ​ ( i = 0 , i  = k ∏ n ​ x k ​ − x i ​ x − x i ​ ​ ) y k ​ 编写出

    2024年02月07日
    浏览(29)
  • 数学建模之插值法

    数模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就需要使用一些数学的方法,“ 模拟产生 ”一些新的但又比较靠谱的值来满足需求,这就是插值的作用。 那什么是插值法? 插值法又可以分

    2024年02月03日
    浏览(39)
  • 浅谈拉格朗日插值法

    好像FFT要用到,所以就学习一手 版题 其意义在于: 理解一下: 就是把一个足球踢出去,假设球始终在一个平面上飞行,它的轨迹就可以抽象为 (f(x)) (假设这个函数至于时间有关) 现在你有一些照片,所以你可以得到某几个时间点球的位置,想要还原出这个函数 (f(x)) 的

    2023年04月25日
    浏览(23)
  • Matlab图像处理-灰度插值法

    最近邻法 最近邻法是一种最简单的插值算法,输出像素的值为输入图像中与其最邻近的采样点的像素值。是将 ( u 0 , v 0 ) (u_0,v_0) 点最近的整数坐标 u , v (u,v) 点的灰度值取为 ( u 0 , v 0 ) (u_0,v_0) 点的灰度值。 在 ( u 0 , v 0 ) (u_0,v_0) 点各相邻像素间灰度变化较小时,这种方法是一

    2024年02月10日
    浏览(32)
  • 数学建模学习笔记(一):插值法

    本文主要内容是分享博主在学习MATLAB插值与拟合过程中的一些笔记与见解,并记录使用代码实现的过程 一维插值问题可描述为:已知函数在 x 0 , x 1 , … , x n x_0,x_1,…,x_n x 0 ​ , x 1 ​ , … , x n ​ 处的值 y 0 , y 1 , … , y n y_0,y_1,…,y_n y 0 ​ , y 1 ​ , … , y n ​ ,求简单函数 p (

    2024年02月06日
    浏览(41)
  • 自动驾驶路径规划——轨迹规划(详解插值法)

    目录 前言 1. 轨迹规划 1.1 轨迹规划包括以下几个问题: 2. 三次多项式插值 ​​​​​​3.  过路径点的三次多项式插值 4. 用抛物线过渡的线性插值 过路径点的用抛物线过渡的线性插值 5. 高阶多项式插值 声明        这个学期学校开设了相应的课程,同时也在学习古月居

    2024年01月22日
    浏览(30)
  • 【数值分析实验】(一)插值法(含matlab代码)

            实际问题中许多变量的关系可以用数学函数概念进行刻画,但是在大多数情况下,这些函数的表达式是未知的,或者已知但十分复杂,需要我们将这个函数的未知解析式近似地构造出来,或者用一个简单的函数表达式来代替复杂的函数表达式。基于上述过程,我们

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包