La calidad de imagen de Pytorch (PIQ) no está respaldada por Facebook, Inc.;
Pytorch, el logotipo de Pytorch y cualquier marca relacionada son marcas registradas de Facebook, Inc.


La calidad de imagen de Pytorch (PIQ) es una colección de medidas y métricas para la evaluación de la calidad de la imagen. PIQ te ayuda a concentrarte en tus experimentos sin el código de calderas. La biblioteca contiene un conjunto de medidas y métricas que se extienden continuamente. Para las medidas/métricas que se pueden usar como funciones de pérdida, se implementan módulos Pytorch correspondientes.
Proporcionamos:
PIQ se llamó inicialmente Photosíntesis. Metrics.
La calidad de imagen de Pytorch (PIQ) se puede instalar utilizando pip , conda o git .
Si usa pip , puede instalarlo con:
$ pip install piq Si usa conda , puede instalarlo con:
$ conda install piq -c photosynthesis-team -c conda-forge -c PyTorchSi desea usar las últimas funciones directamente del maestro, Clone PIQ Repo:
git clone https://github.com/photosynthesis-team/piq.git
cd piq
python setup.py installLa documentación completa está disponible en https://piq.readthedocs.io.
El grupo de métricas (como PSNR, SSIM, Brisque) toma una imagen o un par de imágenes como entrada para calcular una distancia entre ellas. Tenemos una interfaz funcional, que devuelve un valor métrico y una interfaz de clase, que permite usar cualquier métrica como función de pérdida.
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 ()Para una lista completa de ejemplos, consulte Ejemplos de métricas de imagen.
El grupo de métricas (como IS, FID, Kid) toma una lista de características de imagen para calcular la distancia entre distribuciones. Las características de la imagen se pueden extraer mediante una red de extractores de características por separado o utilizando el método compute_feats de una clase.
compute_feats consume un cargador de datos de un formato predefinido. 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 ya tiene funciones de imagen, use la interfaz de clase para el cálculo de la puntuación:
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 )Para obtener una lista completa de ejemplos, consulte Ejemplos de métricas de características.
| Acrónimo | Año | Métrico |
|---|---|---|
| PSNR | - | Relación señal-ruido máxima |
| Ssim | 2003 | Similitud estructural |
| MS-SSIM | 2004 | Similitud estructural de múltiples escala |
| Iw-ssim | 2011 | Índice de similitud estructural ponderada de contenido de contenido de información |
| VIFP | 2004 | Fidelidad de información visual |
| FSIM | 2011 | Medida del índice de similitud de características |
| SR-SIM | 2012 | Similitud basada en residuos espectrales |
| GMSD | 2013 | Desviación de similitud de magnitud de gradiente |
| MS-GMSD | 2017 | Desviación de similitud de magnitud de gradiente a múltiples escala |
| VSI | 2014 | Índice inducido por la saliente visual |
| DSS | 2015 | Índice de similitud de subbanda DCT |
| - | 2016 | Puntaje de contenido |
| - | 2016 | Puntaje de estilo |
| Haarpsi | 2016 | Índice de similitud de percepción haar |
| MDSI | 2016 | Índice de similitud de desviación media |
| LPIPS | 2018 | Similitud de parche de imagen perceptual aprendida |
| Piepp | 2018 | Evaluación perceptiva de errores de imagen a través de la preferencia por pares |
| Dists | 2020 | Estructura de imagen profunda y similitud de textura |
| Acrónimo | Año | Métrico |
|---|---|---|
| TELEVISOR | 1937 | Variación total |
| Brisque | 2012 | Imagen ciego/sin referencia Evaluador de calidad espacial |
| Clip-iqa | 2022 | Clip-iqa |
| Acrónimo | Año | Métrico |
|---|---|---|
| ES | 2016 | Puntaje de inicio |
| DEFENSOR | 2017 | Distancia de inicio frechet |
| Gs | 2018 | Puntaje de geometría |
| NIÑO | 2018 | Distancia de inicio del núcleo |
| MSID | 2019 | Distancia intrínsecia multiescala |
| PRS | 2019 | Precisión y retiro mejorado |
Como parte de nuestra biblioteca, proporcionamos código para comparar todas las métricas en un conjunto de bases de datos comunes de puntajes de opiniones medias. Actualmente apoyamos varios conjuntos de datos de referencia completa (TID2013, Kadid10k y Pipal) y sin referencia (Koniq10k y Live-ITW). Debe descargarlos por separado y proporcionar el camino a las imágenes como argumento para el script.
Aquí hay un ejemplo de cómo evaluar las métricas SSIM y MS-SSIM en el conjunto de datos TID2013:
python3 tests/results_benchmark.py --dataset tid2013 --metrics SSIM MS-SSIM --path ~ /datasets/tid2013 --batch_size 16A continuación proporcionamos una comparación entre los valores del coeficiente de correlación de rango de Spearman (SRCC) obtenidos con PIQ e informados en encuestas. Los valores de SRCC más cercanos indican el mayor grado de acuerdo entre los resultados de los cálculos en conjuntos de datos dados. No informamos el coeficiente de correlación de rango de Kendall (KRCC), ya que está altamente correlacionado con SRCC y proporciona información adicional limitada. No informamos el coeficiente de correlación lineal de Pearson (PLCC), ya que depende en gran medida del método de ajuste y está sesgado hacia ejemplos simples.
Para las métricas que pueden tomar imágenes de escala de grises o color, c significa versión cromática.
| TID2013 | Kadid10k | Pipal | |
|---|---|---|---|
| Fuente | PIQ / Referencia | PIQ / Referencia | PIQ / Referencia |
| 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 / - |
| Contenido | 0.71 / - | 0.72 / - | 0.45 / - |
| Estilo | 0.54 / - | 0.65 / - | 0.34 / - |
| Haarpsi | 0.87 / 0.87 haarpsi | 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 |
| Piepp | 0.84 / 0.88 dists | 0.87 / - | 0.70 / 0.71 Pipal |
| Dists | 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 / - |
| ES | 0.26 / - | 0.25 / - | 0.09 / - |
| DEFENSOR | 0.67 / - | 0.66 / - | 0.18 / - |
| NIÑO | 0.42 / - | 0.66 / - | 0.12 / - |
| MSID | 0.21 / - | 0.32 / - | 0.01 / - |
| Gs | 0.37 / - | 0.37 / - | 0.02 / - |
| Koniq10k | En vivo | |
|---|---|---|
| Fuente | PIQ / Referencia | PIQ / Referencia |
| Brisque | 0.22 / - | 0.31 / - |
| Clip-iqa | 0.68 / 0.68 clip-iqa desactivado | 0.64 / 0.64 clip-iqa desactivado |
A diferencia de FR y NR IQMS, diseñado para calcular una distancia en términos de imagen, las métricas de DB comparan las distribuciones de conjuntos de imágenes. Para abordar estos problemas, adoptamos una forma diferente de calcular los IQM de DB propuestos en https://arxiv.org/abs/2203.07809. En lugar de extraer características de todas las imágenes, las recortamos en baldosas superpuestas de tamaño 96 × 96 con stride = 32 . Este preprocesamiento nos permite tratar cada par de imágenes como un par de distribuciones de mosaicos, lo que permite una comparación adicional. Las otras etapas de calcular los IQM de DB se mantienen intactos.
En PIQ usamos afirmaciones para generar mensajes significativos cuando algún componente no recibe una entrada del tipo esperado. Esto facilita la prototipos y la depuración, pero podría dañar el rendimiento. Para deshabilitar todas las verificaciones, use el indicador Python -O : python -O your_script.py
Consulte los problemas abiertos para una lista de características propuestas y problemas conocidos.
Si desea ayudar a desarrollar esta biblioteca, encontrará más información en nuestra guía de contribución.
Si usa PIQ en su proyecto, por favor, cíquelo de la siguiente manera.
@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]