انتقل إلى المحتوى الرئيسي

الوحدة 8 — مقاييس الجودة: FID وInception Score

نموذجان توليديّان أنتجا صورًا مختلفة على CelebA. أيّهما أفضل؟ السؤال يبدو بديهيًّا، لكنّ جوابه يتطلّب مقاييس قادرة على أن تُعطي حكمًا رقميًّا. FID هو المعيار الحاليّ في الأدبيّات، لكنّه ليس بريئًا: يمكن التلاعب به، ولا يقيس كلّ شيء. هذه الوحدة تعرض ما يقيس فعلًا، وما يُخفيه.

Inception Score: الفكرة الأولى وحدودها

Inception Score (IS) اقترحه Salimans وآخرون في 2016 مع Improved GAN. الفكرة: نمرّر الصور المولّدة على شبكة Inception V3 المدرَّبة على ImageNet، ونحصل على توزيع احتمالات على 1000 صنف لكلّ صورة.

نقيس شيئين معًا:

  • الوضوح: لكلّ صورة يجب أن يكون التوزيع p(yx)p(y \mid x) مركّزًا على صنف واحد (صورة قطّة تُعطي احتمالًا مرتفعًا لـ«قطّة»).
  • التنوّع: التوزيع المهمَّش p(y)=p(yx)p(x)dxp(y) = \int p(y \mid x) p(x) dx يجب أن يكون موزّعًا على كثير من الأصناف.

الصيغة تجمعهما في تباعد KL:

IS=exp ⁣(ExKL ⁣(p(yx)p(y)))\mathrm{IS} = \exp\!\left(\mathbb{E}_{x}\,\mathrm{KL}\!\big(p(y \mid x)\,\|\,p(y)\big)\right)

قيمة أعلى تعني نموذجًا أفضل. مقياس ذكيّ، لكنّ عيوبه ثقيلة:

  • لا يستعمل مرجعًا حقيقيًّا. نموذج يُنتج ألف صورة قطط مختلفة نظيفة تمامًا يعطي درجة عالية، حتّى لو لم يشبه شيء منها ما في مجموعة التدريب.
  • يعتمد على أصناف ImageNet. صور بلا صنف صريح (وجوه، مشاهد داخليّة، فنّ تجريديّ) تُقيَّم بشكل سيّئ لأنّ التوزيع الشرطيّ لا يتركّز.
  • يمكن التلاعب به بسهولة: تدريب نموذج على مجموعة بيانات تُحاكي بالضبط بنية ImageNet يرفع IS دون أن يعكس جودة حقيقيّة.

هذه العيوب دفعت إلى مقياس أكثر متانة.

FID: مقياس المسافة بين توزيعين في فضاء Inception

FID (Fréchet Inception Distance) اقترحه Heusel وآخرون في 2017. يقيس مسافة بين توزيع الصور المولّدة وتوزيع الصور الحقيقيّة، لكن لا في فضاء البكسل — بل في فضاء المتغيّرات لطبقة متوسّطة من Inception V3 (2048 قيمة لكلّ صورة).

في هذا الفضاء، نحسب لكلّ من التوزيعين المتوسّط μ\mu ومصفوفة التباين Σ\Sigma. FID مسافة Fréchet بين توزيعين طبيعيّين متعدّدَي المتغيّرات بهذين المعاملَين:

FID=μrμg22+tr ⁣(Σr+Σg2(ΣrΣg)1/2)\mathrm{FID} = \|\mu_{\text{r}} - \mu_{\text{g}}\|_2^2 + \mathrm{tr}\!\left(\Sigma_{\text{r}} + \Sigma_{\text{g}} - 2(\Sigma_{\text{r}} \Sigma_{\text{g}})^{1/2}\right)

قيمة أدنى تعني نموذجًا أفضل. على CelebA بحجم 64 في 64، DCGAN جيّد يعطي FID حول 40، وStyleGAN حول 3، ونموذج انتشار حديث حول 2.

# على مستوى المفهوم، بمكتبة torch-fidelity أو clean-fid
from cleanfid import fid

score = fid.compute_fid(
fdir1="images_reelles/",
fdir2="images_generees/",
model_name="inception_v3",
)
print(f"FID = {score:.2f}")

لماذا FID أفضل من IS

FID يحلّ العيوب الرئيسية لـIS:

  • يقارن مع مرجع حقيقيّ: التوزيع المولَّد يجب أن يقترب من الحقيقيّ فعلًا، لا مجرّد أن يكون واضحًا ومتنوّعًا.
  • حسّاس لجودة كلّ صورة وتنوّع المجموعة معًا: إذا كرّر النموذج نفس الصورة، Σg\Sigma_g ستكون صغيرة والمسافة عن Σr\Sigma_r ستكبر. إذا كانت الصور مشوَّهة، μg\mu_g سيبتعد عن μr\mu_r.
  • مستقلّ عن أصناف ImageNet مباشرة: يعمل بالتساوي على وجوه أو مشاهد أو فنّ.

هذه الأسباب جعلت FID المقياس القياسيّ في كلّ ورقة توليدية جدّيّة منذ 2018.

الفخاخ: FID ليس محايدًا

رغم صحّته النظريّة، FID عليه أن يُقرأ بحذر:

  • يعتمد على حجم العيّنة. FID محسوب على 5 آلاف صورة أعلى بكثير من نفس النموذج محسوب على 50 ألفًا. لمقارنة نموذجين، يجب استعمال العدد نفسه، والأفضل 50 ألفًا لتقلّ الضوضاء.
  • يعتمد على معالجة الصور. تغيير طريقة إعادة الحجم (bicubic أو bilinear) أو التسوية يُنتج فوارق درجة أو درجتين. مكتبة clean-fid تُطبّق معالجة موحّدة تتفادى هذه المشكلة، وينبغي استعمالها.
  • يفضّل النماذج التي «تُشبه» ImageNet. Inception V3 مدرَّبة على ImageNet، وتمتلك تحيّزًا نحو ما يُشبه صوره. نموذج يُنتج فنًّا تجريديًّا رفيعًا قد يحصل على FID رديء رغم جودته الحقيقيّة.
  • قابل للتلاعب. تُدرَّب بعض النماذج مباشرة على تقليل FID فتُنتج صورًا تخدع Inception لكن تبدو مشوّهة للإنسان. المسألة معروفة وموثَّقة.
FID لا يقيس التنوّع بشكل مباشر

هنا سوء فهم شائع. FID يحاول الإشارة إلى انهيار الأنماط عبر مصفوفة التباين، لكنّه يفشل في حالات كثيرة. نموذج يُنتج 10 صور مختلفة لوجوه، مكرّرة 5 آلاف مرّة، قد يعطي FID أفضل من نموذج يُنتج 50 ألف وجه فريد بجودة أقلّ قليلًا. الحلّ: قياس الدقّة والاستدعاء التوليديّ معًا، وسنعرّفهما تحت. لا تعتمد على FID وحده أبدًا في تقرير أنّ نموذجًا «أفضل».

الدقّة والاستدعاء التوليديّ

Kynkäänniemi وآخرون في 2019 اقترحوا مقياسًا فاصلًا: الدقّة والاستدعاء في فضاء Inception.

  • الدقّة (Precision): نسبة الصور المولَّدة التي تقع «داخل» الغلاف الطوبولوجيّ للصور الحقيقيّة. تقيس جودة كلّ صورة.
  • الاستدعاء (Recall): نسبة الصور الحقيقيّة التي «يمكن الوصول إليها» من الصور المولَّدة. يقيس تنوّع المولّد وقدرته على تغطية التوزيع.

نموذج انهار على 10 صور: دقّته عالية (كلّها معقولة)، استدعاؤه منخفض (فاته 99% من التنوّع). نموذج يُنتج فوضى متنوّعة: استدعاؤه عالٍ (يغطّي)، دقّته منخفضة (كلّ صورة سيّئة).

هذه المقاييس تفصل ما يخلطه FID، وينبغي الإبلاغ عنها في كلّ مقارنة جدّيّة.

التقييم البشريّ: المرجع الأخير

مهما تعقّدت المقاييس الآليّة، تبقى للحكم البشريّ أهمّية لا تُعوَّض. الدراسات المقارنة الزوجيّة تعرض على المُقيِّم صورتين (واحدة من النموذج A، أخرى من B) ويختار الأفضل. نستخلص معدّل الفوز لكلّ نموذج على مئات من المُقيِّمين.

في بعض المهمّات (مثل توليد نصّ لصورة)، التقييم البشريّ هو الوحيد الذي يعكس ما يهمّ فعلًا: هل الصورة تحترم التعليمات؟ هل هي جميلة؟ هل تبدو طبيعيّة؟ FID لا يجيب عن أيّ من هذه الأسئلة مباشرةً.

الثمن مرتفع (عشرات الساعات البشريّة لدراسة واحدة)، ولذلك يُقتصر عليه عند اتّخاذ قرار عمليّ (نشر نموذج، اختيار بين معماريّتين لمنتج). أمّا للتطوّر اليوميّ فتبقى المقاييس الآليّة الأداة العمليّة.

في الخلاصة

  • Inception Score يقيس الوضوح والتنوّع دون مرجع حقيقيّ؛ محدود لأنّه يعتمد على أصناف ImageNet ولا يقارن مع البيانات.
  • FID المعيار الحاليّ: مسافة Fréchet بين متوسّط وتباين متغيّرات Inception على الصور المولّدة والحقيقيّة؛ قيمة أدنى أفضل.
  • FID حسّاس للحجم والمعالجة، يفضّل النماذج القريبة من ImageNet، وقابل للتلاعب؛ ينبغي استعماله بحذر وموحَّدًا (مكتبة clean-fid).
  • الدقّة والاستدعاء التوليديّ يفصلان جودة كلّ صورة عن تغطية التوزيع؛ ينبغي الإبلاغ عنهما مع FID، مع تقييم بشريّ عند القرارات المهمّة.

الوحدة التالية تتوسّع خارج الصور: كيف تعمل النماذج التوليدية على النصّ والصوت، وأيّ أسرة (انتشار أم انحداريّة) تُفضَّل حسب المهمّة.