我的编程空间,编程开发者的网络收藏夹
学习永远不晚

pytorch ssim计算

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

pytorch ssim计算

在PyTorch中,可以使用 torchvision 库中的 SSIM 函数来计算结构相似性指数 (SSIM)。

SSIM 函数的签名如下:

torchvision.metrics.SSIM(data_range: Union[int, float] = 1, win_size: int = 11, win_sigma: float = 1.5, k1: float = 0.01, k2: float = 0.03, nonnegative_ssim: bool = False, eps: float = 1e-8, reduction: str = 'mean')

其中,参数的含义如下:

data_range:输入数据的范围,通常为1.0或255.0。
win_size:滑动窗口的大小。
win_sigma:滑动窗口的高斯核标准差。
k1、k2:SSIM计算公式中的常数。
nonnegative_ssim:是否将SSIM限制在非负数范围内。
eps:数值稳定性的参数。
reduction:用于计算损失的降维方法,可以取值为 mean、sum 或 none。
下面是一个使用 SSIM 函数计算两张图片的 SSIM 值的例子:

import torchimport torchvision.transforms.functional as Fimport torchvision.metrics as metrics# 读取两张图片img1 = F.to_tensor(F.resize(F.pil_loader('img1.jpg'), (256, 256))).unsqueeze(0)img2 = F.to_tensor(F.resize(F.pil_loader('img2.jpg'), (256, 256))).unsqueeze(0)# 计算 SSIMssim = metrics.SSIM(data_range=1.0, win_size=11, win_sigma=1.5, k1=0.01, k2=0.03, eps=1e-8, reduction='mean')print(ssim(img1, img2))

其中,img1.jpg 和 img2.jpg 是两张待比较的图片。首先使用 pil_loader 函数读取图片,然后使用 resize 函数将图片大小调整为256x256,最后使用 to_tensor 函数将 PIL.Image 对象转换为 PyTorch 张量。

在计算 SSIM 值时,我们需要先创建一个 SSIM 对象,然后将两张图片作为参数传入即可。计算结果将会是一个标量张量

使用skimage计算

from skimage.measure import compare_ssim as ssimdef ssim_metric(target: object, prediction: object, win_size: int=21):    """    introduce:        calculate ssim.            args:        :param ndarray target: target, like ndarray[256, 256].        :param ndarray prediction: prediction, like ndarray[256, 256].        :param int win_size: default.        return:        :param float cur_ssim: return ssim, between [-1, 1], like 0.72.    """    cur_ssim = ssim(        target,        prediction,        win_size=win_size,        data_range=target.max() - target.min(),    )    return cur_ssim

SSIM取值范围

SSIM(结构相似性指标)是一种用于测量图像质量的方法,其取值范围为-1到1之间,其中1表示两幅图像完全相同,-1表示两幅图像完全不同。通常情况下,SSIM值越高,表示两幅图像越相似,质量也越好。常见的SSIM取值范围如下:

1:完美匹配0.9 - 1:非常好0.7 - 0.9:良好0.5 - 0.7:一般0.3 - 0.5:差0 - 0.3:非常差

需要注意的是,SSIM是一种相对度量,而不是绝对度量。这意味着SSIM值的实际意义取决于它与其他图像的比较结果。因此,在评估图像质量时,应该使用多个SSIM值进行比较,以便得出更准确的结论。

关于取到负数:SSIM(结构相似性指标)可以取到负数。SSIM的取值范围是-1到1之间,其中1表示两幅图像完全相同,0表示两幅图像没有相似性,而-1表示两幅图像完全不同。在实际应用中,SSIM值通常是在0到1之间,表示图像的相似度越高,SSIM值越接近1。但是,在一些情况下,SSIM值可能会低于0,这通常发生在比较的两幅图像之一具有负值像素时。在这种情况下,SSIM将返回一个负数。因此,当使用SSIM作为图像质量度量时,需要注意检查SSIM值是否为负,并对其进行解释。

来源地址:https://blog.csdn.net/qq_43369406/article/details/129211386

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

pytorch ssim计算

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

F.conv2d pytorch卷积计算方式

这篇文章主要介绍了F.conv2d pytorch卷积计算方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-21

怎么用pytorch 计算Parameter和FLOP

这篇文章主要介绍“怎么用pytorch 计算Parameter和FLOP”,在日常操作中,相信很多人在怎么用pytorch 计算Parameter和FLOP问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用
2023-06-06

Pytorch中关于F.normalize计算理解

这篇文章主要介绍了Pytorch中关于F.normalize计算理解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-02

使用pytorch怎么计算 kl散度

使用pytorch怎么计算 kl散度 ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如果现在想用Y指导X,第一个参数要传X,第二个要传Y。就是被指导的放在前面,
2023-06-15

PyTorch怎么如何自动计算梯度

小编给大家分享一下PyTorch怎么如何自动计算梯度,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在PyTorch中,torch.Tensor类是存储和变换数据的
2023-06-15

Python tensorflow与pytorch的浮点运算数怎么计算

这篇文章主要讲解了“Python tensorflow与pytorch的浮点运算数怎么计算”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python tensorflow与pytorch的浮
2023-07-04

F.conv2d pytorch卷积计算方式是什么

这篇文章主要讲解了“F.conv2d pytorch卷积计算方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“F.conv2d pytorch卷积计算方式是什么”吧!F.conv2d
2023-07-05

PyTorch动态计算图的概念是什么

PyTorch动态计算图是指在PyTorch中,计算图是动态构建的,即在每次前向传播过程中都会重新构建计算图。这意味着用户可以在运行时动态地定义、修改和调整计算图,而不需要预先定义静态计算图。这种动态计算图的特性使得PyTorch在实现一些
PyTorch动态计算图的概念是什么
2024-03-05

Python PyTorch:让计算机像人一样思考

随着人工智能的不断发展,计算机越来越像人类,其中,Python PyTorch作为当下流行的机器学习框架之一,扮演着重要角色,它让计算机能够像人一样思考,解决更加复杂的问题。
Python PyTorch:让计算机像人一样思考
2024-02-02

怎么在pytorch中使用MSELoss计算平均

本篇文章为大家展示了怎么在pytorch中使用MSELoss计算平均,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。给定损失函数的输入y,pred,shape均为bxc。若设定loss_fn = to
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录