Spaces:
Runtime error
Runtime error
import numpy as np | |
import scipy.linalg | |
from . import metric_utils | |
import sklearn.svm | |
#---------------------------------------------------------------------------- | |
def compute_ids(opts, max_real, num_gen): | |
# 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(return_features=True) # Return raw features before the softmax layer. | |
real_activations = metric_utils.compute_feature_stats_for_dataset( | |
opts=opts, detector_url=detector_url, detector_kwargs=detector_kwargs, | |
rel_lo=0, rel_hi=0, capture_all=True, max_items=max_real).get_all() | |
fake_activations = metric_utils.compute_feature_stats_for_generator( | |
opts=opts, detector_url=detector_url, detector_kwargs=detector_kwargs, | |
rel_lo=0, rel_hi=1, capture_all=True, max_items=num_gen).get_all() | |
if opts.rank != 0: | |
return float('nan') | |
svm = sklearn.svm.LinearSVC(dual=False) | |
svm_inputs = np.concatenate([real_activations, fake_activations]) | |
svm_targets = np.array([1] * real_activations.shape[0] + [0] * fake_activations.shape[0]) | |
print('Fitting ...') | |
svm.fit(svm_inputs, svm_targets) | |
u_ids = 1 - svm.score(svm_inputs, svm_targets) | |
real_outputs = svm.decision_function(real_activations) | |
fake_outputs = svm.decision_function(fake_activations) | |
p_ids = np.mean(fake_outputs > real_outputs) | |
return float(u_ids), float(p_ids) | |
#---------------------------------------------------------------------------- | |