- 🤖 Machine-Centric: We bypass human perception to evaluate images from the perspective of the deep learning models that use them.
- 📈 Task-Driven Metrics: Directly measure how degradations like blur, noise, or compression artifacts impact the performance of downstream vision tasks.
- 💡 A New Paradigm: MIQA offers a new lens for optimizing image processing pipelines where machines make the final decision.
-
Background:
Machine vision systems excel in controlled environments but suffer severe performance degradation from image distortions in real-world deployment. Traditional image quality assessment prioritizes human perceptual fidelity, creating a fundamental mismatch with machine sensitivities.
-
Key Benefits:
The machine-centric framework enables quality monitoring across acquisition, transmission, and processing stages, ensuring reliable machine vision performance and supporting optimization of automated visual systems in adverse conditions.
🗝️ Key Results
Our results provide clear evidence of MIQA's effectiveness across three representative computer vision tasks: classification, detection, and segmentation. The framework consistently identifies images that degrade model performance. By filtering these detrimental samples, MIQA directly leads to improved outcomes and demonstrates the universal utility of a machine-centric approach. This transforms quality assessment from a passive metric into a proactive tool, safeguarding downstream models against the unpredictable image quality of real-world conditions and ensuring robust performance when it matters most.
To get started, you'll need to install two essential libraries: mmcv and mmsegmentation.
Install mmcv and mmsegmentation
-
For the latest version of mmsegmentation, follow the installation guide here: MMsegmentation Installation Guide
-
Alternatively, you can install a specific version of mmsegmentation based on your CUDA and PyTorch versions. You can find the version compatibility details here: MMCV Installation Guide
If your CUDA version is relatively high, such as 12.7 or higher, you might encounter a version mismatch with mmcv. In this case, you may need to install a compatible version of mmcv.
Install a compatible version of mmcv
For example, if you need a specific version of mmcv, you can uninstall the existing versions and install a compatible one as follows:
pip uninstall mmcv mmcv-full -y
mim install "mmcv>=2.0.0rc4,<2.2.0" # The version specified here is just an example. You should choose a version that is compatible with your CUDA and PyTorch setup.*pip install -r requirements.txtComposite Metric
| Method | Image Classification (SRCC / PLCC & Download) |
Object Detection (SRCC / PLCC & Download) |
Instance Segmentation (SRCC / PLCC & Download) |
Training Label Type |
|---|---|---|---|---|
| ResNet-18 | 0.5131 / 0.5427 Google Drive |
0.7541 / 0.7734 Google Drive |
0.7582 / 0.7790 Google Drive |
Composite Score |
| ResNet-50 | 0.5581 / 0.5797 Google Drive |
0.7743 / 0.7925 Google Drive |
0.7729 / 0.7933 Google Drive |
Composite Score |
| EfficientNet-b1 | 0.5901 / 0.6130 Google Drive |
0.7766 / 0.7950 Google Drive |
0.7808 / 0.7999 Google Drive |
Composite Score |
| EfficientNet-b5 | 0.6330 / 0.6440 Google Drive |
0.7866 / 0.8041 Google Drive |
0.7899 / 0.8074 Google Drive |
Composite Score |
| ViT-small | 0.5998 / 0.6161 Google Drive |
0.7992 / 0.8142 Google Drive |
0.7968 / 0.8139 Google Drive |
Composite Score |
| RA-MIQA (Ours) | 0.7003 / 0.6989 Google Drive |
0.8125 / 0.8264 Google Drive |
0.8188 / 0.8340 Google Drive |
Composite Score |
Accuracy Metric
| Method | Image Classification (SRCC / PLCC & Download) |
Object Detection (SRCC / PLCC & Download) |
Instance Segmentation (SRCC / PLCC & Download) |
Training Label Type |
|---|---|---|---|---|
| ResNet-50 | 0.4734 / 0.4411 Google Drive |
0.6955 / 0.6898 Google Drive |
0.6863 / 0.6847 Google Drive |
Accuracy Score |
| EfficientNet-b5 | 0.5586 / 0.5149 Google Drive |
0.7042 / 0.6991 Google Drive |
0.6933 / 0.6949 Google Drive |
Accuracy Score |
| ViT-small | 0.5788 / 0.5197 Google Drive |
0.7121 / 0.7052 Google Drive |
0.7168 / 0.7146 Google Drive |
Accuracy Score |
| RA-MIQA (Ours) | 0.6573 / 0.5823 Google Drive |
0.7448 / 0.7370 Google Drive |
0.7363 / 0.7327 Google Drive |
Accuracy Score |
Consistency Metric
| Method | Image Classification (SRCC / PLCC & Download) |
Object Detection (SRCC / PLCC & Download) |
Instance Segmentation (SRCC / PLCC & Download) |
Training Label Type |
|---|---|---|---|---|
| ResNet-50 | 0.5989 / 0.6551 Google Drive |
0.8252 / 0.5457 Google Drive |
0.8320 / 0.8480 Google Drive |
Consistency Score |
| EfficientNet-b5 | 0.6774 / 0.7168 Google Drive |
0.8353 / 0.8530 Google Drive |
0.8419 / 0.8564 Google Drive |
Consistency Score |
| ViT-small | 0.6798 / 0.7189 Google Drive |
0.8459 / 0.8620 Google Drive |
0.8487 / 0.8616 Google Drive |
Consistency Score |
| RA-MIQA (Ours) | 0.7707 / 0.7866 Google Drive |
0.8526 / 0.8692 Google Drive |
0.8632 / 0.8756 Google Drive |
Consistency Score |
Run MIQA inference for a single image using command-line interface:
# Evaluate a single image for classification-oriented MIQA
python img_inference.py --input path/to/image.jpg --task cls --model ra_miqa
Process all images within a directory
# Assess all images in a directory (e.g., detection-oriented MIQA)
python img_inference.py --input ./assets/demo_images/coco_demo --task det --model ra_miqa
To save outputs and generate visualized results:
# Save the predicted scores and visualization for a single image
python img_inference.py --input path/to/image.jpg --task cls --model ra_miqa --save-results --visualize
# Save batch results and generate visualization for a directory
python img_inference.py --input ./assets/demo_images/imagenet_demo --task ins --save-results --visualize
📸 Results of MIQA Prediction
Pretrained model: RA-MIQA | Trained label: Composite Score | Distortion type: Motion Blur | Task: Classification-oriented MIQA
Pretrained model: RA-MIQA | Trained label: Composite Score | Distortion type: JPEG Compression | Task: Detection-oriented MIQA
Video Quality Assessment offers two workflows: (1) Frame-by-Frame Annotation: Generates fully annotated videos for detailed visual inspection. Suitable for demos and qualitative analysis but computationally intensive. (2) Selective Sampling & Aggregation: Samples frames to produce plots and structured data (.json) for efficient, quantitative analysis. Ideal for batch processing and reporting.
Run MIQA video inference for one video and save the annotated output.
# Evaluate a single video using RA-MIQA (classification-oriented MIQA)
python video_annotator_inference.py --input assets/demo_video/brightness_distorted.mp4 --task cls --model ra_miqaProcess all videos within a given folder:
# Assess all videos in a directory for object detection-oriented MIQA
python video_annotator_inference.py --input assets/demo_video/ --task det --model ra_miqaThe primary output is a new .mp4 video file. This video shows the original footage playing alongside a dynamic side panel that displays the real-time quality score and a line chart that grows as the video progresses.
🎥 Example: Frame-wise MIQA Predictions on Videos
| Brightness Variation | Compression Artifacts | Minimal Perceptual Distortion |
|---|---|---|
brightness_distorted_miqa_ra_miqa_cls.mp4 |
jpeg_distorted_miqa_ra_miqa_det.mp4 |
B314_miqa_ra_miqa_ins.mp4 |
For efficient, quantitative analysis, this script samples frames from the video instead of processing all of them. It is significantly faster and designed for generating analytical reports.
# Analyze a video, sample frames, and create a dual-granularity plot
python video_analytics_inference.py --input assets/demo_video/gaussian_distorted.mp4 --task ins --visualize --viz-granularity bothThis workflow is highly optimized for batch processing.
# Analyze all videos in a directory, sampling 120 frames from each
python video_analytics_inference.py --input assets/demo_video/ --task det --video-frames 120 --visualize
python video_analytics_inference.py --input assets/demo_video/jpeg_distorted.mp4 --task det --visualize --viz-granularity both
# viz-granularity both : Specifies the type of plot to generate. 'composite' creates a comprehensive, side-by-side comparison chart showing:
#1. The raw, frame-level quality scores. 2. The smoothed, per-second average quality scores.This process does not create a new video. Instead, it generates two key outputs for each video analyzed:
- A
.pngimage: A detailed time-series plot showing the quality score fluctuation over the video's duration. - A
.jsonfile: A structured data file containing per-second aggregated scores, overall statistics (average, min, max, std. dev), and video metadata.
🎥 Example: Selective Sampling MIQA Predictions on Videos
| Brightness Variation | Compression Artifacts | Minimal Perceptual Distortion |
|---|---|---|
![]() |
![]() |
![]() |
CUDA_VISIBLE_DEVICES=0,1 python train.py \
--dataset 'miqa_cls' \
--path_miqa_cls 'path/to/datasets_miqa_cls' \
--train_split_file '../data/dataset_splitting/miqa_cls_train.csv' \
--val_split_file '../data/dataset_splitting//miqa_cls_val.csv' \
--metric_type 'composite' --loss_name 'mse' --is_two_transform \
-a 'RA-MIQA' --pretrained --transform_type 'simple_transform' \
-b 256 --epochs 5 --warmup_epochs 1 --validate_num 2 --lr 1e-4 \
--image_size 288 --crop_size 224 --workers 8 -p 100 \
--multiprocessing-distributed --world-size 1 --rank 0More training scripts are available in the "scripts" directory.
# Evaluate on miqa_cls val set
python evaluate.py --model_name ra_miqa --train_dataset cls --test_dataset cls --metric_type composite
# Cross-dataset evaluation: evaluate the RA-MIQA model trained on miqa_cls dataset and tested on miqa_det dataset
python evaluate.py --model_name ra_miqa --train_dataset cls --test_dataset det --metric_type compositeTabel 1: Performance Benchmark on Composite Score
| Category | Method | Image Classification | Object Detection | Instance Segmentation | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SRCC ↑ | PLCC ↑ | KRCC ↑ | RMSE ↓ | SRCC ↑ | PLCC ↑ | KRCC ↑ | RMSE ↓ | SRCC ↑ | PLCC ↑ | KRCC ↑ | RMSE ↓ | ||
| HVS-based | PSNR | 0.2388 | 0.2292 | 0.1661 | 0.2928 | 0.3176 | 0.3456 | 0.2148 | 0.2660 | 0.3242 | 0.3530 | 0.2196 | 0.2553 |
| SSIM | 0.3027 | 0.2956 | 0.2119 | 0.2874 | 0.4390 | 0.4505 | 0.3011 | 0.2531 | 0.4391 | 0.4512 | 0.3011 | 0.2435 | |
| VSI | 0.3592 | 0.3520 | 0.2520 | 0.2816 | 0.4874 | 0.4940 | 0.3355 | 0.2465 | 0.4919 | 0.4985 | 0.3392 | 0.2365 | |
| LPIPS | 0.3214 | 0.3280 | 0.2258 | 0.2842 | 0.5264 | 0.5376 | 0.3697 | 0.2390 | 0.5342 | 0.5453 | 0.3754 | 0.2287 | |
| DISTS | 0.3878 | 0.3804 | 0.2724 | 0.2782 | 0.5266 | 0.5352 | 0.3659 | 0.2395 | 0.5363 | 0.5450 | 0.3738 | 0.2288 | |
| HyperIQA | 0.2496 | 0.2279 | 0.1741 | 0.2929 | 0.4462 | 0.4463 | 0.3031 | 0.2537 | 0.4456 | 0.4518 | 0.3031 | 0.2434 | |
| MANIQA | 0.3403 | 0.3255 | 0.2387 | 0.2844 | 0.4574 | 0.4617 | 0.3124 | 0.2515 | 0.4636 | 0.4680 | 0.3176 | 0.2411 | |
| Machine-based | ResNet-18 | 0.5131 | 0.5427 | 0.3715 | 0.2527 | 0.7541 | 0.7734 | 0.5625 | 0.1797 | 0.7582 | 0.7790 | 0.5674 | 0.1711 |
| ResNet-50 | 0.5581 | 0.5797 | 0.4062 | 0.2451 | 0.7743 | 0.7925 | 0.5824 | 0.1729 | 0.7729 | 0.7933 | 0.5826 | 0.1661 | |
| EfficientNet-b1 | 0.5901 | 0.6130 | 0.4320 | 0.2377 | 0.7766 | 0.7950 | 0.5859 | 0.1720 | 0.7808 | 0.7999 | 0.5918 | 0.1637 | |
| EfficientNet-b5 | 0.6330 | 0.6440 | 0.4680 | 0.2301 | 0.7866 | 0.8041 | 0.5971 | 0.1685 | 0.7899 | 0.8074 | 0.6013 | 0.1610 | |
| ViT-small | 0.5998 | 0.6161 | 0.4407 | 0.2370 | 0.7992 | 0.8142 | 0.6099 | 0.1646 | 0.7968 | 0.8139 | 0.6083 | 0.1585 | |
| RA-MIQA | 0.7003 |
0.6989 |
0.5255 |
0.2152 |
0.8125 |
0.8264 |
0.6263 |
0.1596 |
0.8188 |
0.8340 |
0.6333 |
0.1505 |
|
Table 2: Consistency & Accuracy Score Benchmark
| Method | Image Classification | Object Detection | Instance Segmentation | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Accuracy Score | Consistency Score | Accuracy Score | Consistency Score | Accuracy Score | Consistency Score | |||||||||||||
| SRCC ↑ | PLCC ↑ | RMSE ↓ | SRCC ↑ | PLCC ↑ | RMSE ↓ | SRCC ↑ | PLCC ↑ | RMSE ↓ | SRCC ↑ | PLCC ↑ | RMSE ↓ | SRCC ↑ | PLCC ↑ | RMSE ↓ | SRCC ↑ | PLCC ↑ | RMSE ↓ | |
| HVS-based Methods | ||||||||||||||||||
| PSNR | 0.2034 | 0.1620 | 0.3541 | 0.2927 | 0.2812 | 0.2692 | 0.2234 | 0.2449 | 0.2747 | 0.3712 | 0.3933 | 0.2839 | 0.2182 | 0.2398 | 0.2616 | 0.3796 | 0.4061 | 0.2770 |
| SSIM | 0.2529 | 0.2101 | 0.3509 | 0.3740 | 0.3663 | 0.2610 | 0.3434 | 0.3419 | 0.2662 | 0.5128 | 0.5130 | 0.2651 | 0.3271 | 0.3284 | 0.2545 | 0.5174 | 0.5204 | 0.2589 |
| VSI | 0.3020 | 0.2515 | 0.3473 | 0.4392 | 0.4336 | 0.2528 | 0.3799 | 0.3685 | 0.2634 | 0.5700 | 0.5571 | 0.2565 | 0.3703 | 0.3645 | 0.2509 | 0.5757 | 0.5749 | 0.2481 |
| LPIPS | 0.2680 | 0.2355 | 0.3488 | 0.3927 | 0.4032 | 0.2567 | 0.4064 | 0.3987 | 0.2598 | 0.6196 | 0.6232 | 0.2415 | 0.3972 | 0.3941 | 0.2476 | 0.6300 | 0.6344 | 0.2344 |
| DISTS | 0.3291 | 0.2768 | 0.3448 | 0.4683 | 0.4628 | 0.2487 | 0.4089 | 0.3999 | 0.2597 | 0.6174 | 0.6178 | 0.2429 | 0.4069 | 0.4012 | 0.2468 | 0.6255 | 0.6270 | 0.2362 |
| HyperIQA | 0.2100 | 0.1649 | 0.3540 | 0.2966 | 0.2777 | 0.2695 | 0.3646 | 0.3545 | 0.2649 | 0.5009 | 0.4943 | 0.2684 | 0.3486 | 0.3442 | 0.2530 | 0.5056 | 0.4995 | 0.2626 |
| MANIQA | 0.2924 | 0.2435 | 0.3481 | 0.3963 | 0.3870 | 0.2587 | 0.3839 | 0.3823 | 0.2618 | 0.4991 | 0.4975 | 0.2679 | 0.3755 | 0.3749 | 0.2498 | 0.5096 | 0.5098 | 0.2608 |
| Machine-based Methods | ||||||||||||||||||
| ResNet-50 | 0.4734 | 0.4411 | 0.3221 | 0.5989 | 0.6551 | 0.2119 | 0.6955 | 0.6898 | 0.2051 | 0.8252 | 0.8457 | 0.1648 | 0.6863 | 0.6847 | 0.1964 | 0.8320 | 0.8480 | 0.1607 |
| EfficientNet-b5 | 0.5586 | 0.5149 | 0.3076 | 0.6774 | 0.7168 | 0.1956 | 0.7042 | 0.6991 | 0.2026 | 0.8353 | 0.8530 | 0.1612 | 0.6933 | 0.6949 | 0.1938 | 0.8419 | 0.8564 | 0.1565 |
| ViT-small | 0.5788 | 0.5197 | 0.3066 | 0.6798 | 0.7189 | 0.1950 | 0.7121 | 0.7052 | 0.2008 | 0.8459 | 0.8620 | 0.1566 | 0.7168 | 0.7146 | 0.1885 | 0.8487 | 0.8616 | 0.1539 |
| RA-MIQA | 0.6573 |
0.5823 |
0.2917 |
0.7707 |
0.7866 |
0.1732 |
0.7448 |
0.7370 |
0.1915 |
0.8526 |
0.8692 |
0.1527 |
0.7363 |
0.7327 |
0.1834 |
0.8632 |
0.8756 |
0.1464 |
If you find this work useful in your research, please consider citing:
@article{wang2025miqa,
title={Image Quality Assessment for Machines: Paradigm, Large-scale Database, and Models},
author={Wang, Xiaoqi and Zhang, Yun and Lin, Weisi},
journal={arXiv preprint arXiv:2508.19850},
year={2025}
}This repository is a copied snapshot of the original project and may not receive future updates.
All active development, maintenance, and future updates are conducted in the official repository:
👉 https://github.com/XiaoqiWang/MIQA
Please refer to the original project for the latest code, documentation, and issue tracking.
















