الرؤية الحاسوبية2017متوسط11 دقيقة قراءة

دالة الخسارة البؤرية للكشف الكثيف عن الأجسام

Focal Loss for Dense Object Detection

Lin, T.-Y. · Goyal, P. · Girshick, R. · He, K. · Dollár, P. — ICCV

المشكلة

كواشف الأجسام أحادية المرحلة مثل SSD وYOLO سريعة لأنها تفحص شبكة كثيفة من المواقع المرشحة بتمريرة واحدة دون الحاجة إلى مرحلة اقتراح مسبقة. لكنها ظلّت دائماً متأخرة في الدقة عن الكواشف ثنائية المرحلة الأبطأ مثل Faster R-CNN. السبب؟ الصورة النموذجية تُنتج نحو 100,000 موقع مُرشَّح، منها حفنة فقط تحتوي أجساماً حقيقية. هذا الاختلال الحاد بين الأمامية والخلفية (قرابة 1:1000) يعني أن إشارة الخسارة تغرق في عشرات الآلاف من السلبيات السهلة — رُقَع الخلفية التي يصنّفها النموذج بالفعل بشكل صحيح، لكن خسائرها الصغيرة حين تتراكم تطغى على التدرُّجات القادمة من الأمثلة الصعبة النادرة.

الإسهام

البؤرية: تعديل بسيط على دالة الإنتروبيا المتقاطعة بإضافة (1pt)γ(1 - p_t)^\gamma. حين يكون النموذج واثقاً من تصنيفه (ptp_t مرتفع)، ينكمش هذا المعامل ويُقلّص الخسارة إلى قيمة قريبة من الصفر؛ وحين يتعثّر النموذج (ptp_t منخفض)، تبقى الخسارة كما هي تقريباً. هكذا يتراجع تأثير طوفان السلبيات السهلة تلقائياً ويتركّز على الأمثلة الصعبة ذات المعلومات المفيدة. مقترنةً اسمه RetinaNet — مبني على شبكة هرم السمات كعمود فقري مع شبكتين فرعيتين بسيطتين وتقدير إحداثيات الصندوق المحيط — سدّت الخسارة البؤرية فجوة الدقة: فأصبح RetinaNet يضاهي سرعة الكواشف ثنائية المرحلة ويتفوّق عليها في الدقة لأول مرة.

الأثر

أثبتت الخسارة البؤرية أن فجوة الدقة بين الكواشف أحادية وثنائية المرحلة لم تكن مشكلة معمارية — بل مشكلة تدريب. انتشرت الفكرة إلى ما هو أبعد بكثير من كشف الأجسام: أصبحت الخسارة البؤرية معياراً في التصوير الطبي ومعالجة اللغة الطبيعية مع تصنيفات غير متوازنة ومهام التنبؤ الكثيف وأي سياق تطغى فيه الأمثلة السهلة على التدريب. كما رسّخت بنية RetinaNet استخدام شبكة هرم السمات كعمود فقري شامل لمهام التنبؤ الكثيف.

تخيّل فريق إنقاذ يمسح مدينة بعد زلزال. 99% من المباني سليمة — يكفي أن تنظر إليها لتعرف ذلك. لكن الفريق يُصرّ على تعبئة تقرير تفصيلي لكل مبنى سليم، وحين يصل أخيراً إلى المباني المنهارة يكون قد أنهك نفسه ولم يعد قادراً على تفحّصها كما ينبغي.

بروتوكول جديد يقول: «المبنى السليم بوضوح؟ تجاوزه فوراً. وفّر كل طاقتك للمباني التي تحتاج تقييماً حقيقياً.»

النتيجة: الفريق نفسه والمعدّات نفسها، لكنه الآن يعثر على كل ناجٍ — لأنه كفّ عن هدر الجهد على ما هو واضح أصلاً.

المشكلة: السلبيات السهلة تُغرق الإشارة

فكرة تقوم على فحص آلاف المواقع المرشحة في الصورة بحثاً عن أجسام. في مثل Faster R-CNN، تمرّ العملية بمرحلتين: أولاً تأخذ شبكة اقتراح المناطق نحو 100 ألف خام وتغربلها إلى نحو 2,000 مرشح واعد، ثم يأتي المصنّف ليفحص هذه الألفين فقط. بهذا الأسلوب تُستبعد الغالبية العظمى من الخلفية قبل أن تصل إلى التدريب أصلاً، فتُحلّ مشكلة بشكل طبيعي.

الكواشف أحادية المرحلة تتخطّى هذا الترشيح وتصنّف كل المراسي الـ 100 ألف دفعة واحدة — وهذا ما يجعلها أسرع، لكنه يعني أيضاً أن تُحسب على كل هذه المراسي، ونحو 99.9% منها خلفية سهلة. المشكلة أن لا تفرّق بين مثال سهل وآخر صعب: حتى المِرساة التي يصنّفها النموذج بثقة 99% تُولّد خسارة صغيرة لكنها ليست صفراً. خذ هذه الخسارة الطفيفة واضربها في 99,000 سلبية سهلة، وستجد أنها تطغى تماماً على الإشارة الآتية من المئة مِرساة التي تحتوي فعلاً على أجسام.

افتح في المختبر
شاهد كيف تتوزع 100 ألف مِرساة: حفنة ضئيلة تحتوي أجساماً، والباقي خلفية سهلة تُغرق الخسارة.
تستيقظ التجربة عند وصولك…

نقطة الانطلاق: الإنتروبيا المتقاطعة ونقطة ضعفها

لنبدأ من الإنتروبيا المتقاطعة القياسية في التصنيف الثنائي:

CE(p,y)=log(pt)CE(p, y) = -\log(p_t)

هنا ptp_t يمثّل تقدير النموذج لاحتمال الفئة الصحيحة: أي pt=pp_t = p حين يكون التصنيف الحقيقي y=1y = 1، و pt=1pp_t = 1 - p في الحالة المعاكسة.

أين المشكلة؟ حتى لو كان النموذج واثقاً من إجابته (لنقل pt=0.9p_t = 0.9، أي مثال سهل صنّفه بشكل صحيح)، تظل الخسارة log(0.9)=0.105-\log(0.9) = 0.105 — رقم ليس بالصفر. مثال واحد كهذا لا يضر، لكن حين يتكرر 99,000 مرة تتراكم الخسارة إلى ما يقارب 10,000، وهو رقم يطغى تماماً على إشارة بضع مئات من الأمثلة الإيجابية الصعبة.

الحل التقليدي هو موازنة α: تعطي الفئة النادرة (الأمامية) وزناً أعلى مثل α = 0.75، والخلفية الشائعة وزناً أقل كـ 0.25. هذا يساعد، لكنه يعالج حجم مساهمة كل فئة فقط — ولا يميّز بين المثال السهل والصعب داخل الفئة نفسها.

الخسارة البؤرية: اخفض صوت الأمثلة السهلة

الحل بسيط ولكنه ذكي: اضرب الإنتروبيا المتقاطعة في معامل تعديلي يتلاشى تلقائياً كلما زادت ثقة النموذج. النتيجة أن الأمثلة السهلة تكتم نفسها بنفسها، بينما تبقى الأمثلة الصعبة مسموعة بوضوح.

FL(pt)=αt(1pt)γlog(pt)FL(p_t) = -\alpha_t (1 - p_t)^{\gamma} \log(p_t)
الخسارة البؤرية (الصيغة الموزونة بـ α)الحد (1pt)γ(1 - p_t)^{\gamma} هو المعامل التعديلي وهو جوهر الفكرة. حين يكون النموذج واثقاً (ptp_t قريب من 1) ينكمش هذا الحد نحو الصفر فتتلاشى الخسارة عملياً. أما حين يتعثّر النموذج (ptp_t صغير) فيبقى الحد قريباً من 1 وتظل الخسارة كما هي تقريباً. المعامل γ يتحكم في حدّة هذا التمييز: كلما زاد γ ازداد إسكات الأمثلة السهلة. عملياً، القيمة γ = 2 أعطت أفضل النتائج.

لنثبّت الفكرة بأرقام ملموسة. خذ سلبية سهلة حيث pt=0.9p_t = 0.9 مع γ = 2:

  • الإنتروبيا المتقاطعة: log(0.9)=0.105-\log(0.9) = 0.105
  • المعامل التعديلي: (10.9)2=0.01(1 - 0.9)^2 = 0.01
  • الخسارة البؤرية: 0.01×0.105=0.001050.01 \times 0.105 = 0.00105أصغر بمئة مرة

قارن ذلك بمثال صعب حيث pt=0.1p_t = 0.1:

  • الإنتروبيا المتقاطعة: log(0.1)=2.30-\log(0.1) = 2.30
  • المعامل التعديلي: (10.1)2=0.81(1 - 0.1)^2 = 0.81
  • الخسارة البؤرية: 0.81×2.30=1.860.81 \times 2.30 = 1.86 — بالكاد تأثّرت

لاحظ الفرق: المثال السهل انخفضت مساهمته بمئة ضعف، بينما المثال الصعب بقي شبه كامل الخسارة. هذا هو كل سرّ الخسارة البؤرية: حدٌّ ضربيٌّ واحد يحوّل الإنتروبيا المتقاطعة من دالة تسمع كل الأصوات بالتساوي إلى دالة تركّز انتباهها على الحالات التي يحتاج فيها النموذج للتعلّم فعلاً.

افتح في المختبر
حرّك γ من 0 إلى 5 ولاحظ تأثيرها على منحنى الخسارة. عند γ = 0 ترى الإنتروبيا المتقاطعة القياسية؛ وعند γ = 2 تختفي مساهمة الأمثلة السهلة تقريباً.
تستيقظ التجربة عند وصولك…

من أين تأتي الخسارة؟

من أكثر التحليلات إقناعاً في الورقة (الشكل 4) هو رسم التوزيع التراكمي للخسارة عبر أمثلة الأمامية والخلفية بعد التدريب.

مع الإنتروبيا المتقاطعة القياسية (γ = 0)، تجد أن الخسارة موزّعة بشكل شبه منتظم — طوفان الخلفية السهلة يُساهم بقدر يكاد يعادل مساهمة الحالات الصعبة. لكن مع الخسارة البؤرية (γ = 2) تتغيّر الصورة كلياً: في أمثلة الخلفية، تتركّز الخسارة تقريباً كلها في أصعب نسبة قليلة، بينما الـ 90% الأسهل لا تكاد تُساهم بشيء يُذكر.

الجميل أن أمثلة الأمامية لا تتأثر تقريباً — الخسارة البؤرية لا تمسّ الحالات الصعبة التي يحتاج النموذج للتعلّم منها، بل تكتفي بإسكات ضوضاء الخلفية.

افتح في المختبر
غيّر قيمة γ ولاحظ كيف تُركّز الخسارة البؤرية خسارة الخلفية في الأمثلة الصعبة وحدها، بينما تبقى خسارة الأمامية شبه ثابتة.
تستيقظ التجربة عند وصولك…

RetinaNet: كاشف أحادي المرحلة نظيف التصميم

لإثبات أن الخسارة البؤرية — وليس البنية المعمارية — هي ما كان ينقص، صمّم المؤلفون كاشفاً بسيطاً عمداً. يتألف RetinaNet من ثلاثة مكوّنات:

1. : (FPN) — تُبنى فوق ResNet لتُنتج هرماً من خرائط السمات بمقاييس متعددة. المستويات الدنيا (P3) تتمتّع بدقة مكانية عالية تناسب الأجسام الصغيرة، بينما المستويات العليا (P7) ذات دقة أقل لكن حقل استقبالها واسع يلائم الأجسام الكبيرة. تدمج التفاصيل المكانية الدقيقة من المسار الصاعد مع المعلومات الدلالية الغنية من المسار الهابط.

2. شبكة فرعية للتصنيف — شبكة التفافية صغيرة (4 طبقات + تفعيل سيغمويد) تتصل بكل مستوى من مستويات الهرم. عند كل موضع مكاني ولكل مِرساة (A = 9)، تتنبأ بـ K احتمال فئة. تتشارك المعاملات نفسها عبر كل المستويات.

3. شبكة فرعية لتقدير — بنية مماثلة لكنها تُخرج أربع قيم إزاحة (dx, dy, dw, dh) لكل مِرساة، تصف كيف يُزاح الصندوق ويُعاد تحجيمه ليحيط بالجسم المكتشف.

افتح في المختبر
اضغط على أي مكوّن لتتبّع مسار البيانات عبر العمود الفقري FPN والشبكتين الفرعيتين.
تستيقظ التجربة عند وصولك…

المراسي: تبليط فضاء البحث

عند كل موضع مكاني في كل مستوى من شبكة هرم السمات، يضع RetinaNet تسع : ثلاث نسب أبعاد (1:2, 1:1, 2:1) × ثلاثة مقاييس (202^0, 21/32^{1/3}, 22/32^{2/3}). الفكرة أن هذه المراسي تعمل كقوالب مرجعية، وشبكة تقدير الصندوق لا تتنبأ بإحداثيات مطلقة بل بتعديلات صغيرة على كل مِرساة.

أما تعيين التسميات فيعتمد على (IoU): المراسي التي IoU بينها وبين صندوق ≥ 0.5 تُعدّ إيجابية، وتلك التي IoU < 0.4 تُعدّ سلبية، والباقي يُهمل أثناء التدريب. الحصيلة: نحو 100 ألف مِرساة لكل صورة، منها في العادة 10 إلى 100 فقط إيجابية.

هناك تفصيل تدريبي بالغ الأهمية: الطبقة الأخيرة في شبكة التصنيف تُهيَّأ بـ قيمته b=log((1π)/π)b = -\log((1-\pi)/\pi) حيث π = 0.01، فتبدأ كل مِرساة باحتمال 1% فقط لكونها أمامية. لماذا هذا مهم؟ لأن بدونه تبدأ كل المراسي الـ 100 ألف بتوقّع 50% أمامية، فتتولّد خسارة أوّلية ضخمة تُزعزع التدريب من أوّل خطوة.

أحادي المرحلة مقابل ثنائي المرحلة: ما الذي تغيّر

قبل هذه الورقة، كان التفسير الشائع لتراجع الكواشف أحادية المرحلة في الدقة: «المشكلة في البنية المعمارية — الكواشف ثنائية المرحلة تملك شبكة اقتراح مناطق توجّه المصنّف إلى أين ينظر، وهذا ما ينقص الكواشف أحادية المرحلة.»

هذه الورقة تطرح رؤية مختلفة تماماً: الفجوة ليست في أين ينظر النموذج — بل في كيف يُدرَّب. الكواشف ثنائية المرحلة تحقّق توازن الفئات بشكل ضمني: مرحلة الاقتراح تتخلّص من 99% من السلبيات السهلة، والمرحلة الثانية تأخذ عيّنات بنسبة 1:3 بين الإيجابيات والسلبيات. الخسارة البؤرية تحقّق التوازن نفسه لكن بشكل صريح، من خلال دالة الخسارة نفسها.

والأرقام تتكلّم: RetinaNet مع الخسارة البؤرية (γ = 2, α = 0.25) حقّق 36.0 AP على COCO minival — متقدّم بفارق واضح على أفضل إعداد لـ (OHEM) عند 32.8 AP، ومكافئ لـ Faster R-CNN مع FPN عند 36.2 AP. أسلوب تدريب أبسط تفوّق على تعقيد معماري أكبر.

افتح في المختبر
السرعة مقابل الدقة لـ RetinaNet مقارنةً بكواشف أحادية وثنائية المرحلة على COCO. RetinaNet يُشكّل الغلاف العلوي.
تستيقظ التجربة عند وصولك…

الخسارة البؤرية مقابل انتقاء السلبيات الصعبة

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

مشكلتا هذا الأسلوب واضحتان: أولاً، يتخلّص من الأمثلة السهلة كلياً فيضيع أي إشارة تعلّم قد تحملها مهما كانت ضئيلة. ثانياً، يُدخل إضافية — عتبة NMS وحجم الدفعة — تحتاج ضبطاً دقيقاً. جرّبت الورقة إعدادات كثيرة لـ OHEM (أحجام دفعات 128 و256 و512، عتبات NMS عند 0.5 و0.7، مع نسبة 1:3 أو بدونها) وأفضل نتيجة كانت 32.8 AP. في المقابل، الخسارة البؤرية حققت 36.0 AP بدون أي انتقاء، وبدون NMS على بيانات التدريب، وبمعاملَين فائقَين فقط (γ وα) أثبتا استقرارهما عبر نطاق واسع.

الفرق جوهري في الفلسفة: OHEM يختار ما يتدرّب عليه ويرمي الباقي. الخسارة البؤرية تتدرّب على كل شيء لكنها تُصغي أكثر لما يستحق الإصغاء.

الفكرة ذاتها في شيفرة برمجية

الخسارة البؤرية — تطبيق كاملpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import torch
import torch.nn.functional as F

def focal_loss(logits, targets, gamma=2.0, alpha=0.25):
    """
    logits:  (N,) مخرجات النموذج الخام قبل السيغمويد
    targets: (N,) تسميات ثنائية {0, 1}
    """
    p = torch.sigmoid(logits)                    # الاحتمال المتوقع
    ce = F.binary_cross_entropy_with_logits(      # إنتروبيا متقاطعة مستقرة عددياً
        logits, targets, reduction='none'
    )
    p_t = p * targets + (1 - p) * (1 - targets)  # احتمال الفئة الصحيحة

    # السر: هذا المعامل → 0 للأمثلة السهلة، ≈ 1 للصعبة
    modulating_factor = (1 - p_t) ** gamma

    # موازنة α: وزن أعلى قليلاً لفئة الأمامية النادرة
    alpha_t = alpha * targets + (1 - alpha) * (1 - targets)

    loss = alpha_t * modulating_factor * ce       # الخسارة البؤرية لكل مثال
    return loss.sum()                             # مجموع (لا متوسط) — وفق اتفاقية الورقة

# هذا كل شيء. الإسهام بأكمله هو حدّ ضربي واحد: (1 - p_t)^γ
# الإنتروبيا المتقاطعة القياسية = focal_loss(..., gamma=0, alpha=0.5)

لماذا كانت هذه الورقة مفصلية

  1. 2016

    SSD — سريع لكن أقل دقة

    قدّم Liu وآخرون كاشف الصندوق متعدد المقاييس أحادي المرحلة (SSD) — كاشف سريع يستخدم خرائط سمات متعددة المقاييس. سريع في الاستدلال لكنه يتأخر 10–20% في AP عن الأساليب ثنائية المرحلة بسبب اختلال التوازن بين الفئات أثناء التدريب.

  2. 2017

    FPN — دمج السمات متعدد المقاييس

    قدّم Lin وآخرون شبكة هرم السمات — بنية ذات مسار هابط ووصلات جانبية تبني سمات غنية متعددة المقاييس من أي عمود فقري. أصبحت العمود الفقري المعياري لكواشف المرحلة الواحدة والمرحلتين.

  3. 2017

    RetinaNet + الخسارة البؤرية

    هذه الورقة. الخسارة البؤرية تحلّ مشكلة اختلال التوازن من خلال تصميم الخسارة. RetinaNet، كاشف أحادي المرحلة بسيط مبني على FPN، يتفوّق على جميع الكواشف ثنائية المرحلة لأول مرة، محققاً 39.1 AP على COCO test-dev.

  4. 2020

    DETR — كشف شامل بالمحوِّلات

    استبدل Carion وآخرون المراسي وكبت اللاقصوى بمُرمِّز ومفكِّك ترميز محوِّلي ومطابقة هنغارية. ألغى المكوّنات المصمَّمة يدوياً تماماً، لكن الخسارة البؤرية تظل مستخدمة في متغيّرات DETR الكثيرة لمعالجة الاختلال المتبقي.

  5. 2024

    الخسارة البؤرية في كل مكان

    أصبحت الخسارة البؤرية أداة معيارية تتجاوز كشف الأجسام بكثير — التصوير الطبي (ورم مقابل نسيج سليم)، معالجة اللغة الطبيعية (تصنيف بتسميات نادرة)، التنبؤ الكثيف، وأي مهمة فيها اختلال حاد في التسميات.

المرجعLin, Goyal, Girshick, He, Dollár. Focal Loss for Dense Object Detection. ICCV, 2017.

مصطلحات هذه الورقة