SSIM代码报错:win_size exceeds image extent. If the input is a multichannel image,set multichanel=True

ssh://limw@202.112.153.139:22/home/limw/anaconda3/bin/python -u /home/limw/project/PaperReader/3.ImageTranslation/TransWeather-main/test_transweather.py Seed: 19 --- Testing starts! --- Traceback (most recent call last): File "/home/limw/project/PaperReader/3.ImageTranslation/TransWeather-main/test_transweather.py", line 89, in <module> val_psnr, val_ssim = validation(net, val_data_loader, device, exp_name) File "/home/limw/project/PaperReader/3.ImageTranslation/TransWeather-main/utils.py", line 42, in validation val_ssim.append(np.mean(np.array(to_ssim(gt,pred_image)))) File "/home/limw/project/PaperReader/3.ImageTranslation/TransWeather-main/utils.py", line 23, in to_ssim ssim_cal = structural_similarity(clear_img, hazy_img,win_size=11, multichannel=True) File "/home/limw/anaconda3/lib/python3.8/site-packages/skimage/metrics/_structural_similarity.py", line 107, in structural_similarity ch_result = structural_similarity(im1[..., ch], File "/home/limw/anaconda3/lib/python3.8/site-packages/skimage/metrics/_structural_similarity.py", line 152, in structural_similarity raise ValueError( ValueError: win_size exceeds image extent. If the input is a multichannel (color) image, set multichannel=True.

报错信息为:win_size exceeds image extent.  If the input is a multichannel (color) image, set multichannel=True.

解决方法:

#psnr和ssim的项目代码
# -*- coding:utf-8 -*-
# 作者:螺蛳粉
import math
import numpy as np
import torch
from skimage.metrics import structural_similarity

def to_psnr(target, ref):
    result = []
    diff = ref - target
    diff = diff.flatten()
    # diff = diff.flatten("C")
    # rmse = math.sqrt(np.mean(diff ** 2.))
    rmse = math.sqrt(np.mean(diff ** 2.))
    result.append(20*math.log10(1.0/rmse))
    return result

def to_ssim(clear_img, hazy_img):
    result = []
    clear_img = np.array(clear_img)
    hazy_img = np.array(hazy_img)
    ssim_cal = structural_similarity(clear_img, hazy_img,win_size=1, use_sample_covariance=False, multichannel=True)
    result.append(ssim_cal)
    return result

def validation(net, val_data_loader1, device, exp_name):
    val_psn = []
    val_ssim = []
    # test_num = 0
    for batch_id, train_data in enumerate(val_data_loader1):
        input_image, gt, imgid = train_data
        input_image = input_image.to(device)
        gt = gt.to(device).detach()
        pred_image = net(input_image).to(device).detach()
        gt = gt.cpu().numpy()
        pred_image = pred_image.cpu().numpy()
        # gt = gt.to(device).detach().cpu().numpy()
        # pred_image = net(input_image).detach().cpu().numpy()

        val_psn.append(np.mean(np.array(to_psnr(pred_image, gt))))
        val_ssim.append(np.mean(np.array(to_ssim(gt,pred_image))))
        # val_psn.append(np.mean(np.array(to_psnr(pred_image, gt))))
        # if test_num > 300:
        #     break
        # test_num += 1

    # return np.mean(np.array(val_psn))
    return np.mean(np.array(val_psn)),np.mean(np.array(val_ssim))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值