I have trained my UNet model and got a good accuracy result though for a single image prediction I am suffering more and more. I am using google colab for training purposes and saving my model into google drive. After loading the trained model prediction is not good, say only about 30/40 % though I was getting 90% accuracy during training. What might be the possible cause for this?
My training loop:
for batch in train_loader:
model.train()
images, labels = batch
labels = labels.squeeze(dim=1)
labels = labels.to(torch.long)
iteration += 1
preds = model(images)
loss = criterion(preds, labels)
optimizer.zero_grad()
loss.backward()
optimizer.step()
predicted = torch.argmax(preds.data, 1)
total_train += labels.nelement()
correct_train += predicted.eq(labels.data).sum().item()
train_accuracy = 100 * correct_train / total_train
from PIL import Image
from torchvision import transforms
input_image = Image.open('drive/My Drive/BackgroundImageRemoval/Test Images/400pixel.jpg')
preprocess = transforms.Compose([
transforms.CenterCrop(248),
transforms.Resize(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
input_tensor = preprocess(input_image)
input_batch = input_tensor.unsqueeze(0)
with torch.no_grad():
output2 = model(input_batch)
output2 = output2.squeeze(0)
output2_predictions = output2.argmax(0)
r = Image.fromarray(output2_predictions.byte().cpu().numpy()).resize(input_image.size)
r