miqa / README_CN.md
xiaoqi-wang's picture
Update README_CN.md
20ac8b6 verified
IQA Logo

面向机器的图像质量评估:范式、大规模数据库与模型

Database Paper HuggingFace GitHub Stars

中文 | English | 模型 | 数据集

🎯 项目概览
  • 🤖 以机器为中心: 绕过人类的主观感知,完全从深度学习模型的视角来评估图像质量。
  • 📈 由任务驱动: 直接衡量图像降质(如模糊、噪声、压缩失真)对下游视觉任务性能的真实影响。
  • 💡 全新范式: MIQA 为优化面向机器决策的图像处理流程提供了一个全新的、更有效的视角。

✨ MIQA 是否有效?

使用 MIQA 分数过滤低质量图像后,各项任务的性能均得到提升

🗝️ 核心结论

我们的研究结果清晰地证明了 MIQA 在三个代表性的计算机视觉任务(图像分类、目标检测和实例分割)上的有效性。

该框架能够持续准确地识别出那些会降低模型性能的图像。通过滤除这些有害样本,MIQA 直接提升了下游任务的最终成果,并证明了“以机器为中心”方法的普适价值。这使得质量评估从一个被动的度量标准,转变为一个主动的性能保障工具,保护下游模型免受真实世界中不可预测的图像质量影响,确保其在关键时刻的稳健表现。

🛠️ 安装指南

第 1 步: 安装核心依赖

首先,您需要安装两个必要的库:mmcvmmsegmentation

安装 mmcv 和 mmsegmentation
  • 若要安装最新版本的 mmsegmentation,请遵循其官方安装指南: MMsegmentation 安装指南

  • 您也可以根据自己的 CUDA 和 PyTorch 版本,安装特定版本的 mmsegmentation。版本兼容性详情请参考: MMCV 安装指南

第 2 步: 处理 CUDA 版本兼容性问题

如果您的 CUDA 版本较高(例如 12.7 或更高),可能会遇到与 mmcv 的版本不匹配问题。此时,您需要安装一个兼容的 mmcv 版本。

安装一个兼容的 mmcv 版本

例如,您可以通过以下命令卸载现有版本并安装一个兼容的新版本:

pip uninstall mmcv mmcv-full -y
mim install "mmcv>=2.0.0rc4,<2.2.0"  # 注意:此处版本号仅为示例,请根据您的 CUDA 和 PyTorch 环境选择最合适的版本。

第 3 步: 安装其他所需库

pip install -r requirements.txt

📦 模型权重与性能

代码与权重分工

内容 位置
训练 / 推理 / 评估代码 GitHubgithub.com/XiaoqiWang/MIQA
已发布的 RA-MIQA 权重(9 个文件) Hugging Face 模型库:xiaoqi-wang/miqa
MIQD-2.5M 数据 Hugging Face 数据集:xiaoqi-wang/miqd-2.5m

命名与缓存

Hub 上的权重命名示例:

  • miqa_ra_miqa_cls_composite_metric.pth.tar
  • miqa_ra_miqa_det_consistency_metric.pth.tar
  • miqa_ra_miqa_ins_accuracy_metric.pth.tar

首次运行会通过 huggingface_hub 下载到 models/checkpoints/{composite|consistency|accuracy}_metric/

🚀 快速开始

评估单张图像

使用命令行界面对单张图像进行 MIQA 推理:

# 评估一张用于“面向分类的MIQA”的图像

python img_inference.py --input path/to/image.jpg --task cls --model ra_miqa

评估图像目录

处理一个目录中的所有图像:

# 评估一个目录中的所有图像(例如,用于“面向检测的MIQA”)

python img_inference.py --input ./assets/demo_images/coco_demo --task det --model ra_miqa

保存结果与可视化

保存输出并生成可视化结果:

# 为单张图像保存预测分数和可视化结果
python img_inference.py --input path/to/image.jpg --task cls --model ra_miqa --save-results --visualize

# 为一个目录保存批量结果并生成可视化
python img_inference.py --input ./assets/demo_images/imagenet_demo --task ins --save-results --visualize

🎬 视频评估

视频质量评估提供两种工作流: (1) 逐帧标注: 生成带有完整标注的视频,用于详细的视觉检查。这种方法适合演示和定性分析,但计算量较大。 (2) 选择性采样与聚合: 通过采样帧来生成图表和结构化数据(.json),用于高效的定量分析。这种方法是批量处理和生成报告的理想选择。

分析单个视频 (逐帧标注)

对一个视频进行 MIQA 推理,并保存带标注的输出。

# 使用 RA-MIQA 评估单个视频(面向分类的MIQA)
python video_annotator_inference.py --input assets/demo_video/brightness_distorted.mp4 --task cls --model ra_miqa

评估视频目录 (逐帧标注)

处理指定文件夹中的所有视频:

# 评估一个目录中的所有视频,用于面向目标检测的MIQA
python video_annotator_inference.py --input assets/demo_video/ --task det --model ra_miqa

主要输出是一个新的 .mp4 视频文件。该视频会同时播放原始画面和一个动态侧边栏,侧边栏会实时显示质量分数,并随着视频播放绘制一条折线图。

🎥 示例: 视频的逐帧MIQA预测
亮度变化 压缩伪影 无明显感知失真

分析单个视频 (选择性采样与聚合)

为了进行高效的定量分析,此脚本会对视频进行帧采样,而不是处理所有帧。它速度快得多,专为生成分析报告而设计。

# 分析一个视频,采样帧,并创建一个双粒度图表
python video_analytics_inference.py --input assets/demo_video/gaussian_distorted.mp4 --task ins --visualize --viz-granularity both```

评估视频目录 (选择性采样与聚合)

此工作流为批量处理进行了高度优化。

# 分析目录中的所有视频,每个视频采样120帧
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 : 指定要生成的图表类型。'composite' 会创建一个全面的并排比较图表,显示:
# 1. 原始的、逐帧的质量分数。 2. 平滑处理后的、每秒平均的质量分数。

这个过程不会创建新的视频,它会为每个分析的视频生成两个关键输出:

  1. 一个 .png 图像: 一个详细的时间序列图,显示视频播放期间质量分数的波动。
  2. 一个 .json 文件: 一个结构化数据文件,包含每秒的聚合分数、总体统计数据(平均值、最小值、最大值、标准差)和视频元数据。
📊 示例: 视频的聚合MIQA分析
亮度变化视频预测结果 压缩伪影视频预测结果 无明显感知失真视频预测结果

🏃 训练与评估

模型训练

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 0

更多训练脚本请见 "scripts" 文件夹。

在标准基准上进行评估

# 在测试集上评估
python evaluate.py --model_name ra_miqa  --train_dataset cls  --test_dataset cls  --metric_type composite

# 跨数据集评估:评估在miqa_cls数据集上训练并在miqa_det数据集上测试
python evaluate.py --model_name ra_miqa  --train_dataset cls  --test_dataset det  --metric_type composite

📈 基准测试

表 1: 基于综合质量标签的基准测试
类别 方法 图像分类 目标检测 实例分割
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 (Ours) 0.7003 0.6989 0.5255 0.2152 0.8125 0.8264 0.6263 0.1596 0.8188 0.8340 0.6333 0.1505
表 2: 一致性与准确性得分基准测试
方法 图像分类 目标检测 实例分割
准确性得分 一致性得分 准确性得分 一致性得分 准确性得分 一致性得分
SRCC ↑ PLCC ↑ RMSE ↓ SRCC ↑ PLCC ↑ RMSE ↓ SRCC ↑ PLCC ↑ RMSE ↓ SRCC ↑ PLCC ↑ RMSE ↓ SRCC ↑ PLCC ↑ RMSE ↓ SRCC ↑ PLCC ↑ RMSE ↓
基于人类视觉 (HVS-based)
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)
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

📚 引用

如果本研究对您的工作有所帮助,请考虑引用我们的论文:

@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}
}

📧 联系我们