最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch?ssim計(jì)算詳細(xì)代碼例子

 更新時(shí)間:2023年12月18日 08:26:41   作者:櫻木之  
這篇文章主要給大家介紹了關(guān)于pytorch?ssim計(jì)算的相關(guān)資料,結(jié)構(gòu)相似性(SSIM)是一種測(cè)量?jī)煞鶊D像的相似度的方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在PyTorch中,可以使用 torchvision 庫中的 SSIM 函數(shù)來計(jì)算結(jié)構(gòu)相似性指數(shù) (SSIM)。

SSIM 函數(shù)的簽名如下:

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')

其中,參數(shù)的含義如下:

  • data_range:輸入數(shù)據(jù)的范圍,通常為1.0或255.0。
  • win_size:滑動(dòng)窗口的大小。
  • win_sigma:滑動(dòng)窗口的高斯核標(biāo)準(zhǔn)差。
  • k1、k2:SSIM計(jì)算公式中的常數(shù)。
  • nonnegative_ssim:是否將SSIM限制在非負(fù)數(shù)范圍內(nèi)。
  • eps:數(shù)值穩(wěn)定性的參數(shù)。
  • reduction:用于計(jì)算損失的降維方法,可以取值為 mean、sum 或 none。

下面是一個(gè)使用 SSIM 函數(shù)計(jì)算兩張圖片的 SSIM 值的例子:

import torch
import torchvision.transforms.functional as F
import 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)

# 計(jì)算 SSIM
ssim = 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 函數(shù)讀取圖片,然后使用 resize 函數(shù)將圖片大小調(diào)整為256x256,最后使用 to_tensor 函數(shù)將 PIL.Image 對(duì)象轉(zhuǎn)換為 PyTorch 張量。

在計(jì)算 SSIM 值時(shí),我們需要先創(chuàng)建一個(gè) SSIM 對(duì)象,然后將兩張圖片作為參數(shù)傳入即可。計(jì)算結(jié)果將會(huì)是一個(gè)標(biāo)量張量

使用skimage計(jì)算

from skimage.measure import compare_ssim as ssim


def 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(結(jié)構(gòu)相似性指標(biāo))是一種用于測(cè)量圖像質(zhì)量的方法,其取值范圍為-1到1之間,其中1表示兩幅圖像完全相同,-1表示兩幅圖像完全不同。通常情況下,SSIM值越高,表示兩幅圖像越相似,質(zhì)量也越好。常見的SSIM取值范圍如下:

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

需要注意的是,SSIM是一種相對(duì)度量,而不是絕對(duì)度量。這意味著SSIM值的實(shí)際意義取決于它與其他圖像的比較結(jié)果。因此,在評(píng)估圖像質(zhì)量時(shí),應(yīng)該使用多個(gè)SSIM值進(jìn)行比較,以便得出更準(zhǔn)確的結(jié)論。

關(guān)于取到負(fù)數(shù):SSIM(結(jié)構(gòu)相似性指標(biāo))可以取到負(fù)數(shù)。SSIM的取值范圍是-1到1之間,其中1表示兩幅圖像完全相同,0表示兩幅圖像沒有相似性,而-1表示兩幅圖像完全不同。在實(shí)際應(yīng)用中,SSIM值通常是在0到1之間,表示圖像的相似度越高,SSIM值越接近1。但是,在一些情況下,SSIM值可能會(huì)低于0,這通常發(fā)生在比較的兩幅圖像之一具有負(fù)值像素時(shí)。在這種情況下,SSIM將返回一個(gè)負(fù)數(shù)。因此,當(dāng)使用SSIM作為圖像質(zhì)量度量時(shí),需要注意檢查SSIM值是否為負(fù),并對(duì)其進(jìn)行解釋。

附:PyTorch中的SSIM損失函數(shù)的參數(shù)

F.ssim_loss函數(shù)有一些可選參數(shù),可以用于調(diào)整計(jì)算SSIM損失的方式。下面是一些常用參數(shù)的說明:

  • data_range:指定圖像像素值的范圍,默認(rèn)為1.0。如果圖像像素值在0到1之間,可以保持默認(rèn)值。
  • size_average:指定是否對(duì)每個(gè)像素的SSIM進(jìn)行平均,默認(rèn)為True。如果設(shè)置為False,將返回每個(gè)像素的SSIM值。

例如,如果想計(jì)算每個(gè)像素的SSIM值,并且圖像像素值范圍在0到255之間,可以使用以下代碼:

import torch
import torch.nn.functional as F

# 隨機(jī)生成兩個(gè)圖像,假設(shè)圖像大小為256x256
x = torch.rand((1, 3, 256, 256))
y = torch.rand((1, 3, 256, 256))

# 計(jì)算每個(gè)像素的SSIM損失,圖像像素值范圍為0到255
loss = 1 - F.ssim_loss(x, y, data_range=255, size_average=False)

print(loss)

總結(jié)

到此這篇關(guān)于pytorch ssim計(jì)算的文章就介紹到這了,更多相關(guān)pytorch ssim計(jì)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何將自己的python代碼發(fā)布在pip install給別人使用你知道嗎

    如何將自己的python代碼發(fā)布在pip install給別人使用你知道嗎

    這篇文章主要介紹了python如何發(fā)布自已的pip項(xiàng)目,方便大家學(xué)習(xí),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-08-08
  • python zip()函數(shù)的使用示例

    python zip()函數(shù)的使用示例

    這篇文章主要介紹了python zip()的使用示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • Python獲取百度熱搜的完整代碼

    Python獲取百度熱搜的完整代碼

    這篇文章主要介紹了Python獲取百度熱搜的完整代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Python爬蟲學(xué)習(xí)之requests的使用教程

    Python爬蟲學(xué)習(xí)之requests的使用教程

    requests庫是一個(gè)常用的用于?http?請(qǐng)求的模塊,它使用?python?語言編寫,可以方便的對(duì)網(wǎng)頁進(jìn)行爬取。本文將通過示例詳細(xì)講講requests庫的使用,需要的可以參考一下
    2022-08-08
  • Python中的 enum 模塊源碼詳析

    Python中的 enum 模塊源碼詳析

    這篇文章主要給大家介紹了關(guān)于Python中 enum 模塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • python密碼學(xué)各種加密模塊教程

    python密碼學(xué)各種加密模塊教程

    這篇文章主要為大家介紹了python密碼學(xué)各種加密模塊教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • django之從html頁面表單獲取輸入的數(shù)據(jù)實(shí)例

    django之從html頁面表單獲取輸入的數(shù)據(jù)實(shí)例

    這篇文章主要介紹了django之從html頁面表單獲取輸入的數(shù)據(jù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python實(shí)現(xiàn)支持目錄FTP上傳下載文件的方法

    python實(shí)現(xiàn)支持目錄FTP上傳下載文件的方法

    這篇文章主要介紹了python實(shí)現(xiàn)支持目錄FTP上傳下載文件的方法,適用于windows及Linux平臺(tái)FTP傳輸文件及文件夾,需要的朋友可以參考下
    2015-06-06
  • 如何在django中實(shí)現(xiàn)分頁功能

    如何在django中實(shí)現(xiàn)分頁功能

    這篇文章主要介紹了如何在django中實(shí)現(xiàn)分頁功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 解決Python安裝后pip不能用的問題

    解決Python安裝后pip不能用的問題

    今天小編就為大家分享一篇解決Python安裝后pip不能用的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評(píng)論

贵南县| 天峨县| 彝良县| 高阳县| 黔西县| 泰来县| 喜德县| 滦平县| 武胜县| 沿河| 得荣县| 仪征市| 固安县| 嘉定区| 呈贡县| 桐乡市| 邓州市| 铜鼓县| 遂川县| 固镇县| 临高县| 博野县| 易门县| 喀什市| 三都| 榕江县| 小金县| 绥宁县| 广昌县| 昌图县| 太原市| 武邑县| 绥宁县| 怀宁县| 商洛市| 安阳市| 庄河市| 大竹县| 饶阳县| 东至县| 天全县|