image2image 任务的度量和指标。火炬。
项目描述
PyTorch 图像质量 (PIQ) 未得到 Facebook, Inc. 的认可;
PyTorch、PyTorch 徽标和任何相关标记是 Facebook, Inc. 的商标。
PyTorch 图像质量 (PIQ)是用于图像质量评估的度量和指标的集合。PIQ 可帮助您在没有样板代码的情况下专注于您的实验。该库包含一组不断扩展的度量和指标。对于可用作损失函数的度量/指标,实现了相应的 PyTorch 模块。
我们提供:
统一接口,易于使用和扩展。
写在纯 PyTorch 上,具有极少的附加依赖项。
广泛的用户输入验证。您的代码不会在训练过程中崩溃。
快速(可用 GPU 计算)且可靠。
大多数指标可以反向传播以进行模型优化。
支持python 3.6-3.8。
PIQ 最初被命名为PhotoSynthesis.Metrics。
安装
PyTorch Image Quality (PIQ)可以使用pip、conda或git安装。
如果你使用pip,你可以安装它:
$ pip install piq
如果你使用conda,你可以安装它:
$ conda install piq -c photosynthesis-team -c conda-forge -c PyTorch
如果您想直接使用 master 的最新功能,请克隆PIQ 存储库:
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)
有关示例的完整列表,请参阅功能指标示例。
指标列表
完整参考 (FR)
首字母缩略词 |
年 |
公制 |
|---|---|---|
信噪比 |
- |
|
SSIM |
2003年 |
|
MS-SSIM |
2004年 |
|
IW-SSIM |
2011 |
|
VIFp |
2004年 |
|
FSIM |
2011 |
|
SR-SIM |
2012 |
|
GMSD |
2013 |
|
VSI |
2014 |
|
DSS |
2015 |
|
- |
2016 年 |
|
- |
2016 年 |
|
哈尔PSI |
2016 年 |
|
MDSI |
2016 年 |
|
MS-GMSD |
2017 |
|
LPIPS |
2018 |
|
PieAPP |
2018 |
|
分布 |
2020 |
无参考 (NR)
首字母缩略词 |
年 |
公制 |
|---|---|---|
电视 |
1937年 |
|
布里斯克 |
2012 |
基于分布 (DB)
首字母缩略词 |
年 |
公制 |
|---|---|---|
是 |
2016 年 |
|
FID |
2017 |
|
GS |
2018 |
|
孩子 |
2018 |
|
MSID |
2019 |
|
公关 |
2019 |
基准
作为我们库的一部分,我们提供代码来对一组常见的平均意见得分数据库上的所有指标进行基准测试。目前我们支持TID2013、 KADID10k和PIPAL。您需要单独下载它们并提供图像路径作为脚本的参数。
以下是如何在 TID2013 数据集上评估 SSIM 和 MS-SSIM 指标的示例:
python3 tests/results_benchmark.py --dataset tid2013 --metrics SSIM MS-SSIM --path ~/datasets/tid2013 --batch_size 16
下面我们提供了使用 PIQ 获得并在调查中报告的Spearman 等级相关系数(SRCC) 值之间的比较。更接近的 SRCC 值表明给定数据集的计算结果之间的一致性程度更高。我们不报告Kendall 等级相关系数(KRCC),因为它与 SRCC 高度相关并且提供的附加信息有限。我们不报告Pearson 线性相关系数(PLCC),因为它高度依赖于拟合方法并且偏向于简单的示例。
对于可以拍摄灰度或彩色图像的指标,c表示彩色版本。
TID2013 |
KADID10k |
皮帕尔 |
|
|---|---|---|---|
资源 |
PIQ / 参考 |
PIQ / 参考 |
PIQ / 参考 |
信噪比 |
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评估 2019 |
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评估 2019 |
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评估 2019 |
0.88 / 0.86 KADID10k |
0.54 / - |
DSS |
0.79 / 0.79评估 2019 |
0.86 / 0.86 KADID10k |
0.63 / - |
内容 |
0.71 / - |
0.72 / - |
0.45 / - |
风格 |
0.54 / - |
0.65 / - |
0.34 / - |
哈尔PSI |
0.87 / 0.87哈尔PSI |
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分布 |
0.72 / - |
0.57 / 0.58 PIPAL |
PieAPP |
0.84 / 0.88分布 |
0.87 / - |
0.70 / 0.71 PIPAL |
分布 |
0.81 / 0.83分布 |
0.88 / - |
0.62 / 0.66 PIPAL |
布里斯克 |
0.37 / 0.84评估 2019 |
0.33 / 0.53 KADID10k |
0.21 / - |
是 |
0.26 / - |
0.25 / - |
0.09 / - |
FID |
0.67 / - |
0.66 / - |
0.18 / - |
孩子 |
0.42 / - |
0.66 / - |
0.12 / - |
MSID |
0.21 / - |
0.32 / - |
0.01 / - |
GS |
0.37 / - |
0.37 / - |
0.02 / - |
与旨在计算图像距离的 FR 和 NR IQM 不同,DB 指标比较图像集的分布。为了解决这些问题,我们采用了一种不同的方式来计算https://arxiv.org/abs/2203.07809中提出的 DB IQM 。我们不是从整个图像中提取特征,而是将它们裁剪成大小为96 × 96的重叠图块,步幅 = 32。这种预处理允许我们将每对图像视为一对瓷砖分布,从而进行进一步的比较。计算 DB IQM 的其他阶段保持不变。
断言
在 PIQ 中,当某些组件没有收到预期类型的输入时,我们使用断言来引发有意义的消息。这使得原型设计和调试更容易,但它可能会损害性能。要禁用所有检查,请使用 Python -O标志:python -O your_script.py
路线图
有关建议的功能和已知问题的列表,请参阅未解决的问题。
贡献
如果您想帮助开发这个库,您可以在我们的贡献指南中找到更多信息。
引文
如果您在项目中使用 PIQ,请按如下方式引用它。
@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},
}
联系人
谢尔盖 Kastryulin - @snk4tr - snk4tr@gmail.com
Jamil Zakirov - @zakajd - djamilzak@gmail.com
Denis Prokopenko - @denproc - d.prokopenko@outlook.com
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。