在预训练的 pytorch 网络中加载单个图像
Load a single image in a pretrained pytorch net
这里是新手,我正在使用 this pytorch SegNet 实现,其中包含来自 50 个时期训练的权重的“.pth”文件。
如何加载单个测试图像并查看净预测?
我知道这听起来像是一个愚蠢的问题,但我被困住了。
我得到的是:
from segnet import SegNet
import torch
model = SegNet(2)
model.load_state_dict(torch.load('./model_segnet_epoch50.pth'))
如何"use"网单测试图片?
output = model(image)
.
请注意,图像应该是 Variable
对象,输出也是。
例如,如果你的图像是一个 Numpy 数组,你可以像这样转换它:
var_image = Variable(torch.Tensor(image))
我提供了一个 ResNet152
预训练模型的例子。
def image_loader(loader, image_name):
image = Image.open(image_name)
image = loader(image).float()
image = torch.tensor(image, requires_grad=True)
image = image.unsqueeze(0)
return image
data_transforms = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor()
])
model_ft = models.resnet152(pretrained=True)
model_ft.eval()
print( np.argmax(model_ft(image_loader(data_transforms, $FILENAME)).detach().numpy()))
$FILENAME
是你要加载的图片的路径和名称。我从这个 post.
得到了必要的帮助
这里是新手,我正在使用 this pytorch SegNet 实现,其中包含来自 50 个时期训练的权重的“.pth”文件。 如何加载单个测试图像并查看净预测? 我知道这听起来像是一个愚蠢的问题,但我被困住了。 我得到的是:
from segnet import SegNet
import torch
model = SegNet(2)
model.load_state_dict(torch.load('./model_segnet_epoch50.pth'))
如何"use"网单测试图片?
output = model(image)
.
请注意,图像应该是 Variable
对象,输出也是。
例如,如果你的图像是一个 Numpy 数组,你可以像这样转换它:
var_image = Variable(torch.Tensor(image))
我提供了一个 ResNet152
预训练模型的例子。
def image_loader(loader, image_name):
image = Image.open(image_name)
image = loader(image).float()
image = torch.tensor(image, requires_grad=True)
image = image.unsqueeze(0)
return image
data_transforms = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor()
])
model_ft = models.resnet152(pretrained=True)
model_ft.eval()
print( np.argmax(model_ft(image_loader(data_transforms, $FILENAME)).detach().numpy()))
$FILENAME
是你要加载的图片的路径和名称。我从这个 post.