Spaces:
Sleeping
Sleeping
import logging | |
import torch | |
from saicinpainting.evaluation.evaluator import InpaintingEvaluatorOnline, ssim_fid100_f1, lpips_fid100_f1 | |
from saicinpainting.evaluation.losses.base_loss import SSIMScore, LPIPSScore, FIDScore | |
def make_evaluator(kind='default', ssim=True, lpips=True, fid=True, integral_kind=None, **kwargs): | |
logging.info(f'Make evaluator {kind}') | |
device = "cuda" if torch.cuda.is_available() else "cpu" | |
metrics = {} | |
if ssim: | |
metrics['ssim'] = SSIMScore() | |
if lpips: | |
metrics['lpips'] = LPIPSScore() | |
if fid: | |
metrics['fid'] = FIDScore().to(device) | |
if integral_kind is None: | |
integral_func = None | |
elif integral_kind == 'ssim_fid100_f1': | |
integral_func = ssim_fid100_f1 | |
elif integral_kind == 'lpips_fid100_f1': | |
integral_func = lpips_fid100_f1 | |
else: | |
raise ValueError(f'Unexpected integral_kind={integral_kind}') | |
if kind == 'default': | |
return InpaintingEvaluatorOnline(scores=metrics, | |
integral_func=integral_func, | |
integral_title=integral_kind, | |
**kwargs) | |