رؤى حول تقييم النموذج والضبط الدقيق#
بعد تدريب نموذج YOLO، تتمثل الخطوة التالية في قياس مدى جودة أداءه وضبطه بدقة لتجاوز أوجه القصور. يستخدم التقييم مقاييس مثل mAP وIoU لتحديد الدقة رقمياً، بينما يعمل الضبط الدقيق على تعديل معاملات التدريب لتعزيز نقاط الضعف لكي يلبي النموذج هدف مشروعك. يشرح هذا الدليل مقاييس التقييم الرئيسية، وكيفية قراءتها، وتقنيات الضبط الدقيق التي ترفع من إمكانيات نموذجك.
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
يأتي التقييم والضبط الدقيق قرب نهاية سير عمل مشروع الرؤية الحاسوبية، بمجرد أن يكون التدريب قيد التنفيذ وتحتاج إلى التحقق من أن النموذج دقيق، وفعال، وجاهز للنشر.
مقاييس التقييم الرئيسية#
تقيس مقاييس مختلفة مدى فعالية أداء النموذج. توفر هذه مقاييس الأداء رؤى رقمية واضحة توجه التحسينات نحو ضمان تحقيق النموذج لأهدافه المقصودة.
درجة الثقة (Confidence Score)#
تمثل درجة الثقة مدى يقين النموذج بأن كائناً مكتشفاً ينتمي إلى فئة معينة. تتراوح هذه الدرجة من 0 إلى 1، حيث تشير الدرجات الأعلى إلى ثقة أكبر. تساعد درجة الثقة في تصفية التنبؤات؛ حيث لا تُعتبر صالحة إلا الاكتشافات التي تتجاوز فيها درجة الثقة حداً معيناً (threshold).
عند تشغيل الاستدلال، إذا كنت لا ترى أي تنبؤات وقمت بالتحقق من كل شيء آخر، فحاول خفض عتبة الثقة. في بعض الأحيان تكون العتبة مرتفعة جداً، مما يتسبب في تجاهل النموذج لتنبؤات صحيحة. يؤدي خفضها إلى السماح للنموذج بالنظر في المزيد من الاحتمالات. قد لا يلبي هذا أهداف مشروعك النهائية، ولكنه وسيلة جيدة لمعرفة ما يمكن للنموذج فعله وتحديد كيفية ضبطه بدقة.
تقاطع الاتحاد (Intersection over Union)#
التقاطع على الاتحاد (IoU) هو مقياس في اكتشاف الكائنات يقيس مدى تداخل صندوق الإحاطة المتوقع مع صندوق الإحاطة الأرضي الحقيقي. تتراوح قيم IoU من 0 إلى 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 و mAP@medium و mAP@large، التي تقيم الدقة عبر كائنات بأحجام مختلفة.
تقييم نموذج YOLO26#
يمكنك تقييم نموذج YOLO26 مُدرب باستخدام وضع التحقق. للحصول على نظرة أعمق حول كيفية حساب كل مقياس وتفسيره، راجع دليل مقاييس أداء YOLO26.
التعامل مع أحجام الصور المتغيرة#
يساعدك تقييم نموذجك على صور بأحجام مختلفة في فهم أداءه عبر مجموعات بيانات متنوعة. يقوم معامل التحقق rect=true بتجميع الصور حسب نسبة العرض إلى الارتفاع وحشو كل دفعة إلى أصغر شكل يناسبها، بحيث يتم تقييم الصور المستطيلة دون إجبارها على أن تكون مربعة.
يقوم المعامل imgsz بتحديد حجم الصورة المستخدم أثناء التحقق، ويُطبق كمربع. إذا لم تقم بتعيينه صراحةً، فإن YOLO26 يعيد استخدام القيمة المحفوظة في إعدادات النموذج (640 للنماذج الرسمية المدربة مسبقاً، أو أي حجم تم تدريب نقطة التحقق المخصصة عليه). باستخدام rect=true، يقوم YOLO26 بتقييد الجانب الأطول بـ imgsz وحشو الجانب الأقصر بمضاعف الخطوة، مع الحفاظ على نسبة العرض إلى الارتفاع. قم بتعديل 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. تتيح لك هذه العناصر مجتمعة تحديد الصور التي يعاني معها النموذج والقيام بالضبط الدقيق وفقاً لذلك.
الضبط الدقيق لنموذجك#
يأخذ الضبط الدقيق نموذجاً مدرباً مسبقاً ويعدل معلماته لتحسين الأداء في مهمة أو مجموعة بيانات محددة. يُعرف أيضاً بإعادة تدريب النموذج، وهو يتيح للنموذج فهم النتائج والتنبؤ بها بشكل أفضل للبيانات التي سيواجهها في تطبيقات العالم الحقيقي. بناءً على نتائج تقييمك، تقوم بإعادة تدريب النموذج لتحقيق نتائج مثالية من خلال إيلاء اهتمام وثيق لبضع معلمات وتقنيات رئيسية.
البدء بمعدل تعلم أعلى#
أثناء التدريب العادي، يبدأ معدل التعلم منخفضاً ويزداد تدريجياً خلال الحقبات القليلة الأولى لتثبيت التحديثات المبكرة. عند إجراء الضبط الدقيق، يحمل النموذج بالفعل ميزات مفيدة من التدريب المسبق، لذا يمكنك تخطي عملية الإحماء هذه والبدء في التكيف مع بياناتك الجديدة على الفور.
قم بتعيين وسيط التدريب warmup_epochs إلى 0 في model.train() لتعطيل مرحلة الإحماء. يستمر التدريب بعد ذلك من الأوزان المدربة مسبقاً بمعدل التعلم الأساسي المُكوَّن (lr0) بدلاً من التصاعد إليه، متكيفاً مع تفاصيل بياناتك الجديدة.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Fine-tune with the warmup phase disabled
model.train(data="coco8.yaml", epochs=10, warmup_epochs=0)تجانب الصور (Image Tiling) للكائنات الصغيرة#
يمكن أن تحسن تجزئة الصور من دقة الاكتشاف للكائنات الصغيرة. من خلال تقسيم الصور الكبيرة إلى قطاعات أصغر، مثل تقسيم صور 1280x1280 إلى عدة قطاعات بحجم 640x640، فإنك تحافظ على الدقة الأصلية وتسمح للنموذج بالتعلم من أجزاء عالية الدقة. يدعم Ultralytics هذا وقت الاستدلال من خلال الاستدلال المقطع لـ SAHI. عند التدريب على صور مجزأة، تأكد من تعديل تصنيفاتك لكل قطاع جديد بشكل صحيح.
الخلاصة#
التقييم والضبط الدقيق هما ما يحول النموذج المدرب إلى نموذج موثوق وقابل للنشر: المقاييس مثل mAP وIoU تكشف عن نقاط الضعف، والتغييرات المستهدفة في المعاملات تعالجها. ابدأ بـ وضع التحقق لقياس أداء نموذجك، ثم طبق تقنيات الضبط الدقيق أعلاه وواصل التكرار بمعاملات وتقنيات ومجموعات بيانات جديدة. إذا ظهرت أسئلة على طول الطريق، فاسأل المجتمع على مستودع Ultralytics على GitHub أو خادم Ultralytics على Discord.
الأسئلة الشائعة#
لتقييم أداء نموذج YOLO26، تشمل المقاييس المهمة درجة الثقة، والتقاطع على الاتحاد (IoU)، ومتوسط الدقة المتوسطة (mAP). تقيس درجة الثقة يقين النموذج لكل فئة كتم اكتشافها. يقيم IoU مدى تداخل صندوق الإحاطة المتوقع مع الحقيقة الأرضية. يقوم متوسط الدقة المتوسطة (mAP) بجمع درجات الدقة عبر الفئات، حيث يُعد كل من mAP@.5 وmAP@.5:.95 نوعين شائعين لعتبات IoU المختلفة. تعرف على المزيد حول هذه المقاييس في دليل مقاييس أداء YOLO26 الخاص بنا.
يتضمن الضبط الدقيق لنموذج YOLO26 المدرب مسبقاً ضبط معاملاته لتحسين الأداء على مهمة أو مجموعة بيانات محددة. ابدأ بتقييم نموذجك باستخدام المقاييس، ثم قم بتعيين وسيط التدريب
warmup_epochsإلى0فيmodel.train()بحيث يبدأ معدل التعلم بالقيمة الأساسية المُكوَّنة فوراً بدلاً من التصاعد. أثناء التقييم، تساعد معاملات مثلrect=trueفي التعامل مع أحجام الصور المتنوعة بفاعلية. لمزيد من الإرشادات التفصيلية، راجع قسمنا حول الضبط الدقيق لنموذجك.للتعامل مع أحجام الصور المتغيرة أثناء التقييم، استخدم المعامل
rect=trueفي YOLO26، والذي يقوم بتجميع الصور حسب نسبة العرض إلى الارتفاع وحشو كل دفعة بدلاً من إجبار كل صورة على أن تكون مربعة. يحدد المعاملimgszحجم الصورة للتحقق؛ وإذا لم تتجاوزه، فإن YOLO26 يعيد استخدام القيمة المحفوظة للنموذج (640 للنماذج الرسمية المدربة مسبقاً). قم بتعديلimgszليناسب مجموعة بياناتك وذاكرة GPU. لمزيد من التفاصيل، تفضل بزيارة قسمنا حول التعامل مع أحجام الصور المتغيرة.يتضمن تحسين متوسط الدقة (mAP) لنموذج YOLO26 عدة خطوات:
- ضبط المعاملات الفائقة: قم بالتجربة باستخدام معدلات تعلم مختلفة، وأحجام الدفعات، وتضخيمات الصور.
- تضخيم البيانات: استخدم تقنيات مثل Mosaic وMixUp لإنشاء عينات تدريب متنوعة.
- تجميع الصور: قسّم الصور الأكبر إلى مربعات أصغر لتحسين دقة الاكتشاف للكائنات الصغيرة.
راجع قسمنا المفصل حول الضبط الدقيق لنموذجك لمعرفة الاستراتيجيات المحددة.
يمكنك الوصول إلى مقاييس تقييم نموذج 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.