Fine-grained Image Quality Assessment for Perceptual Image Restoration

1School of Artificial Intelligence, Xidian University
*Equal contribution. #Corresponding author.

πŸ“° News

  • [2025-11-19] The model is now available on the HuggingFace Hub. A live demo is also available on HuggingFace Spaces for you to try it out directly in your browser.
  • [2025-11-08] πŸŽ‰πŸŽ‰πŸŽ‰Our paper, "Fine-grained Image Quality Assessment for Perceptual Image Restoration", has been accepted to appear at AAAI 2026!
  • [2025-08-20] Code and pre-trained models for FGResQ released.

Quick Start

This guide will help you get started with the FGResQ inference code.

1. Installation

First, clone the repository and install the required dependencies.

git clone https://github.com/sxfly99/FGResQ.git
cd FGResQ
pip install -r requirements.txt

2. Download Pre-trained Weights

You can download the pre-trained model weights from the following link: Download Weights (Google Drive), (Baidu Netdisk) or (HuggingFace)

Place the downloaded files in the weights directory.

  • FGResQ.pth: The main model for quality scoring and ranking.
  • Degradation.pth: The weights for the degradation-aware task branch.

Create the weights directory if it doesn't exist and place the files inside.

FGRestore/
|-- weights/
|   |-- FGResQ.pth
|   |-- Degradation.pth
|-- model/
|   |-- FGResQ.py
|-- requirements.txt
|-- README.md

Usage

The FGResQ provides two main functionalities: scoring a single image and comparing a pair of images.

Initialize the Scorer

First, import and initialize the FGResQ.

from model.FGResQ import FGResQ

# Path to the main model weights
model_path = "weights/FGResQ.pth"

# or use HuggingFace Model
# from huggingface_hub import hf_hub_download
# model_path = hf_hub_download(
#     repo_id="orpheus0429/FGResQ",
#     filename="weights/FGResQ.pth"
# )

# Initialize the inference engine
model = FGResQ(model_path=model_path)

1. Single Image Input Mode: Quality Scoring

You can get a quality score for a single image. The score typically ranges from 0 to 1, where a higher score indicates better quality.

image_path = "path/to/your/image.jpg"
quality_score = model.predict_single(image_path)
print(f"The quality score for the image is: {quality_score:.4f}")

2. Pairwise Image Input Mode: Quality Ranking

You can also compare two images to determine which one has better quality.

image_path1 = "path/to/image1.jpg"
image_path2 = "path/to/image2.jpg"

comparison_result = model.predict_pair(image_path1, image_path2)

# The result includes a human-readable comparison and raw probabilities
print(f"Comparison: {comparison_result['comparison']}")
# Example output: "Comparison: Image 1 is better"

print(f"Raw output probabilities: {comparison_result['comparison_raw']}")
# Example output: "[0.8, 0.1, 0.1]" (Probabilities for Image1 > Image2, Image2 > Image1, Image1 β‰ˆ Image2)

Citation

If you find this work is useful, pleaes cite our paper!


@article{sheng2025fgresq,
  title={Fine-grained Image Quality Assessment for Perceptual Image Restoration},
  author={Sheng, Xiangfei and Pan, Xiaofeng and Yang, Zhichao and Chen, Pengfei and Li, Leida},
  journal={arXiv preprint arXiv:2508.14475},
  year={2025}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for orpheus0429/FGResQ

Finetuned
(47)
this model

Space using orpheus0429/FGResQ 1