Ultralytics YOLO27: انضم إلى قائمة الانتظار.
Get Started
أساسيات الرؤية الحاسوبية·اقرأ المقاييس·الدرس 9/10
الدرسمبتدئ

قراءة مقاييس الكشف بنزاهة

أجرِ التحقق، واقرأ الدقة والاستدعاء وmAP50-95 وAP لكل فئة ومصفوفة الالتباس معًا، واختر عتبة النشر استنادًا إلى هدف.

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

النتيجة

أجرِ التحقق، وحدّد الفئة التي تمثل عنق الزجاجة من AP لكل فئة، واختر عتبة ثقة استنادًا إلى هدف للدقة أو الاستدعاء، ثم قرر الإطلاق أو التكرار أو إعادة النظر.

المسار السريع
إذا كنت تعرف الأساسيات بالفعل، فإليك النسخة المختصرة.
  1. الدقة: نسبة مربعات الإحاطة المرسومة الصحيحة. الاستدعاء: نسبة الكائنات الحقيقية التي عُثر عليها.

  2. أبلغ عن mAP50-95؛ إذ يتساهل mAP50 مع مربعات الإحاطة الفضفاضة.

  3. اقرأ AP لكل فئة؛ فالمتوسط يخفي أضعف الفئات.

  4. تُحسب قيمتا P وR عند نقطة تشغيل واحدة، لا عند عتبة النشر التي اخترتها.

  5. اختر العتبة وفقًا لهدف: الدقة ≥ X أو الاستدعاء ≥ Y.

عملي

كيفية احتساب نتيجة كل تنبؤ#

يطابق التحقق كل مربع متنبأ به مع الحقيقة الأرضية. ويُعدّ التنبؤ إيجابيًا حقيقيًا (TP) عندما تكون فئته صحيحة ويتجاوز IoU مع مربع حقيقة أرضية لم يُطابق بعد عتبةً محددة؛ وإلا فهو إيجابي كاذب (FP). وكل كائن في الحقيقة الأرضية لا يقابله أي تنبؤ هو سلبي كاذب (FN).

المقياسالصيغةالسؤال الذي يجيب عنه
الدقةTP / (TP + FP)عندما يرسم النموذج مربعًا، كم مرة يكون صحيحًا؟
الاستدعاءTP / (TP + FN)كم كائنًا حقيقيًا عثر عليه؟
F12 × P × R / (P + R)رقم واحد يوازن بين كليهما

يؤدي خفض عتبة الثقة إلى إضافة مربعات: يرتفع الاستدعاء وتنخفض الدقة. ويبيّن منحنى الدقة والاستدعاء هذه المفاضلة عبر جميع العتبات، وتمثل المساحة تحته متوسط الدقة (AP) لفئة واحدة. يحسب mAP50 متوسط AP عبر الفئات عند IoU يساوي 0.5، حيث يُحتسب حتى مربع الإحاطة الفضفاض بوضوح. أما mAP50-95 فيحسب المتوسط عبر عشر عتبات IoU من 0.5 إلى 0.95، لذا يكافئ مربعات الإحاطة المحكمة؛ وهو الرقم الأبرز في جداول نماذج Ultralytics.

أجرِ عملية تحقق#

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
metrics = model.val(data="coco8.yaml")

print(f"precision={metrics.box.mp:.3f} recall={metrics.box.mr:.3f}")
print(f"mAP50={metrics.box.map50:.3f} mAP50-95={metrics.box.map:.3f}")
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all          4         17      0.551      0.962      0.943      0.669
                person          3         10      0.551        0.8      0.848      0.387
                   dog          1          1       0.36          1      0.995      0.597
                 horse          1          2       0.36          1      0.995      0.696
              elephant          1          2      0.656      0.969      0.828      0.545
              umbrella          1          1      0.543          1      0.995      0.895
          potted plant          1          1      0.833          1      0.995      0.895

اقرأ النتائج من الأعلى إلى الأسفل:

  • Instances 17, Images 4. مجموعة COCO8 اختبار أولي سريع. لا تكفي أربع صور لاتخاذ قرار بالإطلاق؛ وتعامل مع كل رقم على أنه توضيحي.
  • mAP50 0.943 مقابل mAP50-95 0.669. يُعثر على معظم الكائنات، لكن كثيرًا من مربعات الإحاطة فضفاضة. وتشير الفجوة الكبيرة إلى أن ضعف النموذج في تحديد المواقع، لا الكشف.
  • person AP50-95 0.387. الفئة الأكثر شيوعًا هي الأضعف. وهذه هي نقطة الاختناق لديك.
  • P 0.551، R 0.962. تُقرأ هذه الأعمدة عند عتبة الثقة الوحيدة التي تعظّم F1 عبر الفئات — وهي عتبة منخفضة هنا — لا عند 0.25 التي تستخدمها للتنبؤ. لا تقتبسها بوصفها «دقة النموذج».

AP لكل فئة وعتبة النشر#

يعرض التشغيل نفسه AP لكل فئة، والدقة والاستدعاء عند كل عتبة ثقة، لذا يمكنك اختيار العتبة بناءً على هدف بدلًا من التخمين:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
metrics = model.val(data="coco8.yaml", plots=False, verbose=False)
box = metrics.box

# Per-class AP from the same run: the average hides the weakest class
for i, c in enumerate(box.ap_class_index):
    print(f"{model.names[int(c)]:13} AP50={box.ap50[i]:.3f}  AP50-95={box.ap[i]:.3f}")

# Precision and recall at every confidence threshold for one class
row = list(box.ap_class_index).index(0)  # class 0 = person
for conf in (0.1, 0.25, 0.5, 0.75):
    j = int(conf * (len(box.px) - 1))
    print(f"person @ conf {conf:.2f}: precision {box.p_curve[row, j]:.2f}, recall {box.r_curve[row, j]:.2f}")
                   all          4         17      0.551      0.962      0.943      0.669
person        AP50=0.848  AP50-95=0.387
dog           AP50=0.995  AP50-95=0.597
horse         AP50=0.995  AP50-95=0.696
elephant      AP50=0.828  AP50-95=0.545
umbrella      AP50=0.995  AP50-95=0.895
potted plant  AP50=0.995  AP50-95=0.895
person @ conf 0.10: precision 0.63, recall 0.80
person @ conf 0.25: precision 1.00, recall 0.54
person @ conf 0.50: precision 1.00, recall 0.40
person @ conf 0.75: precision 1.00, recall 0.14

وهكذا تصبح العتبة قاعدة لاتخاذ القرار، لا مجرد شعور:

الهدف المستند إلى معيار القرارالاختيارفي هذا التشغيل
يجب ألا تتجاوز التنبيهات الكاذبة 5% (الدقة ≥ 0.95)أدنى عتبة تحقق ذلك، للحفاظ على أكبر قدر من الاستدعاء0.25: الدقة 1.00، والاستدعاء 0.54
يجب ألا يفوتنا أكثر من شخص واحد من كل خمسة (الاستدعاء ≥ 0.80)أعلى عتبة تحقق ذلك، للحفاظ على أكبر قدر من الدقة0.10: الدقة 0.63، والاستدعاء 0.80

لا يكفي أيٌّ منهما هنا: فالدقة العالية تكلّفنا فقدان نصف الأشخاص، والاستدعاء العالي يكلّفنا ثلث التنبيهات. وهذا دليل يدعم قرار «التكرار»، لا وجود مشكلة في العتبة. كما يحفظ التحقق BoxPR_curve.png وBoxP_curve.png وBoxR_curve.png وBoxF1_curve.png وconfusion_matrix.png في مجلد التشغيل، لتتمكن من قراءة المفاضلة نفسها من الرسوم البيانية؛ ويتناول دليل مقاييس الأداء كلًا منها.

ما الذي ينبغي إصلاحه تاليًا#

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

ثلاث طرق لتحسين mAP: جودة البيانات، وتحسين النموذج، وعملية التعليق التوضيحي

تندرج معظم الإصلاحات ضمن اللوحتين الأولى والثالثة: بيانات أفضل وتسميات أفضل لفئة الاختناق. لا تغيّر النموذج أو إعدادات التدريب إلا بعد اجتياز فحوص البيانات الواردة في الدروس الثلاثة السابقة.

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

مواطن الخلل#

قيمة AP لكل فئة أهم من المتوسط

قد تخفي قيمة mAP تبلغ 0.83 فئةً عند 0.40. إذا كانت هذه الفئة تحمل القيمة التجارية، فليس لديك نموذج بقيمة 0.83 — بل نموذج معطوب يخفي متوسطه المضلل ذلك.

الاكتفاء بذكر mAP50

العَرَض: نموذج «يحقق 0.94» لكنه يرسم مربعات فضفاضة أكثر من اللازم للقياس أو الاقتصاص. الحل: أبلغ عن mAP50-95، واقرأ الفرق عن mAP50 بوصفه مؤشرًا إلى دقة تحديد الموقع.

الثقة بمجموعة تحقق صغيرة جدًا أو متسربة

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

جرّبه

شغّل النصين البرمجيين أعلاه. واكتب ملخصًا من فقرة واحدة لشخص يعدّ الأشخاص باستخدام هذا النموذج: اذكر فئة الاختناق وAP50-95 الخاص بها، وما تشير إليه الفجوة بين mAP50 وmAP50-95، والعتبة التي ستعتمدها عند الإطلاق لتحقيق دقة ≥ 0.95 والاستدعاء الذي ستتنازل عنه، ثم اتخذ قرار الإطلاق أو التكرار أو إعادة النظر.

متى يُعدّ مكتملًا
تكون قد أتممت الدرس عند تحقق جميع الشروط التالية.
  • يحدد ملخصك فئة الاختناق ويذكر AP50-95 الخاص بها.

  • تحدّد قراءتك عتبة النشر، والهدف الذي أنتجها، ومقدار الاستدعاء أو الدقة الذي تتطلبه.

  • تختتم قراءتك بقرار النشر أو التكرار أو إعادة التفكير، مستندًا إلى الأرقام.

عرض الحل

قراءة النتائج: عدّاد أشخاص على yolo26n.pt، والتحقق من COCO8

عنق الزجاجة هو person، عند AP50-95 يبلغ 0.387 مقابل 0.669 إجمالًا. وهو أيضًا الفئة ذات أكبر عدد من الحالات (10 من أصل 17)، لذا فهو الأضعف والأكثر أهمية لعدّاد الأشخاص. يبلغ AP50 لديه 0.848، ما يعني أن النموذج يعثر على معظم الأشخاص، لكنه يرسم مربعات إحاطة فضفاضة؛ وهذا أقل أهمية للعدّ مقارنةً بأي مهمة تقيس الموضع أو الحجم.

لتحقيق دقة ≥ 0.95، فإن أدنى عتبة مؤهلة هي conf 0.25، حيث تبلغ الدقة 1.00 لكن الاستدعاء لا يتجاوز 0.54: سيُفوّت العدّاد قرابة نصف الأشخاص. ولتحقيق استدعاء ≥ 0.80، سنحتاج إلى conf 0.10، حيث سيكون ثلث مرات العدّ خاطئًا.

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

ما الخطوة التالية

الدرس الأخير: شغّل YOLO26 على صورك، وتحقق من توافق المخرجات مع مواصفات مهمتك.

سجّل الدخول لحفظ التقدم