Home

Awesome

NeuralSBS and SBS180K dataset

PyTorch Implementation of Neural Side-By-Side: Predicting Human Preferences for No-Reference Super-Resolution Evaluation

SBS180K dataset

You can download the dataset (37 GB) from this Dropbox url.

Pretrained model.

To build a model, use the following code.

from model import get_score_model
score_model = get_score_model('inception_v3', pretrained=True)

Note that pretrained=True to ensure correct normalization coming with the torchvision implementation of Inception.

Checkpoint used for evaluation is available at this Dropbox url.

It can be loaded as

score_model.load_state_dict(torch.load('neuralsbs.pth')['model_state_dict'])
score_model.eval()

Evaluation

We used Albumentations to simultaneously augment both images. Images have to be converted to the BGR format first, and scaled to the [0, 1] range. Then the score can be computed as follows.

from transform import get_test_transform
transform = get_test_transform(normalize=True, resize=299)
# load im1, im2 in the format described above, e.g., with cv2.imread and divide by 255
processed = transform(image=im1, image2=im2)
im1, im2 = processed['image'], processed['image2']
im = torch.stack((im1, im2)).unsqueeze(0)
# input to the model is of shape B x 2 x C x H x W 
with torch.no_grad():
    score = torch.sigmoid(score_model(im)).item()

If you used our model or dataset in your research, please consider citing our paper.

@InProceedings{Khrulkov_2021_CVPR,
    author    = {Khrulkov, Valentin and Babenko, Artem},
    title     = {Neural Side-by-Side: Predicting Human Preferences for No-Reference Super-Resolution Evaluation},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    month     = {June},
    year      = {2021},
    pages     = {4988-4997}
}