qic999's picture
Upload folder using huggingface_hub
28e6f98 verified
Raw
History Blame Contribute Delete
1.31 kB
import numpy as np
from skimage.metrics import peak_signal_noise_ratio, structural_similarity
def nmse(gt, pred):
"""Compute Normalized Mean Squared Error (NMSE)"""
return np.linalg.norm(gt - pred) ** 2 / np.linalg.norm(gt) ** 2
def psnr(gt, pred):
"""Compute Peak Signal to Noise Ratio metric (PSNR)"""
return peak_signal_noise_ratio(gt, pred, data_range=gt.max())
def ssim(gt, pred, maxval=None):
"""Compute Structural Similarity Index Metric (SSIM)"""
maxval = gt.max() if maxval is None else maxval
ssim = 0
for slice_num in range(gt.shape[0]):
ssim = ssim + structural_similarity(
gt[slice_num], pred[slice_num], data_range=maxval
)
ssim = ssim / gt.shape[0]
return ssim
class AverageMeter(object):
"""Computes and stores the average and current value.
Code imported from https://github.com/pytorch/examples/blob/master/imagenet/main.py#L247-L262
"""
def __init__(self):
self.reset()
def reset(self):
self.val = 0
self.avg = 0
self.sum = 0
self.count = 0
self.score = []
def update(self, val, n=1):
self.val = val
self.sum += val * n
self.count += n
self.avg = self.sum / self.count
self.score.append(val)