如何在单幅图像上加载Fastai模型并进行预测



我使用Kaggle笔记本训练了一个fastai模型,它保存了模型,但如何加载模型是问题,我尝试了不同的方法,如下面给出的方法。即使它确实加载了模型,它也没有任何预测函数,我只能看到model.eval()。第二个问题是,当模型在谷歌协作上训练时,它甚至没有得到单个图像,我确实尝试将图像转换为NumPy方式和另一种方式,但两者都没有成功。

我在这段代码后附上了模型训练的kaggle链接,保存的模型和最后的测试图像

#Code for Loading model
from fastai import * 
from fastai.vision import *
import torch
loc = torch.load('/content/gdrive/MyDrive/Data Exports/35k data/stage-1.pth')
body = create_body(models.resnet18, True, None)
data_classes = 4
nf = callbacks.hooks.num_features_model(body) * 2
head = create_head(nf, data_classes, None, ps=0.5, bn_final=False)
model = nn.Sequential(body, head)

Kaggle模型来自Kaggle数据集的测试图像

保存模型

如何加载pytorch模型:

loc = torch.load('/content/gdrive/MyDrive/Data Exports/35k data/stage-1.pth')
model = ... # build your model
model.load_state_dict(loc)
model.eval()

现在您应该能够简单地使用forward pass来生成您的预测:

input = ... # your input image
pred = model(input) # your class predictions

不要忘记首先将输入转换为火炬张量,您可能需要使用DataLoader以方便使用。

最新更新