Skip to main content

التحقق من النموذج باستخدام Ultralytics YOLO

Ultralytics YOLO ecosystem and integrations

مقدمة

يعد التحقق خطوة حاسمة في تعلم الآلة مسار العمل، مما يسمح لك بتقييم جودة النماذج المدربة الخاصة بك. يوفر وضع Val في Ultralytics YOLO26 مجموعة قوية من الأدوات والمقاييس لتقييم أداء نماذج اكتشاف الكائنات الخاصة بك. هذا الدليل بمثابة مورد كامل لفهم كيفية استخدام وضع Val بفعالية لضمان أن نماذجك دقيقة وموثوقة.



Watch: Ultralytics Modes Tutorial: Validation

لماذا التحقق باستخدام Ultralytics YOLO؟

إليك سبب كون استخدام وضع Val في YOLO26 ميزة إضافية:

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

الميزات الرئيسية لوضع Val

هذه هي الوظائف البارزة التي يوفرها وضع Val في YOLO26:

  • الإعدادات المؤتمتة: تتذكر النماذج تكوينات التدريب الخاصة بها للتحقق المباشر.
  • دعم المقاييس المتعددة: قيم نموذجك بناءً على مجموعة من مقاييس الدقة.
  • CLI و Python API: اختر بين واجهة سطر الأوامر أو Python API بناءً على تفضيلك للتحقق.
  • توافق البيانات: يعمل بسلاسة مع مجموعات البيانات المستخدمة أثناء مرحلة التدريب بالإضافة إلى مجموعات البيانات المخصصة.
نصيحة
  • تتذكر نماذج YOLO26 إعدادات التدريب الخاصة بها تلقائيًا، لذا يمكنك التحقق من نموذج بنفس حجم الصورة وعلى مجموعة البيانات الأصلية بسهولة باستخدام فقط yolo val model=yolo26n.pt أو YOLO("yolo26n.pt").val()

أمثلة على الاستخدام

تحقق من نموذج YOLO26n مدرب الدقة على مجموعة بيانات COCO8. لا توجد وسائط مطلوبة حيث يحتفظ model بـ data التدريب والوسائط كسمات للنموذج. راجع قسم الوسائط أدناه للحصول على قائمة كاملة بوسائط التحقق.

خطأ المعالجة المتعددة في Windows

على نظام Windows، قد تتلقى RuntimeError عند تشغيل التحقق كبرنامج نصي. أضف كتلة if __name__ == "__main__": قبل رمز التحقق الخاص بك لحل ذلك.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

وسائط التحقق من نموذج YOLO

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

الوسيطالنوعالافتراضيالوصف
datastrNoneيحدد المسار إلى ملف تكوين مجموعة البيانات (مثل coco8.yaml). يجب أن يتضمن هذا الملف المسار إلى بيانات التحقق.
imgszint640يحدد حجم صور الإدخال. يتم تغيير حجم جميع الصور إلى هذا البعد قبل المعالجة. قد تؤدي الأحجام الأكبر إلى تحسين الدقة للكائنات الصغيرة ولكنها تزيد من وقت الحساب.
batchint16يضبط عدد الصور لكل دُفعة. تستخدم القيم الأعلى ذاكرة GPU بكفاءة أكبر ولكنها تتطلب المزيد من VRAM. اضبط بناءً على موارد الأجهزة المتاحة.
save_jsonboolFalseإذا True، يحفظ النتائج في ملف JSON لمزيد من التحليل، أو التكامل مع أدوات أخرى، أو الإرسال إلى خوادم التقييم مثل COCO.
conffloat0.001يضبط حد الثقة الأدنى للاكتشافات. القيم الأقل تزيد من الاسترجاع (recall) ولكن قد تؤدي إلى المزيد من الإيجابيات الكاذبة. تُستخدم أثناء التحقق لحساب منحنيات الدقة والاسترجاع.
ioufloat0.7يضبط عتبة Intersection Over Union لـ Non-Maximum Suppression للتحكم في التخلص من الاكتشافات المكررة.
max_detint300يحدد الحد الأقصى لعدد الاكتشافات لكل صورة. مفيد في المشاهد المزدحمة لمنع الاكتشافات المفرطة وإدارة الموارد الحسابية.
halfboolFalseيُمكّن حساب الدقة النصفية (FP16)، مما يقلل من استخدام الذاكرة ويزيد من السرعة مع تأثير ضئيل على الدقة.
devicestrNoneيحدد الجهاز للتحقق (cpu, cuda:0, npu, npu:0، إلخ). عندما None، يتم تحديد أفضل جهاز متاح تلقائيًا. يمكن تحديد أجهزة CUDA متعددة بفواصل.
dnnboolFalseإذا True، يستخدم وحدة OpenCV DNN لاستنتاج نموذج ONNX، مما يوفر بديلاً لطرق استنتاج PyTorch.
plotsboolTrueعند التعيين على True، يتم إنشاء وحفظ مخططات للتنبؤات مقابل الحقيقة الأساسية (ground truth)، ومصفوفات الارتباك، ومنحنيات PR للتقييم المرئي لأداء النموذج.
classeslist[int]Noneيحدد قائمة بمعرفات الفئات للتقييم. مفيد لتصفية والتركيز فقط على فئات معينة أثناء التقييم.
rectboolTrueإذا True، يستخدم الاستنتاج المستطيل للدفعة، مما يقلل من الحشو (padding) ويزيد من السرعة والكفاءة من خلال معالجة الصور بنسبة العرض إلى الارتفاع الأصلية.
splitstr'val'يحدد تقسيم مجموعة البيانات المستخدم للتحقق (val, test، أو train). يسمح بالمرونة في اختيار جزء البيانات لتقييم الأداء.
projectstrNoneاسم دليل المشروع حيث يتم حفظ مخرجات التحقق. يساعد في تنظيم النتائج من تجارب أو نماذج مختلفة.
namestrNoneاسم تشغيل التحقق. يُستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين سجلات ومخرجات التحقق.
verboseboolTrueإذا True، يعرض معلومات مفصلة أثناء عملية التحقق، بما في ذلك مقاييس كل فئة، وتقدم الدُفعة، ومعلومات تصحيح إضافية.
save_txtboolFalseإذا True، يحفظ نتائج الاكتشاف في ملفات نصية، بملف واحد لكل صورة، وهو مفيد لمزيد من التحليل، أو المعالجة اللاحقة المخصصة، أو التكامل مع أنظمة أخرى.
save_confboolFalseإذا True، يتضمن قيم الثقة في الملفات النصية المحفوظة عند تمكين save_txt، مما يوفر مخرجات أكثر تفصيلاً للتحليل والتصفية.
workersint8عدد سلاسل العمل (worker threads) لتحميل البيانات. يمكن أن تسرع القيم الأعلى من معالجة البيانات مسبقًا ولكنها قد تزيد من استخدام CPU. التعيين على 0 يستخدم السلسلة الرئيسية، والتي قد تكون أكثر استقرارًا في بعض البيئات.
augmentboolFalseيُمكّن زيادة البيانات أثناء وقت الاختبار (TTA) أثناء التحقق، مما قد يحسن دقة الاكتشاف على حساب سرعة الاستنتاج من خلال تشغيل الاستنتاج على إصدارات محولة من المدخلات.
agnostic_nmsboolFalseيُمكّن Non-Maximum Suppression غير المتوافق مع الفئة، والذي يدمج الصناديق المتداخلة بغض النظر عن فئتها المتوقعة. مفيد للتطبيقات التي تركز على المثيلات. بالنسبة للنماذج الشاملة (YOLO26, YOLOv10)، هذا يمنع فقط ظهور نفس الاكتشاف بتسميات فئة متعددة (IoU=1.0 مكررات) ولا يقوم بقمع يعتمد على عتبة IoU بين الصناديق المتميزة.
single_clsboolFalseيعامل جميع الفئات كفئة واحدة أثناء التحقق. مفيد لتقييم أداء النموذج في مهام الاكتشاف الثنائي أو عندما لا تكون الفروق بين الفئات مهمة.
visualizeboolFalseيُصور الحقائق الأساسية، والإيجابيات الحقيقية، والإيجابيات الكاذبة، والسلبيات الكاذبة لكل صورة. مفيد لتصحيح الأخطاء وتفسير النموذج.
compilebool أو strFalseيُمكّن تجميع الرسم البياني لـ PyTorch 2.x torch.compile باستخدام backend='inductor'. يقبل True"default", False ← للتعطيل، أو وضع نصي مثل "default", "reduce-overhead", "max-autotune-no-cudagraphs". يعود إلى الوضع السريع (eager) مع تحذير إذا كان غير مدعوم.
end2endboolNoneيتجاوز الوضع الشامل في نماذج YOLO التي تدعم الاستنتاج بدون NMS (YOLO26, YOLOv10). تعيينه على False يتيح لك تشغيل التحقق باستخدام مسار NMS التقليدي، مما يسمح لك أيضًا بالاستفادة من iou معامل.

يلعب كل من هذه الإعدادات دورًا حيويًا في عملية التحقق، مما يسمح بتقييم قابل للتخصيص وفعال لنماذج YOLO. يمكن أن يساعد ضبط هذه المعلمات وفقًا لاحتياجاتك ومواردك الخاصة في تحقيق أفضل توازن بين الدقة والأداء.

مثال على التحقق باستخدام المعاملات



Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More

Explore model validation and different export methods in Google Colab

تعرض الأمثلة أدناه عملية التحقق من نموذج YOLO باستخدام معاملات مخصصة في Python و CLI.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")
تصدير مصفوفة الارتباك (ConfusionMatrix)

يمكنك أيضًا حفظ نتائج ConfusionMatrix بتنسيقات مختلفة باستخدام الكود المقدم.

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
الدقة والاستدعاء و F1 لكل صورة

تخزن عملية التحقق مقاييس الدقة والاستدعاء و F1 و TP و FP و FN لكل صورة (عند عتبة IoU تبلغ 0.5) لجميع المهام باستثناء التصنيف. يمكنك الوصول إليها من خلال results.box.image_metrics للكشف و OBB، results.seg.image_metrics للتقسيم (segmentation)، و results.pose.image_metrics لوضعية الجسم (pose) بعد اكتمال التحقق.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate and access per-image metrics
results = model.val(data="coco8.yaml")

# image_metrics is a dictionary with image filenames as keys
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}

# Access metrics for a specific image
results.box.image_metrics["image1.jpg"]  # {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}

كل إدخال في image_metrics يحتوي على المفاتيح التالية:

المفتاحالوصف
precisionدرجة الدقة للصورة (tp / (tp + fp)).
recallدرجة الاستدعاء للصورة (tp / (tp + fn)).
f1المتوسط التوافقي للدقة والاستدعاء.
tpعدد النتائج الإيجابية الصحيحة (true positives) للصورة.
fpعدد النتائج الإيجابية الخاطئة (false positives) للصورة.
fnعدد النتائج السلبية الخاطئة (false negatives) للصورة.

تتوفر هذه الميزة لمهام الكشف، والتقسيم، ووضعية الجسم، و OBB.

الطريقةنوع الإرجاعالوصف
summary()List[Dict[str, Any]]تحويل نتائج التحقق إلى قاموس ملخص.
to_df()DataFrameإرجاع نتائج التحقق كإطار بيانات Polars منظم.
to_csv()strتصدير نتائج التحقق بتنسيق CSV وإرجاع سلسلة CSV.
to_json()strتصدير نتائج التحقق بتنسيق JSON وإرجاع سلسلة JSON.

لمزيد من التفاصيل راجع DataExportMixin توثيق الفئة.

الأسئلة الشائعة

كيف يمكنني التحقق من نموذج YOLO26 الخاص بي باستخدام Ultralytics؟

للتحقق من نموذج YOLO26 الخاص بك، يمكنك استخدام وضع Val الذي توفره Ultralytics. على سبيل المثال، باستخدام Python API، يمكنك تحميل نموذج وتشغيل التحقق عبر:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate the model
metrics = model.val()
print(metrics.box.map)  # map50-95

بدلاً من ذلك، يمكنك استخدام واجهة سطر الأوامر (CLI):

yolo val model=yolo26n.pt

لمزيد من التخصيص، يمكنك ضبط معاملات مختلفة مثل imgsz, batch، و conf في كل من وضعي Python و CLI. تحقق من قسم وسائط التحقق من نموذج YOLO للحصول على القائمة الكاملة للمعلمات.

ما هي المقاييس التي يمكنني الحصول عليها من التحقق من نموذج YOLO26؟

يوفر التحقق من نموذج YOLO26 العديد من المقاييس الرئيسية لتقييم أداء النموذج. وتشمل هذه:

  • mAP50 (متوسط الدقة المتوسطة عند عتبة IoU تبلغ 0.5)
  • mAP75 (متوسط الدقة المتوسطة عند عتبة IoU تبلغ 0.75)
  • mAP50-95 (متوسط الدقة المتوسطة عبر عتبات IoU متعددة من 0.5 إلى 0.95)

باستخدام Python API، يمكنك الوصول إلى هذه المقاييس كما يلي:

metrics = model.val()  # assumes `model` has been loaded
print(metrics.box.map)  # mAP50-95
print(metrics.box.map50)  # mAP50
print(metrics.box.map75)  # mAP75
print(metrics.box.maps)  # list of mAP50-95 for each category
print(metrics.box.image_metrics)  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

لإجراء تقييم كامل للأداء، من الضروري مراجعة كل هذه المقاييس. لمزيد من التفاصيل، راجع الميزات الرئيسية لوضع Val.

ما هي مزايا استخدام Ultralytics YOLO للتحقق؟

يوفر استخدام Ultralytics YOLO للتحقق العديد من المزايا:

  • الدقة: يوفر YOLO26 مقاييس أداء دقيقة بما في ذلك mAP50 و mAP75 و mAP50-95.
  • السهولة: تتذكر النماذج إعدادات التدريب الخاصة بها، مما يجعل عملية التحقق مباشرة.
  • المرونة: يمكنك التحقق مقابل نفس مجموعات البيانات أو مجموعات بيانات مختلفة وأحجام صور مختلفة.
  • ضبط المعاملات الفائقة (Hyperparameter Tuning): تساعد مقاييس التحقق في ضبط النماذج بدقة للحصول على أداء أفضل.

تضمن هذه الفوائد تقييم نماذجك بشكل شامل ويمكن تحسينها لتحقيق نتائج متفوقة. تعرف على المزيد حول هذه المزايا في قسم لماذا التحقق باستخدام Ultralytics YOLO .

هل يمكنني التحقق من نموذج YOLO26 الخاص بي باستخدام مجموعة بيانات مخصصة؟

نعم، يمكنك التحقق من نموذج YOLO26 الخاص بك باستخدام مجموعة بيانات مخصصة. حدد المعامل data مع مسار ملف تكوين مجموعة البيانات الخاص بك. يجب أن يتضمن هذا الملف المسار إلى بيانات التحقق.

ملاحظة

يتم إجراء التحقق باستخدام أسماء فئات النموذج نفسه، والتي يمكنك عرضها باستخدام model.names، والتي قد تختلف عن تلك المحددة في ملف تكوين مجموعة البيانات.

مثال في Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map)  # map50-95

مثال باستخدام CLI:

yolo val model=yolo26n.pt data=path/to/your/custom_dataset.yaml

لمزيد من الخيارات القابلة للتخصيص أثناء التحقق، انظر مثال على التحقق باستخدام المعاملات .

كيف يمكنني حفظ نتائج التحقق في ملف JSON في YOLO26؟

لحفظ نتائج التحقق في ملف JSON، يمكنك ضبط المعامل save_json إلى True عند تشغيل التحقق. يمكن القيام بذلك في كل من Python API و CLI.

مثال في Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Save validation results to JSON
metrics = model.val(save_json=True)

مثال باستخدام CLI:

yolo val model=yolo26n.pt save_json=True

تعد هذه الوظيفة مفيدة بشكل خاص لمزيد من التحليل أو التكامل مع أدوات أخرى. تحقق من وسائط التحقق من نموذج YOLO لمزيد من التفاصيل.

التعليقات