Skip to content

zwx8981/LIQE

Repository files navigation

Language-Image Quality Evaluator (LIQE)

The official repo of Blind Image Quality Assessment via Vision-Language Correspondence: A Multitask Learning Perspective (CVPR2023)

Abstract

We aim at advancing blind image quality assessment (BIQA), which predicts the human perception of image quality without any reference information. We develop a general and automated multitask learning scheme for BIQA to exploit auxiliary knowledge from other tasks, in a way that the model parameter sharing and the loss weighting are determined automatically. Specifically, we first describe all candidate label combinations (from multiple tasks) using a textual template, and compute the joint probability from the cosine similarities of the visual-textual embeddings. Predictions of each task can be inferred from the joint distribution, and optimized by carefully designed loss functions. Through comprehensive experiments on learning three tasks - BIQA, scene classification, and distortion type identification, we verify that the proposed BIQA method 1) benefits from the scene classification and distortion type identification tasks and outperforms the state-of-the-art on multiple IQA datasets, 2) is more robust in the group maximum differentiation competition, and 3) realigns the quality annotations from different IQA datasets more effectively.

image

Requirement

torch 1.8+

torchvision

Python 3

pip install ftfy regex tqdm

pip install git+https://github.com/openai/CLIP.git

Training on 10 splits

python train_unique_clip_weight.py

Evaluation on test-sets

python BIQA_benchmark.py

Demo: detailed pipeline

python demo.py

Demo2: import LIQE as a standalone module and perform inference

python demo2.py

Pre-trained weights

Google Drive:

https://drive.google.com/file/d/1GoKwUKNR-rvX11QbKRN8MuBZw2hXKHGh/view?usp=sharing

百度网盘:

链接: https://pan.baidu.com/s/1KHjj7T8y2H_eKE6w7HnWJA 提取码: 2b8v

New! IQA-PyTorch implementation

IQA-PyTorch supports LIQE now! Can be easily used as follows:

import pyiqa
model = pyiqa.create_metric('liqe', as_loss=False) #Re-trained on the official set of KonIQ-10k
score = model(img_path)

or

import pyiqa
model = pyiqa.create_metric('liqe_mix', as_loss=False) #Trained on multiple datasets as in the paper.
score = model(img_path)

Zero-shot (cross-database) performance (SRCC) on the AIGC datasets.

BIQA Model AGIQA-3K AGIQA-1K SJTU-H3D AIGCIQA2023 Paper
DBCNN 0.6454 0.5133 0.4560 0.7301 TCSVT2020
HyperIQA 0.6291 0.5253 0.2696 0.7211 CVPR2020
TReS 0.6460 0.5101 0.2700 0.7410 WACV2022
UNIQUE 0.6659 0.4596 0.7523 0.7605 TIP2021
MUSIQ 0.6294 0.5254 0.5313 0.7358 ICCV2021
PaQ-2-PiQ 0.5023 0.5378 0.2683 0.6425 CVPR2020
CLIPIQA 0.6580 0.3411 -0.0793 0.6088 AAAI2023
CLIPIQA+ 0.6831 0.4461 0.5567 0.7158 AAAI2023
MANIQA 0.6950 0.6180 0.4523 0.7282 CVPRW2022
LIQE (Ours) 0.7212 0.5785 0.6716 0.7435 CVPR2023

Citation

@inproceedings{zhang2023liqe,  
  title={Blind Image Quality Assessment via Vision-Language Correspondence: A Multitask Learning Perspective},  
  author={Zhang, Weixia and Zhai, Guangtao and Wei, Ying and Yang, Xiaokang and Ma, Kede},  
  booktitle={IEEE Conference on Computer Vision and Pattern Recognition},  
  pages={14071--14081},
  year={2023}
}