Pytorch上采样

文章目录

    • Upsample
    • 特殊上采样

Upsample

所谓上采样,实则是一个插值过程。所以上采样对象在初始化时,需要指定一个插值类型,Upsample是torch.nn中最基础的上采样类,初始化参数如下

Upsample(size=None, scale_factor=None, mode='nearest', align_corners=None)

其中,scale_factor为上采样的倍数,align_corners为True时,输出的角像素将与输出张量对齐。

插值模式可选值包括

  • nearest 邻近插值
  • linear 线性插值
  • bilinear 双线性插值
  • bicubic 双三次插值
  • trilinear 三线性插值

记scale_factor为 k k k,则输入和输出数组形状的关系如下

1D2D3D
输入 [ N , C , W ] [N,C,W] [N,C,W] [ N , C , H , W ] [N,C,H,W] [N,C,H,W] [ N , C , D , H , W ] [N,C,D,H,W] [N,C,D,H,W]
输出 [ N , C , k W ] [N,C,kW] [N,C,kW] [ N , C , k H , k W ] [N,C,kH,kW] [N,C,kH,kW] [ N , C , k D , k H , k W ] [N,C,kD,kH,kW] [N,C,kD,kH,kW]

下面针对一维数组测试一下

import torch
from torch import nn
x = torch.arange(1, 5, dtype=torch.float32).view(1, 1, 4)
up = nn.Upsample(scale_factor=2, mode='linear')
up(x)
# tensor([[[1.00, 1.25, 1.75, 2.25, 2.75, 3.25, 3.75, 4.00]]])

可见,up将 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4变成了 1.00 , 1.25 , 1.75 , 2.25 , 2.75 , 3.25 , 3.75 , 4.00 1.00, 1.25, 1.75, 2.25, 2.75, 3.25, 3.75, 4.00 1.00,1.25,1.75,2.25,2.75,3.25,3.75,4.00

特殊上采样

可能是针对二维图像的上采样操作比较多,故而pytorch专门为这种情况封装了两个类,并且分别提供了邻近插值和双线性插值,其初始化参数如下

UpsamplingNearest2d(size=None, scale_factor=None)
UpsamplingBilinear2d(size=None, scale_factor=None)

二者的输入均为 N , C , H , W N,C,H,W N,C,H,W,输出均为 N , C , k H , k W N,C,kH,kW N,C,kH,kW,与UpSample的二维情况一致。

x0 = torch.arange(1, 17, dtype=torch.float32).view(1, 1, 4, 4)
upNearest = nn.UpsamplingNearest2d(scale_factor=2)
upBilinear = nn.UpsamplingBilinear2d(scale_factor=2)

xN = upNearest(x0)
xB = upBilinear(x0)

下面可以画一下二者的区别

import matplotlib.pyplot as plt
fig = plt.figure()
for i, x in enumerate([x0, xN, xB],1):
    ax = fig.add_subplot(1,3,i)
    plt.imshow(torch.squeeze(x))

plt.show()

效果如下

在这里插入图片描述

第二个图像为邻近插值,即插入值等于某个附近点的值,所以从结果来看,尽管像素尺寸从 4 × 4 4\times4 4×4变成了 8 × 8 8\times8 8×8,但相邻的 2 × 2 2\times2 2×2的像素格子中,灰度值是一致的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/286987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Django(五)

员工管理系统 1.新建项目 2.创建app python manage.py startapp app012.1 注册app 3. 设计表结构(django) from django.db import modelsclass Department(models.Model):""" 部门表 """title models.CharField(verbos…

AJAX(一)

一、AJAX简介 AJAX全称为 Asynchronous JavaScript And XML,就是异步的JS和XML。 通过AJAX可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据 AJAX不是新的编程语言(使用的js),而是一种将现有的标准组合在一起使用的…

【Apache-2.0】springboot-openai-chatgpt超级AI大脑产品架构图

springboot-openai-chatgpt: 一个基于SpringCloud的Chatgpt机器人,已对接GPT-3.5、GPT-4.0、百度文心一言、stable diffusion AI绘图、Midjourney绘图。用户可以在界面上与聊天机器人进行对话,聊天机器人会根据用户的输入自动生成回复。同时也支持画图&a…

解决json.decoder.JSONDecodeError: Extra data: line 1 column 721 (char 720)问题

python中将字符串序反列化成json格式时报错 fn result_json[0].decode(utf-8).strip(\00) json_object json.loads(fn) print(type(json_object))排查了以下原因应该是序列化的字符串全都在一行,json库不能一次性处理这么长的序列

每天刷两道题——第三天

1.1两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换) 输入:[1,2,3,4] 输出:[2,1,4,3…

摄像头监控系统/视频监控云平台EasyCVR鼠标指示故障,该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

OLED硬件电路设计

OLED,全称有机自发光二极管。其主要通过控制注入子像素发光材料的电流大小,实现不同颜色的显示。 OLED屏幕的每个像素点都可以理解成一颗独立控制的灯珠,开启时只需要进行显示的像素点即可。不像LCD一样,显示需要整块背光的亮度,…

fastadmin传递参数给html和js,通过身份判断动态显示列表头部住店和离店按钮

首先将管理员或者酒店人员的身份传递给html和js做按钮显示权限 roomorder.php index.html {if $admin_id != 1}<a class="btn btn-success btn-change btn-start btn-disabled" data-params=

2023年总结及2024年目标之关键字“提速”

1. 感受 时光荏苒&#xff0c;都365天下来了&#xff0c;从一开始试水&#xff0c;到后面为素材焦虑&#xff0c;然后有存货了&#xff0c;渐渐也就习惯成自然了&#xff0c;现在回头看&#xff0c;还是那句话"事非经过不知难"&#xff0c;后面再来一句&#xff0c;…

【Linux操作系统】探秘Linux奥秘:进程与任务管理的解密与实战

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;诗赋清音&#xff1a;柳垂轻絮拂人衣&#xff0c;心随风舞梦飞。 山川湖海皆可涉&#xff0c;勇者征途逐星辉。 目录 &#x1fa90;1 初识Linux OS &…

SpringSecurity-2.7中跨域问题

SpringSecurity-2.7中跨域问题 访问测试 起因 写这篇的起因是会了解到 SSM(CrosOrigin)解决跨域,但是会在加入SpringSecurity配置后,这个跨域解决方案就失效了,而/login这个请求上是无法添加这个注解或者通过配置(WebMvcConfig)去解决跨域,所以只能使用SpringSecurity提供的.c…

Jmeter实现分布式并发

Jmeter实现分布式并发&#xff0c;即使用远程机执行用例。 环境&#xff1a; VMware Fusion Windows系统是win7。 操作过程 1、Master在jmeter.properties添加remote_hosts 2、Slave在jmeter.properties添加server_port 同时把remote_hosts修改为和主机&#xff08;Master…

c++初阶-------类和对象

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

以问答的方式解释编译器与解释器

编译器 编译器是什么&#xff1f; 编译器是一种计算机程序&#xff0c;它可以将源代码转换成目标代码。编译器通常包括一个词法分析器、一个语法分析器和一个代码生成器。 编译器将源代码转换为可执行的目标代码&#xff0c;可以在计算机上运行。编译器通常还负责优化生成的代码…

polar CTF web 被黑掉的站

一、题目 二、解答 1、dirsearch 扫目录 看到shell.php和index.php.bak 一看就是爆破&#xff0c;字典都给了&#xff0c;最后得到为 nikel

【数据结构】二叉搜索(查找/排序)树

一、二叉搜索树基本概念 1、定义 二叉搜索树&#xff0c;又称为二叉排序树&#xff0c;二叉查找树&#xff0c;它满足如下四点性质&#xff1a; 1&#xff09;空树是二叉搜索树&#xff1b; 2&#xff09;若它的左子树不为空&#xff0c;则左子树上所有结点的值均小于它根结…

2023年终总结与展望

2023年终总结 自2019年3月13日入驻CSDN&#xff0c;至今四年零九个月。截至2023年12月31日&#xff0c;CSDN博客已发原创博文120篇&#xff0c;粉丝9822位&#xff0c;访问量超过176万次。 2022年12月31日数据情况&#xff1a; 2023年12月31日数据情况&#xff1a; 从 年终数…

跟着cherno手搓游戏引擎【2】:日志系统spdlog和premake的使用

配置&#xff1a; 日志库文件github&#xff1a; GitHub - gabime/spdlog: Fast C logging library. 新建vendor文件夹 将下载好的spdlog放入 配置YOTOEngine的附加包含目录&#xff1a; 配置Sandbox的附加包含目录&#xff1a; 包装spdlog&#xff1a; 在YOTO文件夹下创建…

再见2023,你好2024(附新年烟花python实现)

亲爱的朋友们&#xff1a; 写点什么呢&#xff0c;我已经停更两个月了。2023年快结束了&#xff0c;时间真的过得好快&#xff0c;总要写点什么留下纪念吧。这一年伴随着许多挑战和机会&#xff0c;给了我无数的成长和体验。坦白说&#xff0c;有时候我觉得自己好像是在时间的…

一起学docker(四)| 数据卷 + 简单应用部署(MySQL,Tomcat,Nginx,Redis)

Docker 容器数据卷 Docker容器产生的数据&#xff0c;如果不备份&#xff0c;那么当容器实例删除后&#xff0c;容器内的数据也就消失了。需要对数据进行持久化。 为了保存docker中的数据&#xff0c;可以使用数据卷。 是什么 卷就是目录或文件&#xff0c;存在于一个或多个…