رؤى حول تقييم النماذج وضبطها الدقيق#
بعد تدريب نموذج YOLO، تتمثل الخطوة التالية في قياس مدى جودة أدائه وضبطه بدقة لسد الفجوات. يستخدم التقييم مقاييس مثل mAP وIoU لقياس الدقة كمّيًا، بينما يضبط الضبط الدقيق معلمات التدريب لتعزيز الجوانب الضعيفة حتى يحقق النموذج هدف مشروعك. يوضح هذا الدليل مقاييس التقييم الأساسية، وكيفية قراءتها، وكيفية الاستفادة من نتائجها.
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
يأتي التقييم والضبط الدقيق قرب نهاية سير عمل مشروع الرؤية الحاسوبية، بعد بدء التدريب وحاجتك إلى التحقق من أن النموذج دقيق وفعّال وجاهز للنشر.
مقاييس التقييم الأساسية#
تقيس مقاييس متنوعة مدى فعالية أداء النموذج. توفر مقاييس الأداء هذه رؤى عددية واضحة توجه التحسينات لضمان تحقيق النموذج لأهدافه المقصودة.
درجة الثقة#
تمثل درجة الثقة مدى يقين النموذج من أن الكائن المكتشف ينتمي إلى فئة معينة. وتتراوح من 0 إلى 1، وتشير الدرجات الأعلى إلى ثقة أكبر. تساعد درجة الثقة في تصفية التنبؤات؛ فلا تُعد صالحة إلا الاكتشافات التي تتجاوز درجات ثقتها حدًا معينًا.
عند تشغيل الاستدلال، إذا لم ترَ أي تنبؤات بعد التحقق من كل شيء آخر، فجرّب خفض حد الثقة. قد يكون الحد مرتفعًا جدًا أحيانًا، مما يؤدي إلى تجاهل النموذج للتنبؤات الصالحة. يتيح خفضه للنموذج النظر في احتمالات أكثر. قد لا يحقق هذا أهداف مشروعك النهائية، لكنه طريقة جيدة لمعرفة ما يستطيع النموذج فعله وتحديد كيفية ضبطه بدقة.
التقاطع على الاتحاد#
يُعد التقاطع على الاتحاد (IoU) مقياسًا في اكتشاف الكائنات يقيس مدى تداخل المربع المحيط المتوقع مع المربع المحيط الحقيقي. وتتراوح قيم IoU من 0 إلى 1، حيث تمثل القيمة 1 تطابقًا مثاليًا. ويُعد IoU أساسيًا لأنه يقيس مدى تطابق الحدود المتوقعة مع الحدود الفعلية للكائن.
متوسط الدقة المتوسطة#
يقيس متوسط الدقة المتوسطة (mAP) مدى جودة أداء نموذج اكتشاف الكائنات إجمالًا. فهو ينظر في دقة اكتشاف كل فئة من الكائنات، ويحسب متوسط هذه الدرجات، ويقدم رقمًا واحدًا يوضح مدى دقة النموذج في تحديد الكائنات وتصنيفها.
يُبلّغ عادةً عن مقياسي mAP الأكثر شيوعًا:
- mAP@.5: يقيس متوسط الدقة عند حد IoU واحد يبلغ 0.5. يتحقق هذا المقياس مما إذا كان النموذج يستطيع العثور على الكائنات بشكل صحيح مع متطلب دقة أقل صرامة. ويركز على وجود الكائن تقريبًا في الموضع الصحيح، دون الحاجة إلى تموضع مثالي، ويساعد في معرفة ما إذا كان النموذج جيدًا عمومًا في اكتشاف الكائنات.
- mAP@.5:.95: يحسب متوسط قيم mAP المحسوبة عند حدود IoU متعددة، من 0.5 إلى 0.95 بزيادات قدرها 0.05. هذا المقياس أكثر تفصيلًا وصرامة، ويقدم صورة أشمل عن مدى دقة النموذج في العثور على الكائنات عند مستويات مختلفة من الصرامة، ويُعد مفيدًا بصفة خاصة للتطبيقات التي تتطلب اكتشافًا دقيقًا للكائنات.
تشمل مقاييس mAP الأخرى mAP@0.75، الذي يستخدم حد IoU أكثر صرامة يبلغ 0.75، وmAP@small وmedium وlarge، التي تقيّم الدقة للكائنات ذات الأحجام المختلفة.
تقييم نموذج YOLO26#
يمكنك تقييم نموذج YOLO26 مُدرّب باستخدام وضع التحقق. وللاطلاع بعمق أكبر على كيفية حساب كل مقياس وتفسيره، راجع دليل مقاييس أداء YOLO26.
التعامل مع أحجام الصور المتغيرة#
يساعد تقييم نموذجك على صور بأحجام مختلفة في فهم أدائه على مجموعات بيانات متنوعة. تجمع معلمة التحقق rect=true الصور حسب نسبة العرض إلى الارتفاع، وتضيف حشوًا إلى كل دفعة وفق أصغر شكل ملائم، لذلك تُقيّم الصور المستطيلة دون إجبارها على أن تصبح مربعة.
تحدد المعلمة imgsz حجم الصورة المستخدم أثناء التحقق، وتُطبّق هذا الحجم على شكل مربع. إذا لم تحددها صراحةً، يعيد YOLO26 استخدام القيمة المحفوظة في إعدادات النموذج (640 للنماذج الرسمية المُدرّبة مسبقًا، أو أي حجم دُرّب عليه checkpoint مخصص). باستخدام rect=true، يقيّد YOLO26 الجانب الأطول إلى imgsz ويضيف حشوًا إلى الجانب الأقصر ليكون من مضاعفات stride، مع الحفاظ على نسبة العرض إلى الارتفاع. اضبط imgsz استنادًا إلى أبعاد مجموعة بياناتك وذاكرة GPU المتاحة.
الوصول إلى مقاييس YOLO26#
لفهم أداء نموذجك بالتفصيل، يمكنك الوصول إلى مقاييس تقييم محددة باستخدام بضعة أسطر من Python. يحمّل المقتطف أدناه نموذجًا، ويشغّل التحقق، ويطبع أكثر المقاييس فائدة.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Run validation on your dataset
results = model.val(data="coco8.yaml")
# Overall metrics
print("mAP50-95:", results.box.map) # mAP at IoU 0.50:0.95
print("mAP50:", results.box.map50) # mAP at IoU 0.50
print("mAP75:", results.box.map75) # mAP at IoU 0.75
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Fitness:", results.box.fitness()) # weighted score used for model selection
# Per-class metrics
print("Class indices evaluated:", results.box.ap_class_index)
print("Per-class mAP50-95:", results.box.maps)
# Per-image precision, recall, F1, TP, FP, and FN
print("Per-image metrics:", results.box.image_metrics)
# Per-stage timing breakdown in milliseconds per image
print("Timing breakdown (ms/image):", results.speed)لاحظ أن fitness() أسلوب ويجب استدعاؤه باستخدام الأقواس، بينما تُعد المقاييس مثل map وmap50 وmp خصائص يتم الوصول إليها مباشرةً.
السمة results.box.image_metrics عبارة عن قاموس لكل صورة، مفاتيحه أسماء ملفات الصور، ويحتوي على precision وrecall وf1 وtp وfp وfn عند IoU يبلغ 0.5 لكل صورة. ويُبلّغ عن أزمنة المعالجة المسبقة والاستدلال والخسارة والمعالجة اللاحقة بشكل منفصل في قاموس results.speed. وتتيح لك هذه المعلومات معًا تحديد الصور التي يواجه النموذج صعوبة معها وضبطه وفقًا لذلك.
ضبط نموذجك بدقة#
يأخذ الضبط الدقيق نموذجًا مُدرّبًا مسبقًا ويعدّل معلماته لتحسين الأداء في مهمة أو مجموعة بيانات محددة. ويُعرف أيضًا بإعادة تدريب النموذج، إذ يتيح للنموذج فهم البيانات التي سيواجهها في تطبيقات العالم الحقيقي والتنبؤ بنتائجها بشكل أفضل. واستنادًا إلى نتائج التقييم، تعيد تدريب النموذج على بياناتك الخاصة، مع ضبط وسيطات التدريب الموضحة في دليل الضبط الدقيق.
تقسيم الصور إلى مربعات للكائنات الصغيرة#
يمكن أن يحسن تقسيم الصور إلى مربعات دقة اكتشاف الكائنات الصغيرة. فمن خلال تقسيم الصور الكبيرة إلى أجزاء أصغر، مثل تقسيم صور بحجم 1280x1280 إلى عدة أجزاء بحجم 640x640، تحافظ على الدقة الأصلية وتتيح للنموذج التعلم من مقاطع عالية الدقة. تدعم Ultralytics ذلك أثناء الاستدلال من خلال الاستدلال المقسّم إلى مربعات باستخدام SAHI. وعند التدريب على الصور المقسمة إلى مربعات، احرص على ضبط التسميات لكل جزء جديد بشكل صحيح.
الخلاصة#
التقييم والضبط الدقيق هما ما يحوّلان النموذج المُدرّب إلى نموذج موثوق وقابل للنشر: إذ تكشف مقاييس مثل mAP وIoU نقاط الضعف، وتعالجها التغييرات المستهدفة في المعلمات. ابدأ بـوضع التحقق لقياس أداء نموذجك، ثم أعد التدريب باستخدام الوسيطات الموضحة في دليل الضبط الدقيق، وواصل التكرار باستخدام معلمات وتقنيات ومجموعات بيانات جديدة. وإذا ظهرت أسئلة أثناء ذلك، فاطرحها على المجتمع في مستودع Ultralytics على GitHub أو خادم Ultralytics على Discord.
الأسئلة الشائعة#
لتقييم أداء نموذج YOLO26، تشمل المقاييس المهمة درجة الثقة، والتقاطع على الاتحاد (IoU)، ومتوسط الدقة المتوسطة (mAP). تقيس درجة الثقة مدى يقين النموذج لكل فئة كائن مكتشف. ويقيّم IoU مدى تداخل المربع المحيط المتوقع مع المربع المحيط الحقيقي. ويجمع متوسط الدقة المتوسطة (mAP) درجات الدقة عبر الفئات، ويُعد mAP@.5 وmAP@.5:.95 نوعين شائعين عند حدود IoU المختلفة. تعرّف على المزيد حول هذه المقاييس في دليل مقاييس أداء YOLO26.
يتضمن الضبط الدقيق لنموذج YOLO26 مُدرّب مسبقًا تعديل معلماته لتحسين الأداء في مهمة أو مجموعة بيانات محددة. ابدأ بتقييم نموذجك باستخدام المقاييس، ثم أعد التدريب انطلاقًا من الأوزان المُدرّبة مسبقًا على مجموعة بياناتك الخاصة. وأثناء التقييم، تساعد معلمات مثل
rect=trueفي التعامل بفعالية مع أحجام الصور المتنوعة. للاطلاع على وسيطات التدريب التي يمكن تعديلها، راجع دليل الضبط الدقيق.للتعامل مع أحجام الصور المتغيرة أثناء التقييم، استخدم المعلمة
rect=trueفي YOLO26، التي تجمع الصور حسب نسبة العرض إلى الارتفاع وتضيف حشوًا إلى كل دفعة بدلًا من إجبار كل صورة على أن تصبح مربعة. وتحدد المعلمةimgszحجم الصورة للتحقق؛ وإذا لم تتجاوز القيمة الافتراضية، يعيد YOLO26 استخدام القيمة المحفوظة في النموذج (640 للنماذج الرسمية المُدرّبة مسبقًا). اضبطimgszبما يلائم مجموعة بياناتك وذاكرة GPU. لمزيد من التفاصيل، زر قسم التعامل مع أحجام الصور المتغيرة.يتضمن تحسين متوسط الدقة المتوسطة (mAP) لنموذج YOLO26 عدة خطوات:
- ضبط المعلمات الفائقة: جرّب معدلات تعلم مختلفة، وأحجام دفعات مختلفة، وزيادات متنوعة للصور.
- زيادة البيانات: استخدم تقنيات مثل Mosaic وMixUp لإنشاء عينات تدريب متنوعة.
- تقسيم الصور إلى مربعات: قسّم الصور الكبيرة إلى مربعات أصغر لتحسين دقة اكتشاف الكائنات الصغيرة.
للاطلاع على وسيطات التدريب الخاصة بالخطوتين 1 و2، راجع دليل الضبط الدقيق؛ وتتناول تقسيم الصور إلى مربعات الخطوة 3.
يمكنك الوصول إلى مقاييس تقييم نموذج YOLO26 باستخدام Python بعد تشغيل التحقق:
الاستخدامfrom ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # Run validation results = model.val(data="coco8.yaml") # Access key metrics print("Mean average precision at IoU=0.50:", results.box.map50) print("Mean average precision at IoU=0.50:0.95:", results.box.map) print("Mean recall:", results.box.mr) print("Class indices evaluated:", results.box.ap_class_index)يساعد تحليل هذه المقاييس في ضبط نموذج YOLO26 وتحسينه. وللاطلاع المتعمق، راجع دليلنا حول مقاييس أداء YOLO.