A qualidade da imagem Pytorch (PIQ) não é endossada pelo Facebook, Inc.;
Pytorch, o logotipo Pytorch e quaisquer marcas relacionadas são marcas comerciais do Facebook, Inc.


A qualidade da imagem Pytorch (PIQ) é uma coleção de medidas e métricas para avaliação da qualidade da imagem. O PIQ ajuda você a se concentrar em seus experimentos sem o código da caldeira. A biblioteca contém um conjunto de medidas e métricas que estão se estendendo continuamente. Para medidas/métricas que podem ser usadas como funções de perda, os módulos Pytorch correspondentes são implementados.
Nós fornecemos:
O PIQ foi inicialmente chamado de fotossíntese.Metrics.
A qualidade da imagem Pytorch (PIQ) pode ser instalada usando pip , conda ou git .
Se você usar pip , pode instalá -lo com:
$ pip install piq Se você usa conda , pode instalá -lo com:
$ conda install piq -c photosynthesis-team -c conda-forge -c PyTorchSe você deseja usar os recursos mais recentes diretamente do mestre, Clone Piq Repo:
git clone https://github.com/photosynthesis-team/piq.git
cd piq
python setup.py installA documentação completa está disponível em https://piq.readthedocs.io.
O grupo de métricas (como PSNR, SSIM, Brisque) pega uma imagem ou um par de imagens como entrada para calcular uma distância entre eles. Temos uma interface funcional, que retorna um valor métrico e uma interface de classe, que permite usar qualquer métrica como uma função de perda.
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 uma lista completa de exemplos, consulte Exemplos de Métricas de Imagem.
O grupo de métricas (como IS, FID, Kid) leva uma lista de recursos de imagem para calcular a distância entre as distribuições. Os recursos da imagem podem ser extraídos por alguma rede de extrator de recurso separadamente ou usando o método compute_feats de uma classe.
compute_feats consome um carregador de dados de um 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 )Se você já possui recursos de imagem, use a interface de classe para computação de pontuação:
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 uma lista completa de exemplos, consulte Exemplos de Métricas de Recurso.
| Acrônimo | Ano | Métrica |
|---|---|---|
| Psnr | - | Razão de pico de sinal / ruído |
| Ssim | 2003 | Similaridade estrutural |
| MS-SSIM | 2004 | Similaridade estrutural em várias escalas |
| IW-SSIM | 2011 | Informação Conteúdo Índice de similaridade estrutural ponderada |
| VIFP | 2004 | Fidelidade da informação visual |
| Fsim | 2011 | Medida do índice de similaridade de recursos |
| Sr-sim | 2012 | Semelhança espectral baseada em resíduos |
| GMSD | 2013 | Desvio de similaridade de magnitude de gradiente |
| MS-GMSD | 2017 | Desvio de similaridade de magnitude de gradiente em várias escalas |
| Vsi | 2014 | Índice Visual de Saliência Induzida |
| DSS | 2015 | Índice de similaridade de sub -banda DCT |
| - | 2016 | Pontuação de conteúdo |
| - | 2016 | Pontuação de estilo |
| Haarpsi | 2016 | Índice de similaridade perceptiva de Haar |
| MDSI | 2016 | Índice de similaridade de desvio médio |
| LPIPS | 2018 | Similaridade de patch de imagem perceptiva aprendeu |
| Pieapp | 2018 | Avaliação perceptiva de erro de imagem através da preferência em pares |
| Dists | 2020 | Estrutura de imagem profunda e similaridade de textura |
| Acrônimo | Ano | Métrica |
|---|---|---|
| TV | 1937 | Variação total |
| Brisque | 2012 | Avaliador de qualidade espacial de imagem cegada/sem referência |
| Clip-iqa | 2022 | Clip-iqa |
| Acrônimo | Ano | Métrica |
|---|---|---|
| É | 2016 | Pontuação inicial |
| Fid | 2017 | Frechet Inception Distância |
| Gs | 2018 | Pontuação da geometria |
| CRIANÇA | 2018 | Distância do início do kernel |
| Msid | 2019 | Distância intrínseca em várias escalas |
| Pr | 2019 | Precisão e recall aprimorado |
Como parte de nossa biblioteca, fornecemos código para comparar todas as métricas em um conjunto de bancos de dados comuns de pontuações da OPIGH. Atualmente, apoiamos vários conjuntos de dados de referência completa (TID2013, KADID10K e PIPAL) e NO-REFERÊNCIA (KONIQ10K e LIVE-ITW). Você precisa baixá -los separadamente e fornecer caminho para as imagens como um argumento para o script.
Aqui está um exemplo de como avaliar as métricas SSIM e MS-SSIM no conjunto de dados TID2013:
python3 tests/results_benchmark.py --dataset tid2013 --metrics SSIM MS-SSIM --path ~ /datasets/tid2013 --batch_size 16Abaixo, fornecemos uma comparação entre os valores de coeficiente de correlação de Spearman (SRCC) obtidos com PIQ e relatados em pesquisas. Os valores mais próximos do SRCC indicam o maior grau de concordância entre os resultados dos cálculos nos conjuntos de dados. Não relatamos o coeficiente de correlação de classificação Kendall (KRCC), pois está altamente correlacionado com o SRCC e fornece informações adicionais limitadas. Não relatamos o coeficiente de correlação linear Pearson (PLCC), pois é altamente dependente do método de ajuste e é tendencioso em exemplos simples.
Para métricas que podem tirar imagens em escala de verdura ou coloridas, c significa versão cromática.
| TID2013 | KADID10K | Pipal | |
|---|---|---|---|
| Fonte | PIQ / Referência | PIQ / Referência | PIQ / Referência |
| 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 / - |
| Contente | 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 |
| Pieapp | 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 / - |
| É | 0,26 / - | 0,25 / - | 0,09 / - |
| Fid | 0,67 / - | 0,66 / - | 0,18 / - |
| CRIANÇA | 0,42 / - | 0,66 / - | 0,12 / - |
| Msid | 0,21 / - - | 0,32 / - | 0,01 / - |
| Gs | 0,37 / - | 0,37 / - | 0,02 / - |
| Koniq10k | Live-Itw | |
|---|---|---|
| Fonte | PIQ / Referência | PIQ / Referência |
| Brisque | 0,22 / - | 0,31 / - |
| Clip-iqa | 0,68 / 0,68 clip-iqa | 0,64 / 0,64 clip-iqa |
Ao contrário dos IQMs FR e NR, projetados para calcular uma distância em termos de imagem, as métricas de banco de dados comparam distribuições de conjuntos de imagens. Para resolver esses problemas, adotamos uma maneira diferente de calcular o DB IQMS proposto em https://arxiv.org/abs/2203.07809. Em vez de extrair características de todas as imagens, os cortamos em ladrilhos sobrepostos do tamanho 96 × 96 com stride = 32 . Esse pré-processamento nos permite tratar cada par de imagens como um par de distribuições de ladrilhos, permitindo uma comparação adicional. Os outros estágios da computação dos DB IQMs são mantidos intactos.
No PIQ, usamos asserções para levantar mensagens significativas quando algum componente não recebe uma entrada do tipo esperado. Isso facilita a prototipagem e a depuração, mas pode prejudicar o desempenho. Para desativar todas as verificações, use a bandeira Python -O : python -O your_script.py
Veja os problemas abertos para obter uma lista de recursos propostos e problemas conhecidos.
Se você deseja ajudar a desenvolver esta biblioteca, encontrará mais informações em nosso guia de contribuição.
Se você usar o PIQ em seu projeto, cite -o da seguinte forma.
@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]