Readme
Usage
Feed it an image, and get a score for its quality (between 0-100). The lower the score, the higher the quality the image.
Note that the scores are not perfectly deterministic. This is because the model takes random patches to calculate the quality score, and the random patches may be different with each run.
Model description
This model is RankIQA+FT.
The main idea of our approach is to address the problem of limited IQA dataset size, which allows us to train a much deeper CNN without overfitting.
RankIQA
Using the set of ranked images, we train a Siamese network and demonstrate how our approach can be made significantly more efficient than traditional Siamese Networks by forward propagating a batch of images through a single network and backpropagating gradients derived from all pairs of images in the batch. The result is a Siamese network that ranks images by image quality.
RankIQA+FT
Finally, we extract a single branch of the Siamese network (we are interested at this point in the representation learned in the network, and not in the ranking itself), and fine-tune it on available IQA data. This effectively calibrates the network to output IQA measurements.
Caveats and recommendations
The model is not from the original authors and is a second-hand PyTorch implementation. The pre-trained models are from the original authors, and all credit goes to them.