چیتشیت
ارزیابی مدلهای زایشی
Evaluating Generative Models
FID، امتیاز CLIP، CMMD، Elo، WER، MOS، SECS، EER و FAD. کد، اندازهی نمونهها و نحوهی خطای هر معیار.
فهرست مطالب
FID و امتیاز CLIP
معماریگزارش ارزیابی محیط عملیاتی
گامبهگام- کیفیت نمونهFID روی 10 تا 30 هزار نمونه در برابر مجموعهی واقعی نگهداشتهشده.
- انطباقامتیاز CLIP یا CMMD روی همان نمونهها در برابر پرامپتهایشان.
- ترجیحنرخ برد در یک آرنای کور در برابر مدل قبلی.
- ممیزی خطاهانشانهگذاری 50 خروجی تصادفی از نظر دستها، متن و تعداد اشیاء.
- سیدهااجرای حداقل 3 سید تصادفی. گزارش انحراف معیار.
- به ازای هر PRمحاسبهی FID و امتیاز CLIP روی زیرمجموعهی 500 نمونهای، حدود 30 دقیقه.
- شبانهاجرای کامل FID دههزار نمونه، HPSv2 و Elo.
فرمولها
مفهومها- FID
- $\lVert \mu_r - \mu_g \rVert^2 + \mathrm{Tr}(\Sigma_r + \Sigma_g - 2 (\Sigma_r \Sigma_g)^{0.5})$
- امتیاز CLIP
- شباهت کسینوسی میان
CLIP_image(x_gen)وCLIP_text(prompt). - امید ریاضی Elo
- $E_a = 1 / (1 + 10^{(r_b - r_a)/400})$
- بهروزرسانی Elo
- $r_a \leftarrow r_a + k (s_a - E_a)$. رتبهی B به همان میزان در جهت مخالف تغییر میکند.
- WER
- $(S + D + I) / N$ پس از نرمالسازی. CER از نویسهها استفاده میکند.
- DER
- (FA + Miss + Confusion) تقسیم بر کل زمان گوینده.
- EER
- آستانهای که در آن FAR برابر با FRR است.
- نرخ ماسک Show-o
- $\cos\left(\frac{\pi t}{2T}\right)$، از 1.0 در گام 0 تا 0 در گام T.
معیارهای تصویر در قالب کد
کدpython
mu_r = mean_vec(real_features)
mu_g = mean_vec(gen_features)
cov_r = covariance(real_features, mu_r)
mean_sq = sum((a - b) ** 2 for a, b in zip(mu_r, mu_g))
sqrt_prod = jacobi_sqrt(prod) # جذر ماتریسی
return mean_sq + trace(cov_r) + trace(cov_g) - 2 * trace(sqrt_prod)
score = clip_like(image, prompt) # کسینوسی، بیشتر بهتر است
expected_a = 1 / (1 + 10 ** ((r_b - r_a) / 400))
actual_a = 1.0 if winner == "a" else 0.0
delta = k * (actual_a - expected_a) # k=32
return r_a + delta, r_b - delta
معیارهای صوتی در قالب کد
کدpython
transform = Compose([ToLowerCase(), RemovePunctuation(), Strip()])
score = wer(truth="<ref>", hypothesis="<hyp>",
truth_transform=transform, hypothesis_transform=transform)
sv = EncoderClassifier.from_hparams("speechbrain/spkrec-ecapa-voxceleb")
emb_ref = sv.encode_batch(load_wav("reference.wav"))
emb_clone = sv.encode_batch(load_wav("cloned.wav"))
secs = torch.nn.functional.cosine_similarity(emb_ref, emb_clone, dim=-1).item()
fad = FrechetAudioDistance()
score = fad.get_fad_score("generated_folder/", "reference_folder/")
توابع معیار
کار و کد| وظیفه | کد |
|---|---|
| FID تصویر | fid(real_features, gen_features) |
| Elo از یک جفت | elo_update(r_a, r_b, winner, k=32) |
| نرخ خطای کلمه | wer(ref, hyp) |
| نرخ خطای نویسه | cer(ref, hyp) |
| نرخ خطای برابر | eer_from_scores(same, diff) |
| فاصلهی مشابه FAD | embedding_fad_like(real_embeds, fake_embeds) |
| دقت چندگزینهای | mmau_accuracy(predictions, golds) |
| WER بازگشتپذیری TTS | ttr_wer(tts_model, asr_model, texts) |
مقایسهی معیارهای تصویر در کنار هم
مقایسه| عامل | FID | امتیاز CLIP | CMMD | ترجیح انسانی |
|---|---|---|---|---|
| سنجش | کیفیت نمونه | انطباق با پرامپت | کیفیت، تفاوتهای ظریف | ترجیح کلی |
| ویژگیها | Inception-v3، 2048 بُعدی | تصویر و متن CLIP | CLIP | انسانها یا داور LLM |
| حداقل نمونه | 10 هزار در برابر دادهی واقعی نگهداشتهشده | 30 هزار | 5 هزار | 200 جفت کور |
| نقطهضعف | N کوچک، دامنههای دور از ImageNet | ترکیببندی ضعیف، پرامپتهای کوتاه | پوشش داده نشده | واریانس داور، انتخاب پرامپت |
هزینهی نمونهبرداری مدلهای یکپارچه
مقایسه| عامل | Chameleon, Emu3 | Transfusion | Show-o |
|---|---|---|---|
| رمزگشایی | توکنهای خودبازگشتی | دیفیوژن پیوسته | دیفیوژن گسستهی ماسکشده |
| گامها | 1024 تا 4096 گذر | حدود 20 | حدود 16 |
| هر گام | یک توکن | یک گذر کامل ترنسفورمر | نهاییشدن (commit) برترین K توکن |
ارقام صوتی برای دستیابی و رکوردزنی
مفهومها- WER
- زیر 5% معادل عملکرد انسانی در گفتار روخوانیشده است.
- UTMOS
- همبستگی حدود 0.9 با MOS انسانی. مدل F5-TTS امتیاز 3.95، حقیقت پایه 4.08.
- SECS
- بالای 0.75 یک شبیهسازی قابل تشخیص است.
- CLAP
- بالای 0.3 همترازی معقول متن و صدا است.
- EER
- مدل ECAPA روی VoxCeleb1-O مقدار 0.87% میدهد.
- FAD
- مدل MusicGen-small روی MusicCaps برابر با 4.5. کمتر بهتر است.
- MMAU-Pro
- شانس تصادفی روی گزینهی 4-حالته 25% است.
- ورود ناگهانی به کلام
- هدف زیر 150 میلیثانیه.
پیشفرضها
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
Elo `k` | 32 | elo_update |
Elo start rating | 1000 | هر دو مدل |
FID samples | 10k | FID با N کم غیرقابلاعتماد است |
CLIP score samples | 30k | میانگینگیری به یک اسکالر |
Inception input | 299×299 | تطبیق وضوحها |
MOS listeners | 20+ | 100+ نمونه به ازای هر مدل |
Show-o steps `T` | 8 | برنامهی زمانبندی کسینوسی |
Keep ratio floor | 0.15 | keep_ratio به ازای هر گام |
عیبیابی
عیبیابیFID پایین بر اثر نمونههای کم
- علت
- N کوچک کوواریانس را کمتر برآورد میکند
- راهحل
- استفاده از N برابر با 10 هزار یا بیشتر
بیمعنی بودن FID روی چهرهها یا هنر
- علت
- آموزش Inception روی ImageNet
- راهحل
- استخراجکنندهی دامنه، مثلاً FD-DINO
تغییر FID در وضوحهای مختلف
- علت
- تغییر اندازه به 299×299
- راهحل
- مقایسه در وضوح یکسان
افزایش امتیاز CLIP بدون بهبود تصاویر
- علت
- «کیفیت بالا، 4k، شاهکار»
- راهحل
- بررسی تطابق و اشباع
بیمعنی بودن Elo
- علت
- مدلها پرامپتهای بنچمارک را دیدهاند
- راهحل
- استفاده از مجموعهپرامپتهای نگهداشتهشده
WER پنج درصدی که خطای 30 درصدی لهجهها را پنهان میکند
- علت
- WER تجمیعی
- راهحل
- گزارش بر اساس بخشهای جمعیتشناختی
UTMOS نامناسب روی صدای شبیهسازیشده
- علت
- آموزش روی گفتار شفاف و بدون نویز
- راهحل
- استفاده از پنل MOS تخصصی همان دامنه
غیرقابلمقایسه بودن FAD
- علت
- مجموعههای مرجع متفاوت
- راهحل
- مجموعهی مرجع یکسان برای تمام مدلها
قوانین
نکتهها- نرمالسازی متن پیش از محاسبهی WER. قانون نرمالسازی را گزارش کنید.
- گزارش توزیعها. P50/P95/P99 برای تاخیر، به ازای هر کلاس و هر دسته.
- اجرای یک بنچمارک عمومی و یک مجموعهی نگهداشتهشدهی درونسازمانی.
- کشکردن ویژگیهای واقعی یکبار در قالب فایل
.npz. - تولید ارزیابی دستهای با
num_images_per_prompt=8. - استفاده از سه معیار همراستا به همراه بازبینی کیفی.
پرسشها
پرسش و پاسخ- چرا CMMD؟
- از ویژگیهای CLIP و MMD استفاده میکند. سوگیری کمتری دارد و فرضیهی گوسی ندارد.
- SECS بالا، MOS پایین؟
- طنین صدا درست است اما صدا غیرطبیعی است.
- EER یا minDCF؟
- معیار minDCF برای محیط عملیاتی مناسبتر است؛ هزینه را در نقطهی عملیاتی وزندهی میکند.
- هزینهی 10 هزار نمونهی SDXL چقدر است؟
- حدود 11 ساعت روی یک L4 بهصورت یک درخواست در هر لحظه.
- چرا Show-o عملیات inpaint را رایگان انجام میدهد؟
- آموزش آن بر پایهی پیشبینی توکنهای ماسکشده است.