pytorch中的transforms.resize()函数

ops/2024/10/20 18:54:53/

transforms.Resize 是 PyTorch 的 torchvision.transforms 模块中的一个函数,它用于调整图像的大小。这个函数可以接收一个整数或一个元组作为参数,以指定输出图像的大小。

使用方式

  •  size 参数是一个整数时,表示将图像的较短边缩放到指定长度,同时保持长宽比。例如,transforms.Resize(256) 会将图像的较短边调整为 256 像素,而较长边将按比例缩放。
  • 当 size 参数是一个元组 [width, height] 时,表示将图像的宽度和高度分别调整为指定的尺寸。例如,transforms.Resize([256, 256]) 会将图像的宽度和高度都调整为 256 像素。

插值方法

除了 size 参数外,transforms.Resize 还接受一个可选的 interpolation 参数,用于指定图像缩放时采用的插值方法。插值方法决定了新图像中像素值的计算方式,从而影响缩放后图像的质量。PyTorch 提供了多种插值方法,如 InterpolationMode.NEARESTInterpolationMode.BILINEAR 和 InterpolationMode.BICUBIC 等。

示例代码

以下是一个使用 transforms.Resize 的示例代码:

from torchvision import transforms
# 创建一个 Resize 变换对象,将图像缩放到 256x256
resize_transform = transforms.Resize((256, 256))
# 假设你有一个 PIL Image 对象 image
# 使用 Resize 变换对象调整图像大小
resized_image = resize_transform(image)

在这个示例中,我们首先导入了 transforms 模块,然后创建了一个 Resize 变换对象,指定将图像缩放到 256x256。然后,我们使用这个变换对象对一个 PIL Image 对象进行了处理,得到了缩放后的图像。

PIL Image 对象

PIL Image 对象通常是指 Python Imaging Library (PIL) 或其分支库 Pillow(PIL 的一个更友好和易于安装的版本)中的图像对象。Pillow 提供了许多用于打开、操作和保存图像的方法和属性。

以下是如何使用 Pillow 库创建和操作 PIL Image 对象的一些基本示例:

安装 Pillow

如果你还没有安装 Pillow,可以通过 pip 安装它:

pip install pillow

使用 PIL Image 对象

打开图像
from PIL import Image
# 打开一个图像文件
image = Image.open('path_to_your_image.jpg')
# 显示图像(在某些环境中,如 Jupyter Notebook)
image.show()
调整图像大小

虽然前面提到了 transforms.Resize 用于 PyTorch 的数据变换,但你也可以使用 Pillow 的 resize 方法来调整图像大小:

# 使用 resize 方法调整图像大小
resized_image = image.resize((256, 256)) # 调整为 256x256 像素
resized_image.show()
裁剪图像
# 裁剪图像
# 参数是一个四元组,定义了左、上、右、下的像素坐标
cropped_image = image.crop((left, upper, right, lower))
cropped_image.show()
旋转图像
# 旋转图像
rotated_image = image.rotate(45) # 旋转 45 度
rotated_image.show()
保存图像
# 保存图像到文件
resized_image.save('resized_image.jpg')
转换为 NumPy 数组

如果你需要将 PIL Image 对象转换为 NumPy 数组以便在 PyTorch 或其他科学计算库中使用,可以使用 numpy.array()

import numpy as np
# 将 PIL Image 转换为 NumPy 数组
np_image = np.array(image)

注意:PIL Image 对象通常是使用 8 位整数表示的,范围从 0 到 255。如果你需要浮点数表示或归一化的图像,你可能需要进一步处理这个 NumPy 数组。

转换为 PyTorch Tensor

你也可以直接将 PIL Image 对象转换为 PyTorch Tensor:

from torchvision import transforms
# 创建一个转换对象,用于将 PIL Image 转换为 PyTorch Tensor
to_tensor = transforms.ToTensor()
# 应用转换,将 PIL Image 转换为 PyTorch Tensor
tensor_image = to_tensor(image)
# 现在 tensor_image 是一个 PyTorch Tensor,其值范围在 [0.0, 1.0] 之间

http://www.ppmy.cn/ops/37641.html

相关文章

java中数组array

数组 注意:一旦初始化完成,数组的长度就确定了且!不可更改 创建时,在内存中开辟一整块“连续的空间”, 二维数组 int[][] arr1 new int[][]{{123},{321,12}}; int[][] arr3 new int[2][]; // 因为内层未声明&#x…

Slurm运行pytorch深度学习模型(小白版)

Slurm背景: Slurm 是一种开源的作业调度系统,它用于管理大型计算集群中的计算资源和作业。你可以把它想象成一个“交通管制员”,负责管理计算集群中的各种任务,确保它们按照用户设定的规则有序地执行。 Slurm 的主要功能包括&…

第50期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

Pytorch 实现情感分析

情感分析 情感分析是 NLP 一种应用场景,模型判断输入语句是积极的还是消极的,实际应用适用于评论、客服等多场景。情感分析通过 transformer 架构中的 encoder 层再加上情感分类层进行实现。 安装依赖 需要安装 Poytorch NLP 相关依赖 pip install t…

Java | Leetcode Java题解之第68题文本左右对齐

题目&#xff1a; 题解&#xff1a; class Solution {private String line(List<String> list,int maxWidth,int totalLength,boolean isLast){StringBuilder sb new StringBuilder();sb.append(list.get(0));if(list.size() 1){String ap " ".repeat(maxW…

uniapp离线在Xcode上打包后提交审核时提示NSUserTrackingUsageDescription的解决方法

uniapp离线在Xcode上打包后提交审核时提示NSUserTrackingUsageDescription的解决方法 问题截图&#xff1a; 亲测有效的方法 方法一&#xff1a; 选择通过uniapp的开发工具Hbuilder来进行在线打包&#xff0c;取消默认勾选的以下选项。 然后进行在线打包就不会存在提交审…

了解 websocket

​ 1. 概念 1、 websocket 是一种双向通行协议。实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的&#xff1b; 2、websocket连接成功后&#xff0c;只要连接不断开&#xff0c;通信就会一保持着&#xff1b; 3、要打开一个 WebS…

数据挖掘流程是怎样的?数据挖掘平台基本功能有哪些?

数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。 数据挖掘的流程是&#xff1a; 清晰地定义出业务问题&#xff0c;确定数据挖掘的目的。 数据准备: 数据准备包括&am…