Pytorch Image Quality (PIQ) n'est pas approuvé par Facebook, Inc.;
Pytorch, le logo Pytorch et toutes les marques connexes sont des marques de Facebook, Inc.


Pytorch Image Quality (PIQ) est une collection de mesures et de mesures pour l'évaluation de la qualité d'image. PIQ vous aide à vous concentrer sur vos expériences sans le code du passe-partout. La bibliothèque contient un ensemble de mesures et de métriques qui s'étendent continuellement. Pour les mesures / métriques qui peuvent être utilisées comme fonctions de perte, les modules Pytorch correspondants sont implémentés.
Nous fournissons:
PIQ a été initialement nommé Photosynthesis.Metrics.
La qualité d'image Pytorch (PIQ) peut être installée à l'aide de pip , conda ou git .
Si vous utilisez pip , vous pouvez l'installer avec:
$ pip install piq Si vous utilisez conda , vous pouvez l'installer avec:
$ conda install piq -c photosynthesis-team -c conda-forge -c PyTorchSi vous souhaitez utiliser les dernières fonctionnalités directement du maître, Clone Piq Repo:
git clone https://github.com/photosynthesis-team/piq.git
cd piq
python setup.py installLa documentation complète est disponible sur https://piq.readthedocs.io.
Le groupe de mesures (comme PSNR, SSIM, Brisque) prend une image ou une paire d'images en entrée pour calculer une distance entre elles. Nous avons une interface fonctionnelle, qui renvoie une valeur métrique, et une interface de classe, qui permet d'utiliser n'importe quelle métrique comme fonction de perte.
import torch
from piq import ssim , SSIMLoss
x = torch . rand ( 4 , 3 , 256 , 256 , requires_grad = True )
y = torch . rand ( 4 , 3 , 256 , 256 )
ssim_index : torch . Tensor = ssim ( x , y , data_range = 1. )
loss = SSIMLoss ( data_range = 1. )
output : torch . Tensor = loss ( x , y )
output . backward ()Pour une liste complète d'exemples, voir des exemples de métriques d'image.
Le groupe de métriques (tels que ce qui est, FID, Kid) prend une liste des caractéristiques de l'image pour calculer la distance entre les distributions. Les caractéristiques de l'image peuvent être extraites par un réseau d'extracteur de fonctionnalités séparément ou en utilisant la méthode compute_feats d'une classe.
compute_feats consomme un chargeur de données d'un format prédéfini. import torch
from torch . utils . data import DataLoader
from piq import FID
first_dl , second_dl = DataLoader (), DataLoader ()
fid_metric = FID ()
first_feats = fid_metric . compute_feats ( first_dl )
second_feats = fid_metric . compute_feats ( second_dl )
fid : torch . Tensor = fid_metric ( first_feats , second_feats )Si vous avez déjà des fonctionnalités d'image, utilisez l'interface de classe pour le calcul du score:
import torch
from piq import FID
x_feats = torch . rand ( 10000 , 1024 )
y_feats = torch . rand ( 10000 , 1024 )
msid_metric = MSID ()
msid : torch . Tensor = msid_metric ( x_feats , y_feats )Pour une liste complète d'exemples, voir des exemples de métriques des fonctionnalités.
| Acronyme | Année | Métrique |
|---|---|---|
| PSNR | - | Rapport signal / bruit de pointe |
| Ssim | 2003 | Similitude structurelle |
| MS-SSIM | 2004 | Similitude structurelle à grande échelle |
| Iw-ssim | 2011 | Indice de similitude structurelle pondérée en fonction du contenu information |
| Vifp | 2004 | Fidelité d'informations visuelles |
| Fsim | 2011 | Mesure d'indice de similitude des fonctions |
| Sr-sim | 2012 | Similitude spectrale basée sur les résidus |
| GMSD | 2013 | Déviation de similitude de l'amplitude du gradient |
| Ms-gmsd | 2017 | Déviation de similitude de l'amplitude du gradient à échelle multiple |
| VSI | 2014 | Index induit par la saillance visuelle |
| DSS | 2015 | Indice de similitude de sous-bande DCT |
| - | 2016 | Score de contenu |
| - | 2016 | Score de style |
| Haarpi | 2016 | Indice de similitude perceptuelle Haar |
| Mdsi | 2016 | Index de similitude de l'écart moyen |
| LPIPS | 2018 | Apprentissage de la similitude des patchs d'image perceptuelle |
| Pias | 2018 | Évaluation d'erreur d'image perceptuelle par la préférence par paire |
| Distors | 2020 | Structure d'image profonde et similitude de texture |
| Acronyme | Année | Métrique |
|---|---|---|
| TV | 1937 | Variation totale |
| Brisque | 2012 | Évaluateur de qualité spatiale d'image aveugle / sans référence |
| Clip-iqa | 2022 | Clip-iqa |
| Acronyme | Année | Métrique |
|---|---|---|
| EST | 2016 | Score de création |
| Fid | 2017 | Distance de création de Frechet |
| GS | 2018 | Score de géométrie |
| ENFANT | 2018 | Distance de création du noyau |
| MSID | 2019 | Distance intrinsèque à plusieurs échelles |
| RP | 2019 | Amélioration de la précision et du rappel |
Dans le cadre de notre bibliothèque, nous fournissons du code pour comparer toutes les métriques sur un ensemble de bases de données communes d'opinion moyenne. Actuellement, nous prenons en charge plusieurs ensembles de données à référence complète (TID2013, KaDID10K et Pipal) et à non-référence (Koniq10k et Live-Itw). Vous devez les télécharger séparément et fournir un chemin vers les images comme argument du script.
Voici un exemple comment évaluer les mesures SSIM et MS-SSIM sur TID2013 DataSet:
python3 tests/results_benchmark.py --dataset tid2013 --metrics SSIM MS-SSIM --path ~ /datasets/tid2013 --batch_size 16Ci-dessous, nous fournissons une comparaison entre les valeurs de coefficient de corrélation de rang de Spearman (SRCC) obtenues avec PIQ et rapportées dans les enquêtes. Les valeurs SRCC plus étroites indiquent le degré d'accord plus élevé entre les résultats des calculs sur des ensembles de données donnés. Nous ne rapportons pas le coefficient de corrélation de rang de Kendall (KRCC) car il est fortement corrélé avec SRCC et fournit des informations supplémentaires limitées. Nous ne rapportons pas le coefficient de corrélation linéaire de Pearson (PLCC) car il dépend fortement de la méthode d'ajustement et est biaisé vers des exemples simples.
Pour les mesures qui peuvent prendre des images de gris ou des images en couleur, c signifie la version chromatique.
| Tid2013 | Kadid10k | Pipal | |
|---|---|---|---|
| Source | Piq / référence | Piq / référence | Piq / référence |
| PSNR | 0,69 / 0,69 TID2013 | 0,68 / - | 0,41 / 0,41 Pipal |
| Ssim | 0,72 / 0,64 TID2013 | 0,72 / 0,72 kadid10k | 0,50 / 0,53 pipal |
| MS-SSIM | 0,80 / 0,79 TID2013 | 0,80 / 0,80 kadid10k | 0,55 / 0,46 Pipal |
| Iw-ssim | 0,78 / 0,78 EVAL2019 | 0,85 / 0,85 kadid10k | 0,60 / - |
| Vifp | 0,61 / 0,61 TID2013 | 0,65 / 0,65 kadid10k | 0,50 / - |
| Fsim | 0,80 / 0,80 TID2013 | 0,83 / 0,83 kadid10k | 0,59 / 0,60 pipal |
| Fsimc | 0,85 / 0,85 TID2013 | 0,85 / 0,85 kadid10k | 0,59 / - |
| Sr-sim | 0,81 / 0,81 EVAL2019 | 0,84 / 0,84 kadid10k | 0,57 / - |
| Sr-simc | 0,87 / - | 0,87 / - | 0,57 / - |
| GMSD | 0,80 / 0,80 ms-gmsd | 0,85 / 0,85 kadid10k | 0,58 / - |
| VSI | 0,90 / 0,90 EVAL2019 | 0,88 / 0,86 kadid10k | 0,54 / - |
| DSS | 0,79 / 0,79 EVAL2019 | 0,86 / 0,86 kadid10k | 0,63 / - |
| Contenu | 0,71 / - | 0,72 / - | 0,45 / - |
| Style | 0,54 / - | 0,65 / - | 0,34 / - |
| Haarpi | 0,87 / 0,87 Haarpi | 0,89 / 0,89 kadid10k | 0,59 / - |
| Mdsi | 0,89 / 0,89 MDSI | 0,89 / 0,89 kadid10k | 0,59 / - |
| Ms-gmsd | 0,81 / 0,81 MS-GMSD | 0,85 / - | 0,59 / - |
| Ms-gmsdc | 0,89 / 0,89 MS-GMSD | 0,87 / - | 0,59 / - |
| LPIPS-VGG | 0,67 / 0,67 dists | 0,72 / - | 0,57 / 0,58 Pipal |
| Pias | 0,84 / 0,88 dists | 0,87 / - | 0,70 / 0,71 Pipal |
| Distors | 0,81 / 0,83 dists | 0,88 / - | 0,62 / 0,66 pipal |
| Brisque | 0,37 / 0,84 EVAL2019 | 0,33 / 0,53 kadid10k | 0,21 / - |
| Clip-iqa | 0,50 / - | 0,48 / - | 0,26 / - |
| EST | 0,26 / - | 0,25 / - | 0,09 / - |
| Fid | 0,67 / - | 0,66 / - | 0,18 / - |
| ENFANT | 0,42 / - | 0,66 / - | 0,12 / - |
| MSID | 0,21 / - | 0,32 / - | 0,01 / - |
| GS | 0,37 / - | 0,37 / - | 0,02 / - |
| Koniq10k | Live-itw | |
|---|---|---|
| Source | Piq / référence | Piq / référence |
| Brisque | 0,22 / - | 0,31 / - |
| Clip-iqa | 0,68 / 0,68 Clip-iqa off | 0,64 / 0,64 Clip-iqa off |
Contrairement aux IQMS FR et NR, conçus pour calculer une distance sur le plan de l'image, les métriques DB comparent les distributions des ensembles d'images. Pour résoudre ces problèmes, nous adoptons une manière différente de calculer les IQM DB proposés dans https://arxiv.org/abs/2203.07809. Au lieu d'extraire les caractéristiques de l'ensemble des images, nous les traduions en tuiles qui se chevauchent de taille 96 × 96 avec stride = 32 . Ce prétraitement nous permet de traiter chaque paire d'images comme une paire de distributions de tuiles, permettant une comparaison supplémentaire. Les autres étapes du calcul des IQMS DB sont maintenues intactes.
Dans PIQ, nous utilisons des affirmations pour soulever des messages significatifs lorsqu'un composant ne reçoit pas une entrée du type attendu. Cela facilite le prototypage et le débogage, mais cela pourrait nuire aux performances. Pour désactiver toutes les vérifications, utilisez le python -O drapeau: python -O your_script.py
Voir les problèmes ouverts pour une liste des fonctionnalités proposées et des problèmes connus.
Si vous souhaitez aider à développer cette bibliothèque, vous trouverez plus d'informations dans notre guide de contribution.
Si vous utilisez PIQ dans votre projet, veuillez le citer comme suit.
@misc{kastryulin2022piq,
title = {PyTorch Image Quality: Metrics for Image Quality Assessment},
url = {https://arxiv.org/abs/2208.14818},
author = {Kastryulin, Sergey and Zakirov, Jamil and Prokopenko, Denis and Dylov, Dmitry V.},
doi = {10.48550/ARXIV.2208.14818},
publisher = {arXiv},
year = {2022}
}@misc{piq,
title={{PyTorch Image Quality}: Metrics and Measure for Image Quality Assessment},
url={https://github.com/photosynthesis-team/piq},
note={Open-source software available at https://github.com/photosynthesis-team/piq},
author={Sergey Kastryulin and Dzhamil Zakirov and Denis Prokopenko},
year={2019}
} Sergey Kastryulin - @ snk4tr - [email protected]
Jamil Zakirov - @zakajd - [email protected]
Denis Prokopenko - @Denproc - [email protected]