在pytorch中加载测试数据

问题描述 投票:0回答:2

如何在 pytorch 中加载我自己的测试数据(image.jpg)来测试我的 CNN?

python python-3.x deep-learning conv-neural-network pytorch
2个回答
1
投票

您需要向网络提供与训练中相同的图像:也就是说,您应该应用完全相同的转换以获得相似的结果。

假设您的网络使用此代码(或类似代码)进行训练,您可以看到输入图像(用于验证)经历了以下转换

transforms.Compose([
            transforms.Resize(256),
            transforms.CenterCrop(224),
            transforms.ToTensor(),
            normalize,
        ])),

按照

torchvision.transforms
文档,您可以看到输入图像经过:

  • 调整大小至 256x256 像素
  • 从图像中心裁剪 224x224 矩形
  • 图像从 uint8 数据类型转换为范围内的浮点数
    [0, 1]
    ,并转置为 3×224×224 数组
  • 通过减去平均值并除以标准差来对图像进行标准化

您可以对任何图像手动执行所有这些操作

import numpy as np
from PIL import Image

pil_img = Image.open('image.jpg').resize((256, 256), Image.BILINEAR)  # read and resize
# center crop
w, h = pil_img.size
i = int(round((h - 224) / 2.))
j = int(round((w - 224) / 2.))
pil_img = pil_img.crop((j, i, j+224, i+224))
np_img = np.array(pil_img).astype(np.float32) / 255.
np_img = np.transpose(np_img, (2, 0, 1))  
# normalize
mean = [0.485, 0.456, 0.406]
std = [0.229, 0.224, 0.225]
for c in range(3):
  np_img = (np_img[c, ...] - mean[c]) / std[c]

一旦您准备好模型

np_img
,您就可以运行前馈传递:

pred = model(np_img[None, ...])  # note that we add a singleton leading dim for batch

1
投票

我的问题是加载测试数据,我找到了解决方案

test_data = datasets.ImageFolder('root/test_cnn', transform=transform)

例如,如果我有 2 个包含图像的目录 cat 和dog(在 test_cnn 目录中),则 Object ImageFolder 会自动将类 cat 和 Dog 分配给我的图像。

在测试期间,我只需放弃课程即可。

© www.soinside.com 2019 - 2024. All rights reserved.