pytorch試験画像を使用して、次のコード
記事を引用:
https://www.learnopencv.com/pytorch-for-beginners-image-classification-using-pre-trained-models/
__future__インポートprint_functionから、除算
PILのインポートイメージから
輸入トーチ
torchvisionインポート変換から
PLTとしてインポートmatplotlib.pyplot
plt.ion()#インタラクティブモード
#イメージパス
save_path = '/home/guomin/.cache/torch/checkpoints/resnet18-customs-angle.pth'
#ロードデータ----------------------- ------------------------ ----#
訓練のための#データの増強および正規化
検証のための#だけの正規化
#事前定義された変換トレーニング
preprocess_transform = transforms.Compose([
transforms.Resize(256)、
transforms.CenterCrop(224)、
transforms.ToTensor()、
transforms.Normalize([0.485、0.456、0.406]、[0.229、0.224、0.225])
])
class_names = [ '0'、 '180'、 '270'、 '90']
デバイス= torch.device( "CUDA:0"(torch.cuda.is_available場合)他の "CPU")
#モデルとトレーニングをロード------------------------ -------------------- -------#
モデル= torch.load(save_path)
model.eval()
#プリント(モデル)
image_PIL = Image.open( 'image.jpg')
#
image_tensor = preprocess_transform(image_PIL)
#次の文は、image_tensor = torch.unsqueeze(image_tensor、0)に相当します
image_tensor.unsqueeze_(0)
#この文はありません文句を言うでしょう
image_tensor = image_tensor.to(デバイス)
アウト=モデル(image_tensor)
#予測と降順を取得
_、インデックス= torch.sort(OUT、降順= TRUE)
#各予測のパーセント値を返します。
パーセンテージ= torch.nn.functional.softmax(OUT、DIM = 1)[0] * 100
プリント([インデックスでIDX用(class_names [IDX]、パーセント[IDX] .item())[0] [5])
結果が返されました:
[('270', 99.9299545288086), ('90', 0.06985548883676529), ('0', 0.0001458235055906698), ('180', 4.714601891464554e-05)]