bo-zhang-cs / CACNet-Pytorch

Unofficial PyTorch implementation of "Composing Photos Like a Photographer"
MIT License
52 stars 15 forks source link

How can i use the pretrained model #6

Closed slasz closed 1 year ago

slasz commented 1 year ago

Do you have any sample code to use pre-trained model to crop a single image input, or any suggestion ?

bo-zhang-cs commented 1 year ago

Please refer to the test.py. To perform prediction on single image, you need replace the dataloader of test.py with your image file and then preprocess image in the same manner as in Cropping_dataset.py before sending to the network.

slasz commented 1 year ago

Please refer to the test.py. To perform prediction on single image, you need replace the dataloader of test.py with your image file and then preprocess image in the same manner as in Cropping_dataset.py before sending to the network.

Thank you :)

slasz commented 1 year ago
def test_pred(model):
    print('Call test predict !!!')
    img_test = 'img/mm.jpg'
    im = cv2.imread(img_test)
    image_transformer = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize(mean=IMAGE_NET_MEAN, std=IMAGE_NET_STD)])
    im_ts = image_transformer(im)
    logits, kcm, crop = model(im_ts, only_classify=False)

if __name__ == '__main__':
    weight_file = "./pretrained_model/best-FLMS_iou.pth"
    model = CACNet(loadweights=True)
    model.load_state_dict(torch.load(weight_file,map_location=device))
    model = model.to(device).eval()
    test_pred(model)

I try to make the function and call from main and got error below

RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same or input should be a MKLDNN tensor and weight is a dense tensor

slasz commented 1 year ago

Now I can run by making class SingleDataset that inherits from Dataset and I have more questions to ask about can I crop with specific image size

slasz commented 1 year ago

I can run with single image already