
Dieses Repository bietet präzise , effiziente und erweiterbare Implementierungen der beliebten Metriken für die generative Modellbewertung, einschließlich:
Numerische Genauigkeit : Im Gegensatz zu vielen anderen Neuauflagen übereinstimmen die von Fackelfidelity erzeugten Werte bis hin zu Floating Point-Maschinenpräzision. Dies ermöglicht die Verwendung von Torchfidelity für die Meldung von Metriken in Papieren anstelle von verstreuten und langsamen Referenzimplementierungen. Lesen Sie mehr über numerische Präzision
Effizienz : Die gemeinsame Nutzung der Metriken zwischen verschiedenen Metriken spart die Neuberechnung und ein zusätzliches Caching -Level vermieden, wie möglich die Neuberechnung von Funktionen und Statistiken, wenn möglich. Die hohe Effizienz ermöglicht die Verwendung von Fackelfidelität in der Trainingsschleife, zum Beispiel am Ende jeder Epoche. Lesen Sie mehr über Effizienz
Erweiterbarkeit : Über 2D -Bilderzeugung hinaus ist aufgrund der hohen Modularität und Abstraktion der Metriken von Eingabedaten, Modellen und Merkmalextraktoren einfach. Beispielsweise kann man den Inceptionv3 -Feature -Extraktor für ein 1 -Akzeptieren von 3D -Scanvolumina austauschen, wie sie bei der MRT verwendet werden. Lesen Sie mehr über Erweiterbarkeit
TLDR; schnelle und zuverlässige GaN -Bewertung in Pytorch
pip install torch-fidelitySiehe auch: Installieren des neuesten Github -Code
Im Folgenden finden Sie drei Beispiele für die Verwendung von Torch-Fidelity, um Metriken aus der Befehlszeile zu bewerten. Weitere Beispiele in der Dokumentation finden Sie in der Dokumentation.
Inception Score von CIFAR-10-Trainingsaufteilung:
> fidelity --gpu 0 --isc --input1 cifar10-train
inception_score_mean: 11.23678
inception_score_std: 0.09514061 Inception -Punktzahl eines Verzeichnisses von Bildern, die in ~/images/ :
> fidelity --gpu 0 --isc --input1 ~ /images/ Effiziente Berechnung von ISC und PPL für input1 und FID, Kid, VR China zwischen einem generativen Modell, das in ~/generator.onnx und CIFAR-10-Trainingsaufteilung gespeichert ist:
> 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 Siehe auch: Andere Verwendungsbeispiele
Wenn es darum geht, die Leistung generativer Modelle während des Trainings zu verfolgen, wird die Bewertung von Metriken aufgrund langer Rechenzeiten unerschwinglich teuer. torch_fidelity wird dieses Problem angekündigt, indem sie das Caching voll ausnutzen, um nach Möglichkeit gemeinsame Merkmale und pro-metrische Statistiken zu vermeiden. Berechnen Sie alle Metriken für 50000 32x32 erzeugte Bilder und cifar10-train dauert nur 2 Minuten 26 Sekunden auf NVIDIA P100 GPU, verglichen mit> 10 min, wenn Original-Codebasen verwendet werden. Die 20 -fache Berechnung von Metriken über den gesamten Trainingszyklus macht die allgemeine Trainingszeit nur eine Stunde länger.
Nehmen wir im folgenden Beispiel eine bedingungslose Bildungseinstellung mit CIFAR-10 und den generator an, der einen 128-dimensionalen normalen Normalrauschvektor benötigt.
Importieren Sie zunächst das Modul:
import torch_fidelityFügen Sie die folgenden Zeilen am Ende der Epoche -Bewertung hinzu:
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 ,
)Das resultierende Wörterbuch mit berechneten Metriken kann sich direkt an Tensorboard, Wandb oder Konsole angemeldet:
print ( metrics_dict )Ausgabe:
{
'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
}Siehe auch: Vollständige API -Referenz
Eine vollständige Schulungsbeispiele finden Sie in Sngan_cifar10.py.
Evolution von festen Generatorleitungen im Beispiel:

Ein Generator -Checkpoint, der sich aus dem Training ergibt, kann hier heruntergeladen werden.
Schlägt vor, dass das eigenständige fidelity -Tool nur verfügbar ist, es sei denn, der obige Pfad wird der Pfadumgebungsvariable hinzugefügt. Wenn das Ändern unerwünscht ist, kann das Tool weiterhin auf dem vollständigen Pfad aufgerufen werden: <SOMEPATH>/fidelity .
Es wird empfohlen, das Bewertungsprotokoll in Arbeiten zu verstärken, die sich auf Fackelfordnungen stützen. Verwenden Sie das folgende Bibtex, um die Reproduzierbarkeit beim Zitieren dieses Repositorys zu gewährleisten:
@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}
}