整体思路如下:
- 加载模型:使用torch.load()函数加载预训练的模型。
- 读取图像:使用像PIL库的Image.open()函数来读取每个图像文件。
- 预处理图像:将图像转换为模型期望的格式。这通常包括调整图像大小、转换颜色空间(例如,从RGB转换为BGR)、归一化以及添加批处理维度。我们可以使用torchvision.transforms模块来执行这些预处理操作。
- 运行模型:使用model(image)将预处理后的图像传递给模型,并获取输出。
- 解析输出:根据你的模型和问题,解析模型的输出。例如,如果你的模型输出了每个类别的概率,你可能需要使用torch.argmax()来获取最可能的类别。
- 保存结果:将图像文件名和预测结果保存到一个列表或字典中。
- 写入Excel:使用pandas库的DataFrame和to_excel()函数,将结果写入Excel文件
代码如下
import torch
import os
from torchvision import transforms
from PIL import Image
import pandas as pd
# 加载模型
model = torch.load('model.pth')
model.eval()
# 定义图像预处理步骤
preprocess = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
# 存储图像文件名和预测结果
results = []
# 遍历图像目录
for image_file in os.listdir('images'):
# 打开图像文件
image = Image.open(os.path.join('images', image_file))
# 预处理图像
image = preprocess(image)
image = image.unsqueeze(0)
# 运行模型并获取输出
with torch.no_grad():
output = model(image)
# 获取最可能的类别
prediction = torch.argmax(output, 1).item()
# 保存结果
results.append((image_file, prediction))
# 将结果写入Excel文件
df = pd.DataFrame(results, columns=['Image', 'Prediction'])
df.to_excel('results.xlsx', index=False)