Pytorch Toolbox لتقييم جودة الصورةصندوق أدوات IQA مع Python Pure و Pytorch. يرجى الرجوع إلى التقييم الرائع-الجودة لإجراء مسح شامل لطرق IQA وروابط تنزيل لجماعات بيانات IQA.
هذا عبارة عن صندوق أدوات شامل لتقييم جودة الصور (IQA) مصنوع من Python و Pytorch . نحن نقدم تعويض العديد من المقاييس المرجعية الكاملة (FR) ولا توجد مقاييس مرجعية (NR) (يتم معايرة النتائج مع البرامج النصية الرسمية MATLAB إذا كانت موجودة). مع تسارع GPU ، فإن معظم تطبيقاتنا أسرع بكثير من Matlab. يرجى الرجوع إلى المستندات التالية للحصول على التفاصيل:
؟ بطاقات النموذج | بطاقات مجموعة البيانات | ؟ تنزيل مجموعات البيانات | الوثائق | ؟ القياس
fid مع مسافة MMD ، استخدمه باستخدام fid_metric(..., distance_type='mmd', kernel_type='rbf') الرجوع إلى CMMD لمزيد من التفاصيل. بفضل INA على المساهمات.fid_dinov2 ، راجع DGM-Eval لمزيد من التفاصيل.pyiqa.load_dataset لسهولة التحميل لعدة مجموعات بيانات شائعة.compare2score و deepdc . بفضل Hanwei على عملهم الرائع؟ ، يرجى الرجوع إلى أوراقهم الرسمية لمزيد من التفاصيل!topiq_nr-face عن طريق التدريب مع مجموعة بيانات GCFIQA. شكرا لعملهم! ؟msswd المقترح في MS-SWD (ECCV2024). شكرا لعملهم! ؟qalign و qalign_8bit ، يتطلب أقل من 6 جيجابايت من ذاكرة GPU .qalign_4bit و qalign_8bit مع متطلبات الذاكرة أقل بكثير وأداء مماثل.piqe ، و niqe_matlab, brisque_matlab مع معلمات MATLAB الافتراضية (تمت معايرة النتائج مع MATLAB R2021B).lpips+ و lpips-vgg+ المقترح في الورق Topiq الخاص بنا.arniqa وفروقه المدربة على مجموعات بيانات مختلفة ، راجع الريبو الرسمي هنا. شكرا لمساهمة لورينزو أغنولوتشي؟inception_score ونقطة إدخال وحدة التحكم مع أمر pyiqa .unique ، راجع الريبو الرسمي هنا. شكرا لمساهمة وايكسا تشانغ؟ # Install with pip
pip install pyiqa
# Install latest github version
pip uninstall pyiqa # if have older version installed already
pip install git+https://github.com/chaofengc/IQA-PyTorch.git
# Install with git clone
git clone https://github.com/chaofengc/IQA-PyTorch.git
cd IQA-PyTorch
pip install -r requirements.txt
python setup.py developيمكنك ببساطة استخدام الحزمة مع واجهة سطر الأوامر.
# list all available metrics
pyiqa -ls
# test with default settings
pyiqa [metric_name(s)] -t [image_path or dir] -r [image_path or dir] --device [cuda or cpu] --verbose import pyiqa
import torch
# list all available metrics
print ( pyiqa . list_models ())
device = torch . device ( "cuda" ) if torch . cuda . is_available () else torch . device ( "cpu" )
# create metric with default setting
iqa_metric = pyiqa . create_metric ( 'lpips' , device = device )
# check if lower better or higher better
print ( iqa_metric . lower_better )
# example for iqa score inference
# Tensor inputs, img_tensor_x/y: (N, 3, H, W), RGB, 0 ~ 1
score_fr = iqa_metric ( img_tensor_x , img_tensor_y )
# img path as inputs.
score_fr = iqa_metric ( './ResultsCalibra/dist_dir/I03.bmp' , './ResultsCalibra/ref_dir/I03.bmp' )
# For FID metric, use directory or precomputed statistics as inputs
# refer to clean-fid for more details: https://github.com/GaParmar/clean-fid
fid_metric = pyiqa . create_metric ( 'fid' )
score = fid_metric ( './ResultsCalibra/dist_dir/' , './ResultsCalibra/ref_dir' )
score = fid_metric ( './ResultsCalibra/dist_dir/' , dataset_name = "FFHQ" , dataset_res = 1024 , dataset_split = "trainval70k" ) لاحظ أن انتشار التدرج يتم تعطيله افتراضيًا. قم بتعيين as_loss=True لتمكينها كدالة خسارة. لا تدعم جميع المقاييس backpropagation ، يرجى الرجوع إلى بطاقات النماذج والتأكد من أنك تستخدمها بطريقة lower_better .
lpips_loss = pyiqa . create_metric ( 'lpips' , device = device , as_loss = True )
ssim_loss = pyiqa . create_metric ( 'ssimc' , device = device , as_loss = True )
loss = 1 - ssim_loss ( img_tensor_x , img_tensor_y ) # ssim is not lower better نحن نقدم أيضًا طريقة مرنة لاستخدام الإعدادات والأوزان المخصصة في حالة رغبتك في إعادة تدريب النماذج أو ضبطها.
iqa_metric = pyiqa . create_metric ( 'topiq_nr' , device = device , ** custom_opts )
# Note that if you train the model with this package, the weights will be saved in weight_dict['params']. Otherwise, please set weight_keys=None.
iqa_metric . load_weights ( 'path/to/weights.pth' , weight_keys = 'params' )مثال اختبار البرنامج النصي مع دليل الإدخال/الصور والدليل المرجعي/الصور.
# example for FR metric with dirs
python inference_iqa.py -m LPIPS[or lpips] -i ./ResultsCalibra/dist_dir[dist_img] -r ./ResultsCalibra/ref_dir[ref_img]
# example for NR metric with single image
python inference_iqa.py -m brisque -i ./ResultsCalibra/dist_dir/I03.bmp نحن نقدم طريقة سهلة لتحميل مجموعات بيانات IQA الشائعة من خلال ملف التكوين pyiqa/default_dataset_configs.yml . سيتم تنزيل مجموعات البيانات المحددة تلقائيًا من Huggingface IQA-Pytorch-Dataset. انظر رمز المثال أدناه:
from pyiqa import get_dataset_info , load_dataset
# list all available datasets
print ( get_dataset_info (). keys ())
# load dataset with default options and official split
dataset = load_dataset ( 'koniq10k' , data_root = './datasets' , force_download = False , split_index = 'official_split' , phase = 'test' )
print ( f'Loaded dataset, len= { len ( dataset ) } , { dataset [ 0 ]. keys () } ' )
print ( dataset [ 0 ][ 'img' ]. shape )
# split_ratio: train/test/val
dataset = load_dataset ( 'csiq' , data_root = './datasets' , force_download = False , split_index = 1 , split_ratio = '622' , phase = 'test' )
print ( f'Loaded dataset, len= { len ( dataset ) } , { dataset [ 0 ]. keys () } ' )
print ( dataset [ 0 ][ 'img' ]. shape )
# or use dataset options
dataset_opts = {
'split_index' : 1 ,
'split_ratio' : '622' ,
'phase' : 'test' ,
'augment' : {
'resize' : 256 ,
'center_crop' : 224 ,
}
}
dataset = load_dataset ( 'csiq' , data_root = './datasets' , force_download = False , dataset_opts = dataset_opts )
print ( f'Loaded dataset, len= { len ( dataset ) } , { dataset [ 0 ]. keys () } ' )
print ( dataset [ 0 ][ 'img' ]. shape ) يرجى الرجوع إلى بطاقات مجموعة البيانات لمزيد من التفاصيل حول dataset_opts .
يرجى الرجوع إلى النتائج المعايرة للتحقق من صحة تطبيقات Python مقارنة مع البرامج النصية الرسمية في Matlab أو Python.
للراحة ، نقوم بتحميل جميع مجموعات البيانات ذات الصلة إلى Huggingface IQA-toolbox-dataset ، وملفات معلومات التعريف المقابلة إلى Huggingface IQA-toolbox-dataset-metainfo. فيما يلي رموز مثال لتنزيلها من Luggingface:
حذر
نقوم فقط بجمع مجموعات البيانات لأغراض أكاديمية وأبحاث وتعليمية. من المهم للمستخدمين الالتزام بإرشادات الاستخدام وشروط الترخيص والأحكام التي يحددها المبدعون الأصليون أو مالكي كل مجموعة بيانات.
import os
from huggingface_hub import snapshot_download
save_dir = './datasets'
os . makedirs ( save_dir , exist_ok = True )
filename = "koniq10k.tgz"
snapshot_download ( "chaofengc/IQA-Toolbox-Datasets" , repo_type = "dataset" , local_dir = save_dir , allow_patterns = filename , local_dir_use_symlinks = False )
os . system ( f"tar -xzvf { save_dir } / { filename } -C { save_dir } " ) قم بتنزيل معلومات التعريف من Huggingface باستخدام git clone أو Update مع git pull :
cd ./datasets
git clone https://huggingface.co/datasets/chaofengc/IQA-Toolbox-Datasets-metainfo meta_info
cd ./datasets/meta_info
git pull
يمكن العثور على أمثلة على خيارات مجموعة البيانات المحددة في ./pyiqa/default_dataset_configs.yml . يمكن العثور على تفاصيل واجهة Dataloader وملفات معلومات التعريف في إعداد مجموعة البيانات
نستخدم النماذج الرسمية للتقييم إذا كان ذلك متاحًا. خلاف ذلك ، نستخدم الإعدادات التالية لتدريب وتقييم نماذج مختلفة من أجل البساطة والاتساق:
| نوع متري | يدرب | امتحان | نتائج |
|---|---|---|---|
| الاب | Kadid-10k | CSIQ ، LIVE ، TID2008 ، TID2013 | FR القياس |
| ن | koniq-10k | LIVEC ، KONIQ-10K (SPLICE الرسمية) ، TID2013 ، Spaq | NR المعيار |
| جمالية IQA | آفا | آفا (الانقسام الرسمي) | المعيار IAA |
| وجه IQA | CGFIQA | CGFIQA (الانقسام الرسمي) | وجه المعيار IQA |
| كفاءة | وقت وحدة المعالجة المركزية/GPU ، ذاكرة GPU | المتوسط على | معيار الكفاءة |
يتم حساب النتائج مع:
في الأساس ، نستخدم أكبر مجموعات بيانات حالية للتدريب ، وأداء تقييم مجموعة البيانات للمقارنة العادلة. لا توفر النماذج التالية أوزان رسمية ، ويتم إعادة تدريبها بواسطة البرامج النصية لدينا:
| نوع متري | نماذج مستنسخة |
|---|---|
| الاب | wadiqam_fr |
| ن | cnniqa ، dbcnn ، hyperiqa ، wadiqam_nr |
| جمالية IQA | nima ، nima-vgg16-ava |
ملحوظة
inception_resnet_v2 ل nima الافتراضي.فيما يلي مثال على الحصول على معيار الأداء على مجموعات البيانات المختلفة:
# NOTE: this script will test ALL specified metrics on ALL specified datasets
# Test default metrics on default datasets
python benchmark_results.py -m psnr ssim -d csiq tid2013 tid2008
# Test with your own options
python benchmark_results.py -m psnr --data_opt options/example_benchmark_data_opts.yml
python benchmark_results.py --metric_opt options/example_benchmark_metric_opts.yml tid2013 tid2008
python benchmark_results.py --metric_opt options/example_benchmark_metric_opts.yml --data_opt options/example_benchmark_data_opts.ymlمثال لتدريب DBCNN على مجموعة بيانات Livechallenge
# train for single experiment
python pyiqa/train.py -opt options/train/DBCNN/train_DBCNN.yml
# train N splits for small datasets
python pyiqa/train_nsplits.py -opt options/train/DBCNN/train_DBCNN.ymlمثال للتدريب الموزع
torchrun --nproc_per_node=2 --master_port=4321 pyiqa/train.py -opt options/train/CLIPIQA/train_CLIPIQA_koniq10k.yml --launcher pytorchأي مساهمات في هذا المستودع موضع تقدير كبير. يرجى اتباع تعليمات المساهمة لتوجيه المساهمة.
تم ترخيص هذا العمل بموجب ترخيص NTU S-LAB ورخصة الإسناد الإبداعي-Noncommercial-Sharealike 4.0 الدولي.
إذا وجدت رموزنا مفيدة لبحثك ، فيرجى النظر في استخدام الاقتباس التالي:
@misc { pyiqa ,
title = { {IQA-PyTorch}: PyTorch Toolbox for Image Quality Assessment } ,
author = { Chaofeng Chen and Jiadi Mo } ,
year = { 2022 } ,
howpublished = " [Online]. Available: url{https://github.com/chaofengc/IQA-PyTorch} "
}يرجى أيضًا النظر في الاستشهاد بأعمالنا حول تقييم جودة الصورة إذا كان مفيدًا لك:
@article { chen2024topiq ,
author = { Chen, Chaofeng and Mo, Jiadi and Hou, Jingwen and Wu, Haoning and Liao, Liang and Sun, Wenxiu and Yan, Qiong and Lin, Weisi } ,
title = { TOPIQ: A Top-Down Approach From Semantics to Distortions for Image Quality Assessment } ,
journal = { IEEE Transactions on Image Processing } ,
year = { 2024 } ,
volume = { 33 } ,
pages = { 2404-2418 } ,
doi = { 10.1109/TIP.2024.3378466 }
} @article { wu2024qalign ,
title = { Q-Align: Teaching LMMs for Visual Scoring via Discrete Text-Defined Levels } ,
author = { Wu, Haoning and Zhang, Zicheng and Zhang, Weixia and Chen, Chaofeng and Li, Chunyi and Liao, Liang and Wang, Annan and Zhang, Erli and Sun, Wenxiu and Yan, Qiong and Min, Xiongkuo and Zhai, Guangtai and Lin, Weisi } ,
journal = { International Conference on Machine Learning (ICML) } ,
year = { 2024 } ,
institution = { Nanyang Technological University and Shanghai Jiao Tong University and Sensetime Research } ,
note = { Equal Contribution by Wu, Haoning and Zhang, Zicheng. Project Lead by Wu, Haoning. Corresponding Authors: Zhai, Guangtai and Lin, Weisi. }
}يتم استعارة بنية الكود من Basicsr. يتم أخذ العديد من التطبيقات من: IQA-Optimization ، Toolbox-toolbox ، PIQ ، PIQA ، PIQA
نشكر أيضًا المستودعات العامة التالية: Musiq ، DBCNN ، NIMA ، Hyperiqa ، Cnniqa ، Wadiqam ، Pieapp ، Paq2PIQ ، Maniqa
إذا كان لديك أي أسئلة ، يرجى إرسال بريد إلكتروني [email protected]