Качество изображения Pytorch (PIQ) не одобрено Facebook, Inc.;
Pytorch, логотип Pytorch и любые соответствующие знаки являются товарными знаками Facebook, Inc.


Качество изображения Pytorch (PIQ) - это набор мер и метрик для оценки качества изображения. PIQ помогает вам сосредоточиться на ваших экспериментах без кода шаблона. Библиотека содержит набор мер и метриков, которые постоянно расширяются. Для измерений/метрик, которые могут использоваться в качестве функций потерь, реализованы соответствующие модули Pytorch.
Мы предоставляем:
PIQ был изначально назван Photosynthesis.metrics.
Качество изображения Pytorch (PIQ) может быть установлено с использованием pip , conda или git .
Если вы используете pip , вы можете установить его с:
$ pip install piq Если вы используете conda , вы можете установить его с:
$ conda install piq -c photosynthesis-team -c conda-forge -c PyTorchЕсли вы хотите использовать последние функции прямо из мастера, клон Piq Repo:
git clone https://github.com/photosynthesis-team/piq.git
cd piq
python setup.py installПолная документация доступна по адресу https://piq.readthedocs.io.
Группа метрик (таких как PSNR, SSIM, Brisque) принимает изображение или пару изображений в качестве входных данных, чтобы вычислять расстояние между ними. У нас есть функциональный интерфейс, который возвращает метрическое значение, и интерфейс класса, который позволяет использовать любую метрику в качестве функции потери.
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 ()Полный список примеров см. Примеры метриков изображения.
Группа метрик (например, IS, FID, Kid) составляет список функций изображения для вычисления расстояния между распределениями. Функции изображения могут быть извлечены из -за некоторой сети экстракторов функций отдельно или с помощью метода compute_feats класса.
compute_feats потребляет загрузчик данных предопределенного формата. 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 )Если у вас уже есть функции изображения, используйте интерфейс класса для вычисления баллов:
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 )Полный список примеров см. Примеры метрик функций.
| Акроним | Год | Показатель |
|---|---|---|
| PSNR | - | Пиковое отношение сигнал / шум |
| SSIM | 2003 | Структурное сходство |
| MS-SSIM | 2004 | Многомасштабное структурное сходство |
| IW-SSIM | 2011 год | Индекс Структурного сходства Взвешенного информационного содержания |
| Vifp | 2004 | Визуальная информация о точности |
| FSIM | 2011 год | Мера индекса сходства функций |
| SR-SIM | 2012 | Спектральное остаточное сходство |
| GMSD | 2013 | Градиентное магнитуальное отклонение |
| MS-GMSD | 2017 | Многомасштабное градиентное сходство отклонений |
| VSI | 2014 | Индуцированный визуальный индекс |
| DSS | 2015 | Индекс сходства подзолов DCT |
| - | 2016 | Контент |
| - | 2016 | Стиль счет |
| Haarpsi | 2016 | Индекс сходства перцептивного восприятия HAAR |
| Мдси | 2016 | Индекс сходства среднего отклонения |
| Lpips | 2018 | Сходство сходства с перцептивным изображением. |
| Пиапп | 2018 | Оценка воспринимаемого изображения-ошибок через парные предпочтения |
| Расстояние | 2020 | Глубокая структура изображения и сходство текстуры |
| Акроним | Год | Показатель |
|---|---|---|
| Телевидение | 1937 | Общее изменение |
| Бриск | 2012 | Оценка пространственного качества слепых/без ссылок. |
| Клип-iqa | 2022 | Клип-iqa |
| Акроним | Год | Показатель |
|---|---|---|
| ЯВЛЯЕТСЯ | 2016 | Начало оценка |
| Фид | 2017 | Фрехет начальное расстояние |
| Гс | 2018 | Геометрия |
| РЕБЕНОК | 2018 | Начало ядра расстояние |
| MSID | 2019 | Многомасштабное внутреннее расстояние |
| Премьер -министр | 2019 | Улучшенная точность и отзыв |
В рамках нашей библиотеки мы предоставляем код для сравнения всех метрик на наборе общих баз данных общих средних результатов. В настоящее время мы поддерживаем несколько полных ссылок (TID2013, Kadid10K и Pipal) и наборов данных без ссылок (Koniq10K и Live-ITW). Вам нужно загрузить их отдельно и предоставить путь к изображениям в качестве аргумента для сценария.
Вот пример, как оценить метрики SSIM и MS-SSIM в наборе данных TID2013:
python3 tests/results_benchmark.py --dataset tid2013 --metrics SSIM MS-SSIM --path ~ /datasets/tid2013 --batch_size 16Ниже мы предоставляем сравнение между значениями коэффициента корреляции ранга Спирмена (SRCC), полученных с помощью PIQ, и сообщенных в опросах. Более близкие значения SRCC указывают на более высокую степень согласия между результатами вычислений на данном наборах данных. Мы не сообщаем о коэффициенте корреляции рангов Кендалла (KRCC), поскольку он сильно коррелирует с SRCC и предоставляет ограниченную дополнительную информацию. Мы не сообщаем о линейном коэффициенте корреляции Пирсона (PLCC), поскольку он сильно зависит от метода подгонки и смещена в сторону простых примеров.
Для метрик, которые могут занимать серого или цветные изображения, c означает хроматическая версия.
| TID2013 | Кадид10K | Пипал | |
|---|---|---|---|
| Источник | PIQ / Ссылка | PIQ / Ссылка | PIQ / Ссылка |
| 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 мс-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 / - |
| Содержание | 0,71 / - | 0,72 / - | 0,45 / - |
| Стиль | 0,54 / - | 0,65 / - | 0,34 / - |
| Haarpsi | 0,87 / 0,87 HAARPSI | 0,89 / 0,89 kadid10k | 0,59 / - |
| Мдси | 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 |
| Пиапп | 0,84 / 0,88 Dists | 0,87 / - | 0,70 / 0,71 Pipal |
| Расстояние | 0,81 / 0,83 Dists | 0,88 / - | 0,62 / 0,66 Pipal |
| Бриск | 0,37 / 0,84 Eval2019 | 0,33 / 0,53 kadid10k | 0,21 / - |
| Клип-iqa | 0,50 / - | 0,48 / - | 0,26 / - |
| ЯВЛЯЕТСЯ | 0,26 / - | 0,25 / - | 0,09 / - |
| Фид | 0,67 / - | 0,66 / - | 0,18 / - |
| РЕБЕНОК | 0,42 / - | 0,66 / - | 0,12 / - |
| MSID | 0,21 / - | 0,32 / - | 0,01 / - |
| Гс | 0,37 / - | 0,37 / - | 0,02 / - |
| Koniq10k | Live-Itw | |
|---|---|---|
| Источник | PIQ / Ссылка | PIQ / Ссылка |
| Бриск | 0,22 / - | 0,31 / - |
| Клип-iqa | 0,68 / 0,68 Clip-IQA OFF | 0,64 / 0,64 клип-iqa off |
В отличие от FR и NR IQMS, предназначенных для вычисления на расстоянии изображения, метрики DB сравнивают распределения наборов изображений. Чтобы решить эти проблемы, мы принимаем другой способ вычисления DB IQM, предложенных в https://arxiv.org/abs/2203.07809. Вместо извлечения функций из всех изображений мы обрезаем их в перекрывающиеся плитки размером 96 × 96 с stride = 32 . Эта предварительная обработка позволяет нам рассматривать каждую пару изображений как пару распределений плиток, что позволяет дальнейшее сравнение. Другие этапы вычисления IQMS DB остаются нетронутыми.
В PIQ мы используем утверждения, чтобы поднять значимые сообщения, когда какой -либо компонент не получает вход ожидаемого типа. Это облегчает прототипирование и отладку, но это может повредить производительности. Чтобы отключить все проверки, используйте флаг Python -O : python -O your_script.py
Смотрите открытые проблемы для списка предлагаемых функций и известных проблем.
Если вы хотите помочь в разработке этой библиотеки, вы найдете больше информации в нашем руководстве по взносу.
Если вы используете PIQ в своем проекте, пожалуйста, укажите его следующим образом.
@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]
Джамиль Закиров - @zakajd - [email protected]
Денис Прокопенко - @denproc - [email protected]