File size: 3,298 Bytes
499e141
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import cv2
import numpy as np
import math
# from skimage.metrics import structural_similarity as ssim
from skimage.measure import compare_ssim 
from scipy.misc import imread
from glob import glob

import argparse

parser = argparse.ArgumentParser(description="evaluation codes")

parser.add_argument("--path", type=str, help="Path to evaluate images.")

args = parser.parse_args()

def psnr(img1, img2):
   mse = np.mean( (img1/255. - img2/255.) ** 2 )
   if mse < 1.0e-10:
      return 100
   PIXEL_MAX = 1
   return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))

def psnr_raw(img1, img2):
   mse = np.mean( (img1 - img2) ** 2 )
   if mse < 1.0e-10:
      return 100
   PIXEL_MAX = 1
   return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))


def my_ssim(img1, img2):
    return compare_ssim(img1, img2, data_range=img1.max() - img1.min(), multichannel=True)


def quan_eval(path, suffix="jpg"):
    # path: /disk2/yazhou/projects/IISP/exps/test_final_unet_globalEDV2/
    # ours
    gt_imgs = sorted(glob(path+"tar*.%s"%suffix))
    pred_imgs = sorted(glob(path+"pred*.%s"%suffix))

    # with open(split_path + "test_gt.txt", 'r') as f_gt, open(split_path+"test_rgb.txt","r") as f_rgb:
    #     gt_imgs = [line.rstrip() for line in f_gt.readlines()]
    #     pred_imgs = [line.rstrip() for line in f_rgb.readlines()]

    assert len(gt_imgs) == len(pred_imgs)

    psnr_avg = 0.
    ssim_avg = 0.
    for i in range(len(gt_imgs)):
        gt = imread(gt_imgs[i])
        pred = imread(pred_imgs[i])
        psnr_temp = psnr(gt, pred)
        psnr_avg += psnr_temp
        ssim_temp = my_ssim(gt, pred)
        ssim_avg += ssim_temp

        print("psnr: ", psnr_temp)
        print("ssim: ", ssim_temp)

    psnr_avg /= float(len(gt_imgs))
    ssim_avg /= float(len(gt_imgs))

    print("psnr_avg: ", psnr_avg)
    print("ssim_avg: ", ssim_avg)

    return psnr_avg, ssim_avg

def mse(gt, pred):
    return np.mean((gt-pred)**2)

def mse_raw(path, suffix="npy"):
    gt_imgs = sorted(glob(path+"raw_tar*.%s"%suffix))
    pred_imgs = sorted(glob(path+"raw_pred*.%s"%suffix))

    # with open(split_path + "test_gt.txt", 'r') as f_gt, open(split_path+"test_rgb.txt","r") as f_rgb:
    #     gt_imgs = [line.rstrip() for line in f_gt.readlines()]
    #     pred_imgs = [line.rstrip() for line in f_rgb.readlines()]
    
    assert len(gt_imgs) == len(pred_imgs)

    mse_avg = 0.
    psnr_avg = 0.
    for i in range(len(gt_imgs)):
        gt = np.load(gt_imgs[i])
        pred = np.load(pred_imgs[i])
        mse_temp = mse(gt, pred)
        mse_avg += mse_temp
        psnr_temp = psnr_raw(gt, pred)
        psnr_avg += psnr_temp

        print("mse: ", mse_temp)
        print("psnr: ", psnr_temp)

    mse_avg /= float(len(gt_imgs))
    psnr_avg /= float(len(gt_imgs))

    print("mse_avg: ", mse_avg)
    print("psnr_avg: ", psnr_avg)

    return mse_avg, psnr_avg

test_full = False

# if test_full:
#     psnr_avg, ssim_avg = quan_eval(ROOT_PATH+"%s/vis_%s_full/"%(args.task, args.ckpt), "jpeg")
#     mse_avg, psnr_avg_raw = mse_raw(ROOT_PATH+"%s/vis_%s_full/"%(args.task, args.ckpt))
# else:
psnr_avg, ssim_avg = quan_eval(args.path, "jpg")
mse_avg, psnr_avg_raw = mse_raw(args.path)    

print("pnsr: {}, ssim: {}, mse: {}, psnr raw: {}".format(psnr_avg, ssim_avg, mse_avg, psnr_avg_raw))