Torch中常见插值方式及各自的优缺点

这篇具有很好参考价值的文章主要介绍了Torch中常见插值方式及各自的优缺点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 插值算法

插值指的是利用已知数据去预测未知数据,图像插值则是给定一个像素点,根据它周围像素点的信息来对该像素点的值进行预测。
当我们调整图片尺寸或者对图片变形的时候常会用到图片插值。

常见的插值算法可以分为两类自适应和非自适应。 自适应的方法可以根据插值的内容来改变(尖锐的边缘或者是平滑的纹理),非自适应的方法对所有的像素点都进行同样的处理。 非自适应算法包括:最近邻,双线性,双三次,样条,sinc,lanczos等。 由于其复杂度, 这些插值的时候使用从0 to 256 (or more) 邻近像素。 包含越多的邻近像素,他们越精确,但是花费的时间也越长。这些算法可以用来扭曲和缩放照片。

2 Pytorch中能看到的插值方式

nn.Upsample()中的插值方式
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理

出现的插值方式有Nearest(最近邻插值法),Linear(线性插值法),Bilinear(双线性插值法),Bicubic(双三次插值法),Trilinear(三线性插值法)

3 Nearest插值法

3.1 方法介绍

顾名思义最近邻插值就是选取离目标点最近的点的值(黑点,原来就存在的点)作为新的插入点的值:
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理
Pytorch代码演示:
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理

可以看到在原始数据周围的点数据,其数值都是和其最近的点数值相同

3.2 优缺点

缺点: 由于是以最近的点作为新的插入点,因此边缘不会出现缓慢的渐慢过度区域,因而重新采样后灰度值有明显的不连续性,这也导致放大的图像容易出现锯齿的现象,缩小后的图像有很严重的失真;
优点: 最近邻插值法的优点是计算量很小,算法也简单,因此运算速度较快。

4 Linear插值法

4.1 方法接受

线性插值是以距离为权重的一种插值方式:
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理
其本质就是利用两个点形成直线方程,带入x坐标,得到该像素点的插值。
Pytorch代码演示
由于在实际的代码中,需要给数据的每个点坐标附上像素值,在演示时不方便,因此后面会直接给出使用Upsample得到图象的例子。

4.2 优缺点

为的是给双线性插值法做铺垫的

5 Bilinear插值法

5.1 方法介绍

在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。见下图:
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理
我们想得到未知函数 f 在点 P = (x, y) 的值,假设我们已知函数 f 在 Q11 = (x1, y1)、Q12 = (x1, y2), Q21 = (x2, y1) 以及 Q22 = (x2, y2) 四个点的值。最常见的情况,f就是一个像素点的像素值。思路是我们可以将求解过程分解为两次插值过程,首先在x轴方向上进行插值,根据点Q11,Q21得到
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理
根据点Q12,Q22得到
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理
然后在y轴方向上进行插值, 根据点R1 和R2得到
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理
整理得
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理
Pytorch代码演示:
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理

5.2 优缺点

双线性插值利用周围四个邻点的灰度值在两个方向上做线性插值得到采样点的灰度值。这种方法在很大程度上消除了锯齿现象,但在边缘上变得较为模糊,同时需要一些计算量。

6 Bicubic插值法

6.1 方法介绍

太难了,有点没搞懂,可以参考末尾的参考博客!
Pytorch代码演示:
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理

6.2 优缺点

双三次插值不仅考虑四个邻点灰度值,还考虑各邻点间的灰度值变化率的影响。是双线性插值的改进算法。和前两种经典插值方法相比,可以取得较好的插值效果。会损失插值图像的高频部分,因而是图像边缘模糊,需要的计算量也相应提升。

7 Trlinear插值法

7.1 方法介绍

就是在三维数据中,再使用一个坐标轴,和双线性插值法有异曲同工之处:
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理
三线性插值的结果与沿三个轴的插值步骤的顺序无关:任何其他顺序,例如沿x,然后沿y,最后沿z,产生相同的值。

Pytorch代码演示:
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理

7.2 优缺点

就是双线性插值方法在高维数据中的应用是,是一个十分经典的算法!

8 图片演示

代码:

import torch
import torch.nn as nn
import torchvision.transforms as transforms 
import matplotlib.pyplot as plt

to_img = transforms.ToPILImage()
input = torch.arange(64*64, dtype=torch.float32).view(1,1,64,64)
m_nearest = nn.Upsample(scale_factor=2, mode='nearest')
m_bilinear = nn.Upsample(scale_factor=2, mode='bilinear')
m_bicubic = nn.Upsample(scale_factor=2, mode='bicubic')
img_near = m_nearest(input)
img_bili = m_bilinear(input)
img_bicu = m_bicubic(input)


plt.subplot(2,2,1)
plt.title("Normal")
plt.imshow(to_img(input.squeeze(0).squeeze(0)), cmap="gray")


plt.subplot(2,2,2)
plt.title("Nearest")
plt.imshow(to_img(img_near.squeeze(0).squeeze(0)), cmap="gray")


plt.subplot(2,2,3)
plt.title("Bilinear")
plt.imshow(to_img(img_bili.squeeze(0).squeeze(0)), cmap="gray")


plt.subplot(2,2,4)
plt.title("Bicubic")
plt.imshow(to_img(img_bicu.squeeze(0).squeeze(0)), cmap="gray")
plt.show()

结果:
torch 插值,深度学习储备知识,算法,人工智能,深度学习,pytorch,图像处理

这个演示的稍显仓促,大家可以自己使用一张灰度图进行不同方式的插值放大,看看呈现出来的效果如何。

参考博客:

https://www.cnblogs.com/wxl845235800/p/7446270.html

https://www.cnblogs.com/laozhanghahaha/p/12580822.html

https://blog.csdn.net/weixin_42546737/article/details/110850247文章来源地址https://www.toymoban.com/news/detail-692416.html

到了这里,关于Torch中常见插值方式及各自的优缺点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • [架构之路-195]-《软考-系统分析师》- MVC、MVP、MVVM架构各自的优缺点

    目录 前言: 一、MVC 1.1 MVC的基本结构 1.2 MVC的工作流程 1.3 MVC的优缺点 二、MVP 2.1 MVP的基本结构 2.2 MVP的工作流程 2.3 MVP的优缺点 三、MVVM 3.1 MVVM的基本结构 3.2 MVVM的工作流程 3.3 MVVM的优缺点 MVC: 一个controller对应多个view,model可以直接通过view。从大锅烩时代进化,引入了分层

    2024年02月04日
    浏览(88)
  • 如果SSE推送不稳定,是不是可以考虑切换成WebSocket,各自有什么优缺点

    面对 Server-Sent Events (SSE) 推送不稳定的情况时,可以考虑切换到 WebSocket。SSE 和 WebSocket 都是现代Web应用中用于实现实时通信的技术,但它们有各自的优缺点和最适用的场景。 Server-Sent Events (SSE) 优点 简单性 :SSE 在使用上比 WebSocket 更简单,特别是在仅需要单向通信(服务器到

    2024年02月04日
    浏览(62)
  • 学习STM32是用标准库好还是HAL库好?各自有什么优缺点?做项目应用哪种库比较合适?

    学习STM32可以使用标准库或HAL库,它们各有优缺点,具体使用哪种库取决于你的项目需求和个人偏好。 标准库是适用于单片机开发的基本库。它提供了对芯片的低级访问,可直接访问寄存器,操作系统资源,中断和固件等。标准库代码量较小,运行速度快,适用于简单的应用

    2024年02月11日
    浏览(46)
  • 三种常见mq的优缺点比较

       常见面试题 常见面试题

    2024年02月11日
    浏览(59)
  • 最前端|常见低代码平台介绍,一文看清优缺点

    目录 一、低代码平台对比 (一)宜搭 1.功能 2.优点 3.缺点 二、简道云 1.功能 2.优点 3.缺点 三、氚云 1.优点 2.缺点 二、宜搭平台简介 一、HTML 二、CSS 三、总结 上篇文章《低代码这么火,你真的了解吗》介绍了什么是低代码,对比了低代码与传统开发的优劣势。本篇文章则为

    2024年02月15日
    浏览(43)
  • singularity 运行方式汇总,运行方式的优缺点,及其调用方法

    1. Shell 模式 调用方法 : singularity shell [options] container_path 优点 : 提供了一个交互式的环境,用户可以在容器内探索和运行命令,非常适合开发和测试。 不需要预先定义要运行的命令或脚本,增加了灵活性。 缺点 : 交互式使用可能不适合自动化脚本或批处理作业。 在容器内手

    2024年02月22日
    浏览(40)
  • PCB四层板、六层板层叠推荐设计,常见层叠方案优缺点

    笔者电子信息专业硕士毕业,获得过多次电子设计大赛、大学生智能车、数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究。对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验,共同互勉! 全套资料领取扫描文末二维码 !   温馨

    2023年04月17日
    浏览(45)
  • ERC 20 优缺点,以及 eth 3 种转账方式

    定义统一的函数名:名称、发行量、转账函数、转账事件等 以便交易所、钱包进行集成 所有实现了这些函数的合约都是 ERC20Token ERC20 可以表示任何同质的可以交易的内容: 货币、股票、积分、债券、利息... 可以用数量来表示的内容 基本上可以ERC20 表示 以下是一个遇到很多次

    2024年01月19日
    浏览(50)
  • JavaScript之深度克隆、多种实现方式、列举各种方式的优缺点、对象自有属性、拷贝、复制

    在 JavaScript 中,对象和数组是引用类型,当将一个对象或数组赋值给另一个变量时,它们实际上是共享同一块内存空间。这意味着对一个对象或数组的修改会影响到所有引用它的变量。 为了创建一个独立的副本,可以使用深克隆。 JSON.stringify() 方法将 JavaScript 对象转换为一个

    2024年02月02日
    浏览(45)
  • 韦根、RS485、TCP/IP三种门禁通讯方式的优缺点对比

    韦根通讯 韦根通讯协议是由摩托罗拉公司制定的一种通讯协议,具有国际统一标准。它适用于涉及门禁控制系统的读卡器和卡片的许多特性,是智能门禁最早使用的门禁通讯方式,但现在基本已经看不到它的身影了。 优点: 实现简单,基本上任意单片机都可以实现,成本低

    2024年02月13日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包