예제 #1
0
def get_fid(fakes, model, npz, device, batch_size=1, use_tqdm=True):
    m1, s1 = npz['mu'], npz['sigma']
    fakes = torch.cat(fakes, dim=0)
    fakes = util.tensor2im(fakes).astype(float)
    m2, s2 = _compute_statistics_of_ims(fakes, model, batch_size, 2048,
                                        device, use_tqdm=use_tqdm)
    return float(calculate_frechet_distance(m1, s1, m2, s2))
예제 #2
0
def get_fid_new(reals, fakes, model, device, batch_size=1, use_tqdm=True):
    reals = torch.cat(reals, dim=0)
    reals = util.tensor2im(reals).astype(float)
    fakes = torch.cat(fakes, dim=0)
    fakes = util.tensor2im(fakes).astype(float)

    m1, s1 = _compute_statistics_of_ims(reals,
                                        model,
                                        batch_size,
                                        2048,
                                        device,
                                        use_tqdm=use_tqdm,
                                        median=False)
    m2, s2 = _compute_statistics_of_ims(fakes,
                                        model,
                                        batch_size,
                                        2048,
                                        device,
                                        use_tqdm=use_tqdm,
                                        median=False)
    fid_mean = float(calculate_frechet_distance(m1, s1, m2, s2, median=False))

    m1, s1 = _compute_statistics_of_ims(reals,
                                        model,
                                        batch_size,
                                        2048,
                                        device,
                                        use_tqdm=use_tqdm,
                                        median=True)
    m2, s2 = _compute_statistics_of_ims(fakes,
                                        model,
                                        batch_size,
                                        2048,
                                        device,
                                        use_tqdm=use_tqdm,
                                        median=True)
    fid_median = float(calculate_frechet_distance(m1, s1, m2, s2, median=True))

    return fid_mean, fid_median