Spaces:
Build error
Build error
| import numpy as np | |
| import math | |
| def blend_rgba(img): | |
| img = img[..., :3] * img[..., -1:] + (1. - img[..., -1:]) # blend A to RGB | |
| return img | |
| class PSNR(): | |
| def psnr(cls, ref, pred, max=1.0): | |
| # if inputs of type int, then make sure max is 255 | |
| mse = ((ref - pred) ** 2).mean() | |
| return cls.psnr_from_mse(mse, max) | |
| def psnr_from_mse(mse, max=1.0): | |
| psnr = 20 * math.log10(max) - 10 * math.log10(mse) | |
| return psnr | |
| def psnr_to_rms(psnr_diff): | |
| """rms error improvement _ratio_ from psnr _diff_""" | |
| ratio = 10 ** (-psnr_diff / 20) | |
| return ratio | |
| class Scrambler(): | |
| def __init__(self, N): | |
| self.perm = np.random.permutation(N) | |
| def apply(self, *items): | |
| return [elem[self.perm] for elem in items] | |
| def unscramble(self, *items): | |
| ret = [] | |
| for elem in items: | |
| clean = np.zeros_like(elem) | |
| clean[self.perm] = elem | |
| ret.append(clean) | |
| return ret | |
| def trailing_window_view(xs, window_size): | |
| assert (window_size % 2) == 1, "window size should be odd" | |
| view = np.lib.stride_tricks.sliding_window_view( | |
| np.pad(xs, (window_size - 1, 0), mode="edge"), window_size | |
| ) | |
| return view | |
| def to_step(pbar, percent): | |
| step = int(pbar.total * percent / 100) | |
| return step | |
| def every(pbar, *, percent=None, step=None): | |
| if step is None: | |
| step = to_step(pbar, percent) | |
| return (pbar.n + 1) % step == 0 | |
| def at(pbar, *, percent=None, step=None): | |
| if step is None: | |
| step = to_step(pbar, percent) | |
| return (pbar.n + 1) == step | |