pytorch.tensor格式图像的resize操作

这篇博客介绍了如何在PyTorch中利用torchvision.transforms.Resize对图像张量进行尺寸调整。通过示例代码展示了从读取图像到转换为张量,再使用Resize操作进行resize,最后将结果转回numpy数组并保存的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在pytorch中,输入网络的图像的shape=[B,C,H,W].

有时我们需要在网络中对图像张量进行resize操作,这时就要用到transforms.Resize([H,W]) 操作。示例如下:

import cv2
import numpy as np
import torch
from torchvision.transforms import Resize 

im1 = cv2.imread("./datasets/frame_0001.png").transpose([2,0,1]) # shape=[C,H,W]
im1_torch = torch.from_numpy(im1.astype(np.float32)).unsqueeze(0) # shape=[B,C,H,W]
# im1_torch可以看作是输入torch神经网络的tensor.

torch_resize = Resize([256,256]) # 定义Resize类对象
im1_resize = torch_resize(im1_torch)
# torchvision.transforms.Resize([H,W])的作用是把最后两个维度resize成[H,W].
# 所以,这对图像的通道顺序有要求。

im1_resize_np = im1_resize.data.cpu().numpy()[0].transpose(1, 2, 0) # shape=[H,W,C]

print(im1.shape)
print(im1_resize.shape)
print(im1_resize_np.shape)

cv2.imwrite("./datasets/frame_0001_resize.jpg",im1_resize_np)

参考: Pytorch transforms.Resize()的简单用法_xiongxyowo的博客-CSDN博客_transforms.resize

PyTorch中进行预测的一种常见方法是使用torch.softmax()方法。首先,我们需要创建一个网络对象net,并使用net.load_state_dict()方法或torch.load()方法加载预训练的权重。接下来,我们需要将输入图像进行预处理,例如使用transforms.Resize()方法调整大小,transforms.ToTensor()方法将其转换为张量,以及transforms.Normalize()方法进行归一化。然后,我们可以使用torch.unsqueeze()方法将图像的维度扩展为[N, C, H, W],其中N表示批量大小。接下来,我们可以使用torch.no_grad()上下文管理器来关闭梯度计算,以提高预测的效率。在torch.no_grad()的作用域内,我们可以使用net对象对输入图像进行预测,得到输出张量outputs。最后,我们可以使用torch.softmax()方法对outputs进行softmax操作,以获得预测的概率分布。[1][2] 另外,还有一种使用model.eval()方法进行预测的方式。首先,我们需要调用model.eval()方法将模型设置为评估模式。然后,我们可以使用torch.no_grad()上下文管理器来关闭梯度计算。在torch.no_grad()的作用域内,我们可以将输入图像传递给模型,并使用模型的验证方法进行预测。例如,我们可以使用model(img.to(device))来加载输入数据,并使用predictions["boxes"]、predictions["labels"]和predictions["scores"]来获取预测的边界框、类别和分数。最后,我们可以将这些预测结果转换为numpy数组,以便进一步处理。[3]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值