torchvision中transforms.Compose学习理解

本文详细介绍torchvision.transforms模块的功能,包括如何使用该模块进行图像的预处理操作,如随机切割、旋转及数据类型转换等,并展示如何组合多个变换进行连续操作。

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

TORCHVISION
该包主要由3个子包组成,分别是:torchvision.datasetstorchvision.modelstorchvision.transforms
主要学习torchvision.transforms,包括常用的图像操作,例如:随机切割,旋转,数据类型转换,图像到tensor ,numpy 数组到tensor , tensor 到 图像等。
transforms.Compose可以组合几个变换连续一起操作
比如

transforms.Compose([
     transforms.CenterCrop(10),
     transforms.ToTensor(),
 ])
import torch import torchvision from PIL import Image import cv2 import numpy as np from model_F_MINST import F_minst import matplotlib.pyplot as plt # 加载模型 model = torch.load("my_model_1", map_location=torch.device("cpu")) model.eval() # 定义类别标签 classes = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'] def preprocess_image(image_path): # 使用PIL打开图片并转换为灰度图 img = Image.open(image_path).convert('L') img_np = np.array(img) # 使用OpenCV进行二值化处理 _, img_bin = cv2.threshold(img_np, 128, 255, cv2.THRESH_BINARY_INV) # 将二值化后的图像转换回PIL图像 img_bin_pil = Image.fromarray(img_bin) # 使用torchvision.transforms进行调整 transform = torchvision.transforms.Compose([ torchvision.transforms.Resize((28, 28)), torchvision.transforms.ToTensor() ]) img_tensor = transform(img_bin_pil) return img_tensor def predict(img_tensor): with torch.no_grad(): img_tensor = torch.reshape(img_tensor, (-1, 1, 28, 28)) output = model(img_tensor) print(f"模型输出:{output}") predicted_class = output.argmax(1)[0].item() return predicted_class img_path = "test_random/Sneaker.webp" img_tensor = preprocess_image(img_path) predicted_class = predict(img_tensor) # 显示图片和预测结果 plt.imshow(torchvision.transforms.ToPILImage()(img_tensor), cmap='gray') plt.title(f'预测类别: {classes[predicted_class]}') plt.axis('off') # 不显示坐标轴 plt.show() 这段代码运行后报错 RuntimeError: CPU dispatcher tracer already initlized
最新发布
03-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值