Pytorch Image Quality (PIQ) wird nicht von Facebook, Inc.;
Pytorch, das Pytorch -Logo und alle verwandten Marken sind Marken von Facebook, Inc.


Pytorch Image Quality (PIQ) ist eine Sammlung von Maßnahmen und Metriken für die Bewertung der Bildqualität. PIQ hilft Ihnen, sich auf Ihre Experimente ohne den Boilerplate -Code zu konzentrieren. Die Bibliothek enthält eine Reihe von Maßnahmen und Metriken, die ständig verlängert werden. Für Maßnahmen/Metriken, die als Verlustfunktionen verwendet werden können, werden entsprechende Pytorch -Module implementiert.
Wir bieten:
PIQ wurde zunächst Photosynthese.Metrics genannt.
Die Pytorch -Bildqualität (PIQ) kann mit pip , conda oder git installiert werden.
Wenn Sie pip verwenden, können Sie es mit:
$ pip install piq Wenn Sie conda verwenden, können Sie es mit:
$ conda install piq -c photosynthesis-team -c conda-forge -c PyTorchWenn Sie die neuesten Funktionen direkt vom Master verwenden möchten, klone piq repo:
git clone https://github.com/photosynthesis-team/piq.git
cd piq
python setup.py installDie vollständige Dokumentation finden Sie unter https://piq.readthedocs.io.
Die Gruppe der Metriken (wie PSNR, SSIM, Brisque) nimmt ein Bild oder ein Bilderpaar als Eingabe auf, um einen Abstand zwischen ihnen zu berechnen. Wir haben eine funktionale Schnittstelle, die einen Metrikwert zurückgibt, und eine Klassenschnittstelle, mit der jede Metrik als Verlustfunktion verwendet werden kann.
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 ()Eine vollständige Liste von Beispielen finden Sie unter Beispiele für Bildmetriken.
Die Gruppe von Metriken (wie IS, FID, Kid) nimmt eine Liste von Bildfunktionen an, um den Abstand zwischen den Verteilungen zu berechnen. Bildfunktionen können von einigen Feature Extractor -Netzwerk separat oder mithilfe der Methode compute_feats einer Klasse extrahiert werden.
compute_feats verbraucht einen Datenlader eines vordefinierten Formats. 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 )Wenn Sie bereits Bildfunktionen haben, verwenden Sie die Klassenschnittstelle für Score -Berechnungen:
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 )Eine vollständige Liste von Beispielen finden Sie unter Beispiele für Feature -Metriken.
| Akronym | Jahr | Metrisch |
|---|---|---|
| PSNR | - - | Spitzen-Signal-Rausch-Verhältnis |
| Ssim | 2003 | Strukturelle Ähnlichkeit |
| MS-Ssim | 2004 | Strukturelle Ähnlichkeit mit mehreren Maßstäben |
| Iw-ssim | 2011 | Informationsgehalt gewichteter struktureller Ähnlichkeitsindex |
| VIFP | 2004 | Visuelle Informations -Treue |
| Fsim | 2011 | Merkmalsähnlichkeitsindexmaß |
| Sr-sim | 2012 | Spektralrestbasierte Ähnlichkeit |
| GMSD | 2013 | Ähnlichkeitsabweichung der Gradientengröße |
| MS-GMSD | 2017 | Ähnlichkeitsabweichung der Gradientengröße für mehrskalige Gradienten |
| Vsi | 2014 | Visual Assices-induzierter Index |
| DSS | 2015 | DCT -Subband -Ähnlichkeitsindex |
| - - | 2016 | Content Score |
| - - | 2016 | Stilpartitur |
| Haarpsi | 2016 | Haar Wahrnehmungsähnlichkeitsindex |
| Mdsi | 2016 | Mittlere Abweichungsähnlichkeitsindex |
| LPIPs | 2018 | Gelernte Wahrnehmungsbild -Patch -Ähnlichkeit |
| Pieapp | 2018 | Wahrnehmungsbewertung durch paarweise Präferenz |
| Distiert | 2020 | Deep -Bildstruktur und Ähnlichkeit der Textur |
| Akronym | Jahr | Metrisch |
|---|---|---|
| Fernseher | 1937 | Gesamtvariation |
| Brisque | 2012 | Blind/Referenceless Image Räumlichkeitsqualitätsbewerter |
| Clip-iqa | 2022 | Clip-iqa |
| Akronym | Jahr | Metrisch |
|---|---|---|
| IST | 2016 | Inception Score |
| Fid | 2017 | Frechet -Inception -Abstand |
| Gs | 2018 | Geometrie -Score |
| KIND | 2018 | Kernel -Inception -Distanz |
| MSID | 2019 | Multi-Scale Intrinsic Distanz |
| Pr | 2019 | Verbesserte Präzision und Rückruf |
Im Rahmen unserer Bibliothek bieten wir Code, um alle Metriken in einer Reihe gemeinsamer mittlerer Meinon -Scores -Datenbanken zu bewerten. Derzeit unterstützen wir verschiedene Datensätze mit Vollverweis (TID2013, Kadid10K und Pipal) und No-Referenz (Koniq10K und Live-ITW). Sie müssen sie separat herunterladen und einen Pfad zu Bildern als Argument für das Skript bereitstellen.
Hier finden Sie ein Beispiel, wie Sie SSIM- und MS-SSIM-Metriken auf dem TID2013-Datensatz bewerten:
python3 tests/results_benchmark.py --dataset tid2013 --metrics SSIM MS-SSIM --path ~ /datasets/tid2013 --batch_size 16Im Folgenden liefern wir einen Vergleich zwischen Spearmans Rang Correlationskoeffizienten (SRCC), die mit PIQ erhalten und in Umfragen angegeben wurden. Näherende SRCC -Werte zeigen den höheren Übereinstimmungsgrad zwischen den Ergebnissen von Berechnungen auf bestimmten Datensätzen an. Wir melden Kendall Rank Correlationskoeffizient (KRCC) nicht, da er in hohem Maße mit SRCC korreliert und nur begrenzte zusätzliche Informationen liefert. Wir berichten nicht über den Pearson -linearen Korrelationskoeffizienten (PLCC), da er stark von der Anpassungsmethode abhängt und auf einfache Beispiele voreingenommen ist.
Für Metriken, die graustufene oder Farbbilder aufnehmen können, bedeutet c eine chromatische Version.
| TID2013 | Kadid10K | Pipal | |
|---|---|---|---|
| Quelle | PIQ / Referenz | PIQ / Referenz | PIQ / Referenz |
| 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-gmsdd | 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 / - |
| Inhalt | 0,71 / - | 0,72 / - | 0,45 / - |
| Stil | 0,54 / - | 0,65 / - | 0,34 / - |
| Haarpsi | 0,87 / 0,87 Harpsi | 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-gmsdd | 0,85 / - | 0,59 / - |
| MS-GMSDC | 0,89 / 0,89 ms-gmsdd | 0,87 / - | 0,59 / - |
| LPIPS-VGG | 0,67 / 0,67 dists | 0,72 / - | 0,57 / 0,58 Pipal |
| Pieapp | 0,84 / 0,88 dists | 0,87 / - | 0,70 / 0,71 Pipal |
| Distiert | 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 / - |
| IST | 0,26 / - | 0,25 / - | 0,09 / - |
| Fid | 0,67 / - | 0,66 / - | 0,18 / - |
| KIND | 0,42 / - | 0,66 / - | 0,12 / - |
| MSID | 0,21 / - | 0,32 / - | 0,01 / - |
| Gs | 0,37 / - | 0,37 / - | 0,02 / - |
| Koniq10K | Live-itw | |
|---|---|---|
| Quelle | PIQ / Referenz | PIQ / Referenz |
| Brisque | 0,22 / - | 0,31 / - |
| Clip-iqa | 0,68 / 0,68 Clip-iqa aus | 0,64 / 0,64 Clip-iqa aus |
Im Gegensatz zu FR- und NR-IQMs, die zur Berechnung einer Bildabstand entwickelt wurden, vergleichen die DB-Metriken Verteilungen von Bildernsätzen . Um diese Probleme anzugehen, verwenden wir eine andere Art, die in https://arxiv.org/abs/2203.07809 vorgeschlagenen DB -IQMs zu berechnen. Anstatt Merkmale aus den gesamten Bildern zu extrahieren, können wir sie in überlappende Kacheln der Größe 96 × 96 mit stride = 32 produzieren. Diese Vorverarbeitung ermöglicht es uns, jedes Bilderpaar als eine Verteilung von Fliesen zu behandeln, wodurch ein weiterer Vergleich ermöglicht wird. Die anderen Phasen der Berechnung der DB -IQMs werden intakt gehalten.
In PIQ verwenden wir Behauptungen, um aussagekräftige Nachrichten zu beschaffen, wenn eine Komponente keine Eingabe des erwarteten Typs erhält. Dies erleichtert das Prototyping und Debuggen, aber es könnte die Leistung beeinträchtigen. Um alle Schecks zu deaktivieren, verwenden Sie die Python -O -Flagge: python -O your_script.py
In den offenen Problemen finden Sie eine Liste der vorgeschlagenen Merkmale und bekannten Probleme.
Wenn Sie bei der Entwicklung dieser Bibliothek helfen möchten, finden Sie weitere Informationen in unserem Beitragsführer.
Wenn Sie PIQ in Ihrem Projekt verwenden, zitieren Sie es bitte wie folgt.
@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]