
Ce référentiel fournit des implémentations précises , efficaces et extensibles des mesures populaires pour l'évaluation générative du modèle, notamment:
Précision numérique : Contrairement à de nombreuses autres réimplémentations, les valeurs produites par les implémentations de référence de correspondance de fidélité torch jusqu'à la précision de la machine de Floating Point. Cela permet d'utiliser la fidelle de la torche pour signaler les mesures dans des articles au lieu d'implémentations de référence dispersées et lentes. En savoir plus sur la précision numérique
Efficacité : le partage des fonctionnalités entre différentes métriques permet de récomperter le temps de récompatue, et un niveau de mise en cache supplémentaire évite les fonctionnalités et les statistiques de récompensation dans la mesure du possible. Une efficacité élevée permet d'utiliser la fidélité des torche dans la boucle d'entraînement, par exemple à la fin de chaque époque. En savoir plus sur l'efficacité
Extensibilité : aller au-delà de la génération d'images 2D est facile en raison de la modularité élevée et de l'abstraction des métriques à partir de données d'entrée, de modèles et d'extracteurs de fonctionnalités. Par exemple, on peut échanger l'extracteur de fonctionnalité INCECCEPV3 pour un volume de scan 3D acceptant un seul, comme celui utilisé dans l'IRM. En savoir plus sur l'extensibilité
TLDR; Évaluation GAN rapide et fiable à Pytorch
pip install torch-fidelityVoir aussi: Installation du dernier code GitHub
Vous trouverez ci-dessous trois exemples d'utilisation de la filette de torche pour évaluer les métriques à partir de la ligne de commande. Voir plus d'exemples dans la documentation.
Score de création de la division d'entraînement CIFAR-10:
> fidelity --gpu 0 --isc --input1 cifar10-train
inception_score_mean: 11.23678
inception_score_std: 0.09514061 Score de création d'un répertoire d'images stockées en ~/images/ :
> fidelity --gpu 0 --isc --input1 ~ /images/ Calcul efficace de l'ISC et PPL pour input1 , et FID, Kid, PRC entre un modèle génératif stocké dans ~/generator.onnx et Cifar-10 Split:
> fidelity
--gpu 0
--isc
--fid
--kid
--ppl
--prc
--input1 ~ /generator.onnx
--input1-model-z-type normal
--input1-model-z-size 128
--input1-model-num-samples 50000
--input2 cifar10-train Voir aussi: Autres exemples d'utilisation
Lorsqu'il s'agit de suivre les performances des modèles génératifs lorsqu'ils s'entraînent, l'évaluation des mesures après chaque époque devient prohibitive en raison de longs temps de calcul. torch_fidelity s'attaque à ce problème en utilisant pleinement la mise en cache pour éviter de récompenser les caractéristiques communes et les statistiques par métrique dans la mesure du possible. Compuler toutes les mesures pour 50000 32x32 Images générées et cifar10-train ne prend que 2 min 26 secondes sur le GPU NVIDIA P100, par rapport à> 10 min si vous utilisez des bases de code d'origine. Ainsi, l'informatique des métriques 20 fois au cours de l'ensemble du cycle de formation rend le temps de formation global d'une heure de plus.
Dans l'exemple suivant, supposons le paramètre de génération d'images inconditionnel avec CIFAR-10, et le generator de modèle génératif, qui prend un vecteur de bruit normal standard à 128 dimensions.
Tout d'abord, importez le module:
import torch_fidelityAjouter les lignes suivantes à la fin de l'évaluation de l'époque:
wrapped_generator = torch_fidelity . GenerativeModelModuleWrapper ( generator , 128 , 'normal' , 0 )
metrics_dict = torch_fidelity . calculate_metrics (
input1 = wrapped_generator ,
input2 = 'cifar10-train' ,
cuda = True ,
isc = True ,
fid = True ,
kid = True ,
prc = True ,
verbose = False ,
)Le dictionnaire résultant avec des mesures calculées peut être enregistrée directement à Tensorboard, Wandb ou Console:
print ( metrics_dict )Sortir:
{
'inception_score_mean' : 11.23678 ,
'inception_score_std' : 0.09514061 ,
'frechet_inception_distance' : 18.12198 ,
'kernel_inception_distance_mean' : 0.01369556 ,
'kernel_inception_distance_std' : 0.001310059
'precision' : 0.51369556 ,
'recall' : 0.501310059
}Voir aussi: référence complète de l'API
Reportez-vous à sngan_cifar10.py pour un exemple de formation complet.
Évolution destentes du générateur fixe dans l'exemple:

Un point de contrôle de générateur résultant de la formation de l'exemple peut être téléchargé ici.
Suggère que l'outil fidelity autonome ne sera disponible que si le chemin ci-dessus est ajouté à la variable d'environnement de chemin. Si la modification n'est pas souhaitable, l'outil peut toujours être appelé par son chemin complet: <SOMEPATH>/fidelity .
La citation est recommandée pour renforcer le protocole d'évaluation dans les travaux reposant sur la fidélité torche. Pour assurer la reproductibilité lors de la citation de ce référentiel, utilisez le bibtex suivant:
@misc{obukhov2020torchfidelity,
author={Anton Obukhov and Maximilian Seitzer and Po-Wei Wu and Semen Zhydenko and Jonathan Kyl and Elvis Yu-Jing Lin},
year=2020,
title={High-fidelity performance metrics for generative models in PyTorch},
url={https://github.com/toshas/torch-fidelity},
publisher={Zenodo},
version={v0.3.0},
doi={10.5281/zenodo.4957738},
note={Version: 0.3.0, DOI: 10.5281/zenodo.4957738}
}