
يوفر هذا المستودع تطبيقات دقيقة وفعالة وقابلة للتوسيع للمقاييس الشائعة لتقييم النموذج التوليدي ، بما في ذلك:
الدقة العددية : على عكس العديد من عمليات إعادة التنفيذ الأخرى ، فإن القيم التي تنتجها تطبيقات المرجعية لمطابقة Torch-Fidelity تصل إلى دقة آلة النقطة العائمة. يسمح ذلك باستخدام إحداث الشعلة للإبلاغ عن المقاييس في الأوراق بدلاً من التطبيقات المرجعية المتناثرة والبطيئة. اقرأ المزيد عن الدقة العددية
الكفاءة : يوفر مشاركة الميزات بين المقاييس المختلفة وقت إعادة التثبيت ، ومستوى التخزين المؤقت الإضافي يتجنب إعادة حساب الميزات والإحصاءات كلما كان ذلك ممكنًا. تتيح الكفاءة العالية استخدام حشوة الشعلة في حلقة التدريب ، على سبيل المثال في نهاية كل فترة. اقرأ المزيد عن الكفاءة
التوسيع : تجاوز توليد الصور ثنائية الأبعاد أمرًا سهلاً بسبب النموذج العالي والتجريد للمقاييس من بيانات الإدخال والنماذج ومستخرجات الميزات. على سبيل المثال ، يمكن للمرء تبديل استخراج ميزة InceptionV3 لقبول أحجام المسح ثلاثية الأبعاد ، مثل المستخدمة في التصوير بالرنين المغناطيسي. اقرأ المزيد عن القابلية للتوسع
TLDR ؛ تقييم GAN سريع وموثوق في Pytorch
pip install torch-fidelityانظر أيضًا: تثبيت أحدث رمز جيثب
فيما يلي ثلاثة أمثلة لاستخدام حشوة الشعلة لتقييم المقاييس من سطر الأوامر. رؤية المزيد من الأمثلة في الوثائق.
انقسام تدريب CIFAR-10:
> fidelity --gpu 0 --isc --input1 cifar10-train
inception_score_mean: 11.23678
inception_score_std: 0.09514061 درجة بدء دليل الصور المخزنة في ~/images/ :
> fidelity --gpu 0 --isc --input1 ~ /images/ حساب فعال لـ ISC و PPL لـ input1 ، و fid ، kid ، prc بين نموذج توليدي مخزّن في ~/generator.onnx و cifar-10 تقسيم التدريب:
> 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 انظر أيضًا: أمثلة استخدام أخرى
عندما يتعلق الأمر بتتبع أداء النماذج التوليدية أثناء تدريبها ، فإن تقييم المقاييس بعد كل فترة تصبح باهظة الثمن بسبب أوقات الحساب الطويلة. تعالج torch_fidelity هذه المشكلة من خلال الاستفادة الكاملة من التخزين المؤقت لتجنب إعادة حساب الميزات المشتركة والإحصائيات لكل متطورة كلما كان ذلك ممكنًا. إن حساب جميع المقاييس لـ 50000 32x32 تم إنشاؤها و cifar10-train تستغرق 2 دقيقة فقط 26 ثانية على NVIDIA P100 GPU ، مقارنة بـ> 10 دقائق إذا استخدمت كودز الأصلي. وبالتالي ، فإن المقاييس الحاسوبية 20 مرة على مدار دورة التدريب بأكملها تجعل وقت التدريب العام لمدة ساعة واحدة فقط.
في المثال التالي ، افترض إعداد توليد الصور غير المشروط مع CIFAR-10 ، generator النموذج التوليدي ، والذي يأخذ ناقل الضوضاء العادي القياسي 128.
أولاً ، استيراد الوحدة النمطية:
import torch_fidelityأضف الأسطر التالية في نهاية تقييم الحقبة:
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 ,
)يمكن أن يسجل القاموس الناتج مع المقاييس المحسوبة مباشرة إلى Tensorboard أو Wandb أو وحدة التحكم:
print ( metrics_dict )الإخراج:
{
'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
}انظر أيضًا: مرجع API الكامل
الرجوع إلى SNGAN_CIFAR10.PY للحصول على مثال تدريب كامل.
تطور المولدات الثابتة في المثال:

يمكن تنزيل نقطة تفتيش مولد ناتجة عن تدريب المثال هنا.
يشير إلى أن أداة fidelity المستقلة لن تتوفر ما لم تتم إضافة المسار أعلاه إلى متغير بيئة المسار. إذا كان تعديله غير مرغوب فيه ، فلا يزال من الممكن استدعاء الأداة بواسطة مسارها الكامل: <SOMEPATH>/fidelity .
ينصح الاقتباس لتعزيز بروتوكول التقييم في الأعمال التي تعتمد على حشوة الشعلة. لضمان استنساخ عند الإشارة إلى هذا المستودع ، استخدم bibtex التالي:
@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}
}