推理的结果与训练后的模型不同

时间:2021-07-26 19:26:16

标签: pytorch inference

我已经在深度时尚数据集上训练了一个模型,现在我正在做推理。问题是我没有得到完整的结果,就像我在训练后测试模型时得到的那样。这里是 pkl 和 pth files

这是我的推理脚本

import torch
import torchvision.models as models
from torchvision import transforms
from torch.autograd import Variable
from PIL import Image
import torch.nn as nn



MODEL_PATH = "/content/deepfashion-dataset/models/atr-recognition-stage-2-resnet34.pkl"
DATA_PATH = "/content/deepfashion-dataset/"
CLASSES_PATH = "/content/deepfashion-dataset/clothes_categories/attribute-classes.txt"


class ClassificationModel():
    
    def __init__(self):
        return
        
    def load(self, model_path, labels_path,  eval=False):
        self.model = torch.load(model_path)
        self.model = nn.Sequential(self.model)
        
        self.labels = open(labels_path, 'r').read().splitlines()
        
        if eval:
            print(model.eval())
        return
    
    def predict(self, image_path):
        
        device = torch.device("cpu")
        img = Image.open(image_path)
        
        test_transforms = transforms.Compose([transforms.Resize(224),
                                      transforms.ToTensor(),
                                      transforms.Normalize([0.485, 0.456, 0.406],
                                                           [0.229, 0.224, 0.225])
                                     ])
        
        image_tensor = test_transforms(img).float()
        image_tensor = image_tensor.unsqueeze_(0)
        inp = Variable(image_tensor)
        inp = inp.to(device)
        output = self.model(inp)
        index = output.data.cpu().numpy().argmax()
        return self.labels[index]

learner = ClassificationModel()
learner.load(MODEL_PATH, CLASSES_PATH)
print(learner.predict(DATA_PATH+"img-lk/IMG_20210530_152109_062.jpg"))

它为此图像提供的输出是:

leather

当我像这样训练模型后测试它时:

def predict_attribute(model, path, display_img=True):
    predicted = model.predict(path)
    if display_img:
        size = 244,244
        img=Image.open(path)
        img.thumbnail(size,Image.ANTIALIAS)
        display(img)
    return predicted[0]

image_path = PATH + 'img-lk/IMG_20210530_152109_062.jpg'
predict_attribute(learn, image_path)

输出是:

(#2) ['faux-leather','leather']

它同时给出了两个输出属性。我的属性也保存在文本 file 中。

0 个答案:

没有答案