Spaces:
Runtime error
Runtime error
| # Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. | |
| # | |
| # NVIDIA CORPORATION and its licensors retain all intellectual property | |
| # and proprietary rights in and to this software, related documentation | |
| # and any modifications thereto. Any use, reproduction, disclosure or | |
| # distribution of this software and related documentation without an express | |
| # license agreement from NVIDIA CORPORATION is strictly prohibited. | |
| """Inception Score (IS) from the paper "Improved techniques for training | |
| GANs". Matches the original implementation by Salimans et al. at | |
| https://github.com/openai/improved-gan/blob/master/inception_score/model.py""" | |
| import numpy as np | |
| from . import metric_utils | |
| #---------------------------------------------------------------------------- | |
| def compute_is(opts, num_gen, num_splits): | |
| # Direct TorchScript translation of http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz | |
| detector_url = 'https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/metrics/inception-2015-12-05.pt' | |
| detector_kwargs = dict(no_output_bias=True) # Match the original implementation by not applying bias in the softmax layer. | |
| gen_probs = metric_utils.compute_feature_stats_for_generator( | |
| opts=opts, detector_url=detector_url, detector_kwargs=detector_kwargs, | |
| capture_all=True, max_items=num_gen).get_all() | |
| if opts.rank != 0: | |
| return float('nan'), float('nan') | |
| scores = [] | |
| for i in range(num_splits): | |
| part = gen_probs[i * num_gen // num_splits : (i + 1) * num_gen // num_splits] | |
| kl = part * (np.log(part) - np.log(np.mean(part, axis=0, keepdims=True))) | |
| kl = np.mean(np.sum(kl, axis=1)) | |
| scores.append(np.exp(kl)) | |
| return float(np.mean(scores)), float(np.std(scores)) | |
| #---------------------------------------------------------------------------- | |