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