رؤية YOLO 2026:

التحقق من النموذج باستخدام 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يحدد المسار إلى ملف YAML لمجموعة البيانات (مثل coco8.yaml)، والذي يجب أن يتضمن مسار بيانات التحقق. وبدلاً من ذلك، يقبل التصنيف دليل مجموعة البيانات أو اسم مجموعة بيانات مدمج (مثل imagenet10).
imgszint640يحدد حجم صور الإدخال. يتم تغيير حجم جميع الصور إلى هذا البعد قبل المعالجة. قد تعمل الأحجام الأكبر على تحسين الدقة للكائنات الصغيرة ولكنها تزيد من وقت الحساب.
batchint16يعين عدد الصور في كل دفعة. تستخدم القيم الأعلى ذاكرة GPU بشكل أكثر كفاءة ولكنها تتطلب المزيد من VRAM. اضبط بناءً على موارد الأجهزة المتاحة.
save_jsonboolFalseإذا كان True، يحفظ النتائج في ملف JSON لمزيد من التحليل، أو التكامل مع أدوات أخرى، أو الإرسال إلى خوادم التقييم مثل COCO.
conffloat0.001يحدد الحد الأدنى لعتبة الثقة لعمليات الكشف. تؤدي القيم الأقل إلى زيادة استرجاع المعلومات ولكن قد تؤدي إلى المزيد من النتائج الإيجابية الخاطئة. تفترض منحنيات الدقة والاسترجاع افتراضياً 0.001؛ وتستخدم مصفوفات الارتباك الخاصة بالكشف قيمة صريحة conf، أو 0.25 عند حذفها. يستخدم ملخص الدقة والاسترجاع ثقة max-F1، لذا فقد تختلف عن القيم المشتقة من confusion_matrix.png. القيمة الافتراضية هي 0.01 للتحقق من صحة OBB لتقليل استخدام الذاكرة.
ioufloat0.7يُعيّن عتبة التقاطع فوق الاتحاد لـ إلغاء القمع غير الأقصى. يتحكم في القضاء على الكشف المكرر.
max_detint300يحد من الحد الأقصى لعدد الاكتشافات لكل صورة. مفيد في المشاهد الكثيفة لمنع الاكتشافات المفرطة وإدارة موارد الحوسبة.
quantizeint أو strNoneدقة التحقق: يُمكّن 16/"fp16" تحقق FP16 على وحدات معالجة الرسومات المدعومة؛ ويعتبر 32/"fp32"/غير المعين هو FP32. يتم تكوين تقييس INT8/PTQ أثناء التصدير، ثم يُستخدم عن طريق التحقق من النموذج المُصدَّر. يحل محل علامة half المُهملة.
devicestrNoneيحدد جهاز التحقق (cpu، أو cuda:0، أو npu، أو npu:0، إلخ). عندما يكون None، فإنه يحدد تلقائيًا أفضل جهاز متاح. يمكن تحديد وحدات معالجة رسومات CUDA متعددة مفصولة بفواصل.
dnnboolFalseفي حال استخدام True لوحدة OpenCV DNN لاستدلال نموذج ONNX، مما يوفر بديلاً لطرق استدلال PyTorch.
plotsboolTrueعند التعيين إلى True، يُنشئ ويحفظ مخططات التنبؤات مقابل الحقيقة الأرضية، ومصفوفات الارتباك، ومنحنيات PR للتقييم المرئي لأداء النموذج.
classeslist[int]Noneيحدد قائمة بمعرفات الفئات للتقييم. مفيد لتصفية والتركيز فقط على فئات معينة أثناء التقييم.
rectboolTrueإذا كان True، فإنه يستخدم الاستدلال المستطيل للمعالجة المجمعة، مما يقلل من الحشو وربما يزيد من السرعة والكفاءة من خلال معالجة الصور بنسب أبعادها الأصلية. يتم تجاهل هذا للتحقق من الصحة depth، والذي يمد كل صورة لتصبح مربعًا ثابتًا imgsz بدلاً من الحشو.
splitstr'val'يحدد تقسيم مجموعة البيانات المراد استخدامه للتحقق (val، أو test، أو train). يتيح المرونة في اختيار قطاع البيانات لتقييم الأداء.
projectstrNoneاسم دليل المشروع حيث يتم حفظ مخرجات التحقق من الصحة. يساعد في تنظيم النتائج من تجارب أو نماذج مختلفة.
namestrNoneاسم تشغيل التحقق من الصحة. يُستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين سجلات ومخرجات التحقق من الصحة.
verboseboolTrueإذا كان True، يعرض معلومات مفصلة أثناء عملية التحقق، بما في ذلك مقاييس كل فئة، وتقدم الدفعة، ومعلومات تصحيح الأخطاء الإضافية.
save_txtboolFalseإذا كان True، يحفظ نتائج الكشف في ملفات نصية، مع ملف واحد لكل صورة، وهو مفيد لمزيد من التحليل، أو المعالجة اللاحقة المخصصة، أو التكامل مع أنظمة أخرى.
save_confboolFalseإذا كان True، يتضمن قيم الثقة في الملفات النصية المحفوظة عند تمكين save_txt، مما يوفر إخراجًا أكثر تفصيلًا للتحليل والتصفية.
workersint8عدد سلاسل عمليات العامل (worker threads) لتحميل البيانات. القيم الأعلى يمكن أن تسرع معالجة البيانات ولكن قد تزيد من استخدام CPU. الضبط على 0 يستخدم السلسلة الرئيسية، والتي يمكن أن تكون أكثر استقرارًا في بعض البيئات.
augmentboolFalseيُفعل تحسين وقت الاختبار (TTA) أثناء التحقق، مما قد يحسين دقة الكشف على حساب سرعة الاستدلال عن طريق تشغيل الاستدلال على نسخ محولة من المدخلات. متاح فقط لنماذج Ultralytics المصنوعة بـ PyTorch.
agnostic_nmsboolFalseيُفَعِّل كتم التداخل غير الأقصى المستقل عن الفئة، حيث يكتم الصناديق المتراكبة ذات النقاط الأقل بغض النظر عن فئتها المتوقعة. مفيد للبيقات المرتكزة على الكائنات. بالنسبة للنماذج ذات النهاية إلى النهاية (YOLO26، YOLOv10)، فإن هذا يمنع فقط ظهور نفس الاكتشاف بتسميات فئات متعددة (نسخ متطابقة IoU=1.0) ولا ينفذ كتماً يعتمد على عتبة IoU بين الصناديق المتميزة.
single_clsboolFalseيعامل جميع الفئات كفئة واحدة أثناء التحقق من الصحة. مفيد لتقييم أداء النموذج في مهام الكشف الثنائي أو عندما لا تكون الفروق بين الفئات مهمة.
visualizeboolFalseيصور الحقائق الأرضية، والإيجابيات الحقيقية، والإيجابيات الكاذبة، والسلبيات الكاذبة لكل صورة. مفيد لتصحيح الأخطاء وتفسير النموذج.
show_labelsboolTrueيعرض تسميات الفئات في تصورات التحقق عند visualize=True. اضبط على False لعرض أنظف للمباريات والأخطاء.
show_confboolTrueيعرض درجات الثقة في تصورات التحقق عند visualize=True. اضبط على False لعرض أنظف للمباريات والأخطاء.
compilebool أو strFalseيمكّن تجميع رسم البياني PyTorch 2.x torch.compile باستخدام backend='inductor'. يقبل True"default"، False ← تعطيل، أو وضع نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يتراجع إلى الوضع الحماسي (eager) مع تحذير إذا كان غير مدعوم.
channels_lastboolNoneيستخدم تنسيق الذاكرة channels_last (NHWC) للتحقق الأصلي في PyTorch. يقوم None بتمكينه تلقائياً للتحقق المستقل على وحدات المعالجة المركزية x86 التي تعمل بنظام Linux/Windows والممكن فيها oneDNN، بينما يقوم False بتعطيله، ويطلب True ذلك على وحدات المعالجة المركزية x86 المدعومة أو أجهزة CUDA. تظل بنيات ARM64، وMPS، ووحدات المعالجة المركزية بدون oneDNN، والتنسيقات المصدرة دون تغيير؛ ويحتفظ التحقق أثناء التدريب بتخطيط نموذج التدريب.
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

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

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 للتجزئة، و results.pose.image_metrics لوضعية الجسم بعد اكتمال التحقق.

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عدد التوقعات الإيجابية الصحيحة للصورة.
fpعدد التوقعات الإيجابية الخاطئة للصورة.
fnعدد التوقعات السلبية الخاطئة للصورة.

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

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

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

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

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

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

  • للتحقق من نموذج 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 العديد من المقاييس الرئيسية لتقييم أداء النموذج. وتشمل هذه:

    • 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 للتحقق العديد من المزايا:

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

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

  • نعم، يمكنك التحقق من صحة نموذج YOLO26 الخاص بك باستخدام مجموعة بيانات مخصصة. حدد معامل data مع مسار ملف YAML الخاص بمجموعة البيانات، والذي يجب أن يتضمن مسار بيانات التحقق من الصحة. وبدلاً من ذلك، تأخذ مهام التصنيف دليل مجموعة بيانات أو اسم مجموعة بيانات مدمج (على سبيل المثال، imagenet10).

    ملاحظة

    يتم إجراء التحقق من الصحة باستخدام أسماء فئات النموذج الخاصة، والتي يمكنك عرضها باستخدام 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، يمكنك تعيين الوسيط 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 لمزيد من التفاصيل.

التعليقات