web-dev-qa-db-ja.com

事前にトレーニングされたpytorchネットに単一の画像をロードします

ここではまったくの初心者ですが、私は this pytorch SegNet実装を使用しており、50エポックのトレーニングからの重みを含む「.pth」ファイルを使用しています。単一のテスト画像をロードして、正味の予測を確認するにはどうすればよいですか?これはばかげた質問のように聞こえるかもしれませんが、行き詰まっています。私が持っているのは:

from segnet import SegNet
import torch

model = SegNet(2)
model.load_state_dict(torch.load('./model_segnet_Epoch50.pth'))

1つのテスト画像でネットを「使用」するにはどうすればよいですか?

4
Jimbo

output = model(image)

画像はVariableオブジェクトである必要があり、出力も同様であることに注意してください。たとえば、画像がNumpy配列の場合、次のように変換できます。

var_image = Variable(torch.Tensor(image))

0
ginge

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は、ロードする画像のパスと名前です。私はこれから必要な助けを得ました 投稿

4
Tengerye