Link to this sectionالتحقق من النموذج باستخدام Ultralytics YOLO#
Link to this sectionمقدمة#
يعد التحقق من النموذج خطوة حاسمة في خط أنابيب التعلم الآلي، مما يسمح لك بتقييم جودة النماذج المدربة الخاصة بك. يوفر وضع Val في Ultralytics YOLO26 مجموعة قوية من الأدوات والمقاييس لتقييم أداء نماذج اكتشاف الكائنات الخاصة بك. يعمل هذا الدليل كمورد كامل لفهم كيفية استخدام وضع Val بفعالية لضمان دقة وموثوقية نماذجك.
Watch: Ultralytics Modes Tutorial: Validation
Link to this sectionلماذا التحقق باستخدام Ultralytics YOLO؟#
إليك سبب أهمية استخدام وضع Val الخاص بـ YOLO26:
- الدقة: احصل على مقاييس دقيقة مثل mAP50 وmAP75 وmAP50-95 لتقييم نموذجك بشكل شامل.
- الراحة: استفد من الميزات المدمجة التي تتذكر إعدادات التدريب، مما يبسط عملية التحقق.
- المرونة: تحقق من نموذجك باستخدام نفس مجموعات البيانات أو مجموعات بيانات مختلفة وأحجام صور متنوعة.
- ضبط المعاملات الفائقة: استخدم مقاييس التحقق لضبط نموذجك للحصول على أداء أفضل.
Link to this sectionالميزات الرئيسية لوضع Val#
هذه هي الوظائف البارزة التي يوفرها وضع Val في YOLO26:
- الإعدادات المؤتمتة: تتذكر النماذج تكوينات التدريب الخاصة بها لسهولة التحقق.
- دعم مقاييس متعددة: قيم نموذجك بناءً على مجموعة من مقاييس الدقة.
- واجهة CLI وPython API: اختر من واجهة سطر الأوامر أو Python API بناءً على تفضيلك للتحقق.
- توافق البيانات: يعمل بسلاسة مع مجموعات البيانات المستخدمة أثناء مرحلة التدريب وكذلك مجموعات البيانات المخصصة.
- تتذكر نماذج YOLO26 إعدادات التدريب الخاصة بها تلقائيًا، لذا يمكنك التحقق من نموذج بحجم الصورة نفسه وعلى مجموعة البيانات الأصلية بسهولة باستخدام
yolo val model=yolo26n.ptأوYOLO("yolo26n.pt").val()
Link to this sectionأمثلة الاستخدام#
تحقق من دقة نموذج YOLO26n مدرب على مجموعة بيانات COCO8. لا حاجة إلى وسائط لأن model يحتفظ بـ data التدريب والوسائط كسمات للنموذج. راجع قسم الوسائط أدناه للحصول على قائمة كاملة بوسائط التحقق.
على نظام 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 FNLink to this sectionوسائط للتحقق من نموذج YOLO#
عند التحقق من نماذج YOLO، يمكن ضبط العديد من الوسائط لتحسين عملية التقييم. تتحكم هذه الوسائط في جوانب مثل حجم صورة الإدخال، ومعالجة الدفعات، وعتبات الأداء. فيما يلي تفصيل مفصل لكل وسيط لمساعدتك في تخصيص إعدادات التحقق بفعالية.
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
data | str | None | يحدد مسار ملف تكوين مجموعة البيانات (مثال: coco8.yaml). يجب أن يتضمن هذا الملف مسار بيانات التحقق. |
imgsz | int | 640 | يحدد حجم صور الإدخال. يتم تغيير حجم جميع الصور إلى هذا البعد قبل المعالجة. قد تعمل الأحجام الأكبر على تحسين الدقة للكائنات الصغيرة ولكنها تزيد من وقت الحساب. |
batch | int | 16 | يعين عدد الصور في كل دفعة. تستخدم القيم الأعلى ذاكرة GPU بشكل أكثر كفاءة ولكنها تتطلب المزيد من VRAM. اضبط بناءً على موارد الأجهزة المتاحة. |
save_json | bool | False | إذا كان True، فسيتم حفظ النتائج في ملف JSON لمزيد من التحليل أو التكامل مع أدوات أخرى أو التقديم إلى خوادم التقييم مثل COCO. |
conf | float | 0.001 | يعين الحد الأدنى لعتبة الثقة للاكتشافات. تزيد القيم الأقل من الاسترجاع ولكنها قد تقدم المزيد من النتائج الإيجابية الخاطئة. تُستخدم أثناء التحقق لحساب منحنيات الدقة والاسترجاع. الافتراضي هو 0.01 للتحقق من OBB لتقليل استخدام الذاكرة. |
iou | float | 0.7 | يعين عتبة التقاطع فوق الاتحاد لـ كبت غير الأعظمية. يتحكم في التخلص من الاكتشاف المكرر. |
max_det | int | 300 | يحد من الحد الأقصى لعدد الاكتشافات لكل صورة. مفيد في المشاهد الكثيفة لمنع الاكتشافات المفرطة وإدارة موارد الحوسبة. |
quantize | int أو str | None | دقة التحقق: 16/"fp16" تُمكّن تحقق FP16 على وحدات GPU المدعومة؛ 32/"fp32"/بدون تعيين تعني FP32. يتم تكوين تكميم INT8/PTQ أثناء التصدير، ثم يُستخدم عن طريق التحقق من النموذج المُصدّر. يحل محل علامة half الملغاة. |
device | str | None | يحدد الجهاز للتحقق (cpu، cuda:0، npu، npu:0، إلخ). عند None، يختار تلقائياً أفضل جهاز متاح. يمكن تحديد أجهزة CUDA متعددة بفصل الفواصل. |
dnn | bool | False | إذا كان True، فسيستخدم وحدة OpenCV DNN لاستدلال نموذج ONNX، مما يوفر بديلاً لطرق استدلال PyTorch. |
plots | bool | True | عند ضبطه على True، يقوم بإنشاء وحفظ رسوم بيانية للتنبؤات مقابل الحقيقة الأرضية، ومصفوفات الارتباك، ومنحنيات PR للتقييم المرئي لأداء النموذج. |
classes | list[int] | None | يحدد قائمة بمعرفات الفئات للتقييم. مفيد لتصفية والتركيز فقط على فئات معينة أثناء التقييم. |
rect | bool | True | إذا كان True، يستخدم الاستدلال المستطيل (rectangular inference) للتجميع (batching)، مما يقلل من الحشو (padding) ويزيد من السرعة والكفاءة المحتملة عن طريق معالجة الصور بنسبة العرض إلى الارتفاع الأصلية. |
split | str | 'val' | يحدد تقسيم مجموعة البيانات المستخدم للتحقق من الصحة (val، أو test، أو train). يسمح بالمرونة في اختيار شريحة البيانات لتقييم الأداء. |
project | str | None | اسم دليل المشروع حيث يتم حفظ مخرجات التحقق من الصحة. يساعد في تنظيم النتائج من تجارب أو نماذج مختلفة. |
name | str | None | اسم تشغيل التحقق من الصحة. يُستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين سجلات ومخرجات التحقق من الصحة. |
verbose | bool | True | إذا كان True، يعرض معلومات مفصلة أثناء عملية التحقق من الصحة، بما في ذلك المقاييس لكل فئة، وتقدم الدُفعات (batch progress)، ومعلومات تصحيح الأخطاء الإضافية. |
save_txt | bool | False | إذا كان True، يحفظ نتائج الكشف في ملفات نصية، ملف واحد لكل صورة، وهو مفيد للتحليل الإضافي، أو المعالجة اللاحقة المخصصة، أو التكامل مع أنظمة أخرى. |
save_conf | bool | False | إذا كان True، يتضمن قيم الثقة في الملفات النصية المحفوظة عند تفعيل save_txt، مما يوفر مخرجات أكثر تفصيلاً للتحليل والتصفية. |
workers | int | 8 | عدد سلاسل عمليات العامل (worker threads) لتحميل البيانات. القيم الأعلى يمكن أن تسرع معالجة البيانات ولكن قد تزيد من استخدام CPU. الضبط على 0 يستخدم السلسلة الرئيسية، والتي يمكن أن تكون أكثر استقرارًا في بعض البيئات. |
augment | bool | False | يفعل تعزيز وقت الاختبار (TTA) أثناء التحقق من الصحة، مما قد يحسن دقة الكشف على حساب سرعة الاستدلال من خلال تشغيل الاستدلال على نسخ معدلة من المدخلات. |
agnostic_nms | bool | False | يفعل كبح الحد الأقصى غير المرتبط (Non-Maximum Suppression) على مستوى الفئات، والذي يدمج الصناديق المتداخلة بغض النظر عن فئتها المتوقعة. مفيد للتطبيقات التي تركز على الحالات الفردية. بالنسبة للنماذج الشاملة (YOLO26، YOLOv10)، هذا يمنع فقط ظهور نفس الكشف بتسميات فئات متعددة (IoU=1.0 مكررات) ولا يقوم بقمع يعتمد على عتبة IoU بين الصناديق المتميزة. |
single_cls | bool | False | يعامل جميع الفئات كفئة واحدة أثناء التحقق من الصحة. مفيد لتقييم أداء النموذج في مهام الكشف الثنائي أو عندما لا تكون الفروق بين الفئات مهمة. |
visualize | bool | False | يصور الحقائق الأرضية، والإيجابيات الحقيقية، والإيجابيات الكاذبة، والسلبيات الكاذبة لكل صورة. مفيد لتصحيح الأخطاء وتفسير النموذج. |
show_labels | bool | True | يعرض تسميات الفئات في تصورات التحقق من الصحة عندما يكون visualize=True. اضبط على False للحصول على عرض أوضح للمطابقات والأخطاء. |
show_conf | bool | True | يعرض درجات الثقة في تصورات التحقق من الصحة عندما يكون visualize=True. اضبط على False للحصول على عرض أوضح للمطابقات والأخطاء. |
compile | bool أو str | False | يُفعّل تجميع الرسم البياني torch.compile في PyTorch 2.x مع backend='inductor'. يقبل True → "default"، False → للتعطيل، أو نمط نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يعود إلى الوضع السريع (eager) مع تحذير إذا كان غير مدعوم. |
end2end | bool | None | يتجاوز وضع النهاية إلى النهاية (end-to-end) في نماذج YOLO التي تدعم الاستدلال الخالي من NMS (YOLO26، YOLOv10). ضبطه على False يتيح لك تشغيل التحقق من الصحة باستخدام خط أنابيب NMS التقليدي، مما يسمح لك بالإضافة إلى ذلك باستخدام وسيط iou. |
يلعب كل من هذه الإعدادات دورًا حيويًا في عملية التحقق، مما يسمح بتقييم قابل للتخصيص وفعال لنماذج YOLO. يمكن أن يساعد ضبط هذه المعلمات وفقًا لاحتياجاتك ومواردك الخاصة في تحقيق أفضل توازن بين الدقة والأداء.
Link to this sectionمثال للتحقق مع الوسائط#
Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More
تُظهر الأمثلة أدناه التحقق من نموذج 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")يمكنك أيضًا حفظ نتائج مصفوفة الارتباك بتنسيقات مختلفة باستخدام الكود المقدم.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())يخزن التحقق مقاييس الدقة والاستدعاء و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.
Link to this sectionالأسئلة الشائعة#
Link to this sectionكيف يمكنني التحقق من نموذج 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 للحصول على القائمة الكاملة للمعلمات.
Link to this sectionما المقاييس التي يمكنني الحصول عليها من التحقق من نموذج 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.
Link to this sectionما هي مزايا استخدام Ultralytics YOLO للتحقق؟#
يوفر استخدام Ultralytics YOLO للتحقق العديد من المزايا:
- الدقة: يوفر YOLO26 مقاييس أداء دقيقة بما في ذلك mAP50 وmAP75 وmAP50-95.
- الراحة: تتذكر النماذج إعدادات التدريب الخاصة بها، مما يجعل التحقق مباشرًا.
- المرونة: يمكنك التحقق مقابل نفس مجموعات البيانات أو مجموعات بيانات مختلفة وأحجام صور متنوعة.
- ضبط المعاملات الفائقة: تساعد مقاييس التحقق في ضبط النماذج للحصول على أداء أفضل.
تضمن هذه المزايا تقييم نماذجك بدقة ويمكن تحسينها للحصول على نتائج متفوقة. تعرف على المزيد حول هذه المزايا في قسم لماذا التحقق باستخدام Ultralytics YOLO.
Link to this sectionهل يمكنني التحقق من نموذج 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لمزيد من الخيارات القابلة للتخصيص أثناء التحقق، راجع قسم مثال للتحقق مع الوسائط.
Link to this sectionكيف يمكنني حفظ نتائج التحقق في ملف 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 لمزيد من التفاصيل.