PyTorch 图像质量评估
项目描述
PIQA 未得到 Facebook, Inc. 的认可;PyTorch、PyTorch 徽标和任何相关标记是 Facebook, Inc. 的商标。
PyTorch 图像质量评估
该piqa
软件包是各种图像处理任务(例如去噪、超分辨率、图像插值等)中图像质量评估的度量和指标的集合。它仅依赖于PyTorch,并利用其效率和自动微分优势。
PIQA 直接受到该piq
项目的启发,但侧重于其(子)模块的简洁性、可读性和可理解性,以便任何人都可以轻松地重用和/或调整它们以满足其需求。
但是,简洁不应该以牺牲效率为代价;PIQA 的实现速度比其他 IQA PyTorch 包(如kornia
、piq
和IQA-pytorch
.
PIQA应该发音为pika(像皮卡丘⚡️)
安装
该piqa
软件包在PyPI上可用,这意味着它可以通过以下方式安装pip
:
pip install piqa
或者,如果您需要最新的功能,您可以使用
pip install git+https://github.com/francois-rozet/piqa
或将包直接复制到您的项目中,使用
git clone https://github.com/francois-rozet/piqa
cp -R piqa/piqa <path/to/project>/piqa
文档
入门
在piqa
中,每个度量都与一个类相关联,torch.nn.Module
它的子类必须被实例化以评估度量。
import torch
# PSNR
from piqa import PSNR
x = torch.rand(5, 3, 256, 256)
y = torch.rand(5, 3, 256, 256)
psnr = PSNR()
l = psnr(x, y)
# SSIM
from piqa import SSIM
x = torch.rand(5, 3, 256, 256, requires_grad=True).cuda()
y = torch.rand(5, 3, 256, 256).cuda()
ssim = SSIM().cuda()
l = 1 - ssim(x, y)
l.backward()
与torch.nn
内置组件一样,这些类基于度量的功能定义,对用户不太友好,但更通用。
import torch
from piqa.ssim import ssim
from piqa.utils.functional import gaussian_kernel
x = torch.rand(5, 3, 256, 256)
y = torch.rand(5, 3, 256, 256)
kernel = gaussian_kernel(11, sigma=1.5).repeat(3, 1, 1)
l = ssim(x, y, kernel=kernel, channel_avg=False)
指标
首字母缩略词 | 班级 | 范围 | 客观的 | 年 | 公制 |
---|---|---|---|---|---|
电视 | TV |
[0, ∞] |
/ | 1937年 | 总变异 |
信噪比 | PSNR |
[0, ∞] |
最大限度 | / | 峰值信噪比 |
SSIM | SSIM |
[0, 1] |
最大限度 | 2004年 | 结构相似性 |
MS-SSIM | MS_SSIM |
[0, 1] |
最大限度 | 2004年 | 多尺度结构相似性 |
LPIPS | LPIPS |
[0, ∞] |
分钟 | 2018 | 学习感知图像补丁相似度 |
GMSD | GMSD |
[0, ∞] |
分钟 | 2013 | 梯度幅度相似度偏差 |
MS-GMSD | MS_GMSD |
[0, ∞] |
分钟 | 2017 | 多尺度梯度幅度相似性偏差 |
MDSI | MDSI |
[0, ∞] |
分钟 | 2016 年 | 平均偏差相似指数 |
哈尔PSI | HaarPSI |
[0, 1] |
最大限度 | 2018 | 哈尔感知相似度指数 |
VSI | VSI |
[0, 1] |
最大限度 | 2014 | 基于视觉显着性的索引 |
FSIM | FSIM |
[0, 1] |
最大限度 | 2011 | 特征相似度 |
即时通讯
大多数功能组件都piqa
支持 PyTorch 的 JIT,即 TorchScript,这是一种从 PyTorch 代码创建可序列化和可优化函数的方法。
默认情况下,这些组件的抖动是禁用的。要启用它,必须将PIQA_JIT
环境变量设置为1
. 暂时这样做,
- 类 UNIX
bash
export PIQA_JIT=1
- 视窗
cmd
set PIQA_JIT=1
- 微软
PowerShell
$env:PIQA_JIT=1
断言
当面向对象的组件没有接收到预期类型的输入时,PIQA 使用类型断言来引发有意义的消息。这个特性简化了很多早期的原型设计和调试,但它可能会损害一些性能。
如果您需要绝对最佳的性能,可以使用 Python 标志禁用断言-O
。例如,
python -O your_awesome_code_using_piqa.py
或者,您可以在代码中禁用 PIQA 的类型断言
from piqa.utils import set_debug
set_debug(False)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。