التحقق من النموذج باستخدام Ultralytics YOLO
مقدمة
يعد التحقق خطوة حاسمة في تعلم الآلة مسار العمل، مما يسمح لك بتقييم جودة النماذج المدربة الخاصة بك. يوفر وضع 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، قد تتلقى 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، يمكن ضبط العديد من الوسائط لتحسين عملية التقييم. تتحكم هذه الوسائط في جوانب مثل حجم صورة الإدخال، ومعالجة الدُفعات، وعتبات الأداء. فيما يلي تفصيل دقيق لكل وسيط لمساعدتك في تخصيص إعدادات التحقق بفعالية.
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
data | str | None | يحدد المسار إلى ملف تكوين مجموعة البيانات (مثل coco8.yaml). يجب أن يتضمن هذا الملف المسار إلى بيانات التحقق. |
imgsz | int | 640 | يحدد حجم صور الإدخال. يتم تغيير حجم جميع الصور إلى هذا البعد قبل المعالجة. قد تؤدي الأحجام الأكبر إلى تحسين الدقة للكائنات الصغيرة ولكنها تزيد من وقت الحساب. |
batch | int | 16 | يضبط عدد الصور لكل دُفعة. تستخدم القيم الأعلى ذاكرة GPU بكفاءة أكبر ولكنها تتطلب المزيد من VRAM. اضبط بناءً على موارد الأجهزة المتاحة. |
save_json | bool | False | إذا True، يحفظ النتائج في ملف JSON لمزيد من التحليل، أو التكامل مع أدوات أخرى، أو الإرسال إلى خوادم التقييم مثل COCO. |
conf | float | 0.001 | يضبط حد الثقة الأدنى للاكتشافات. القيم الأقل تزيد من الاسترجاع (recall) ولكن قد تؤدي إلى المزيد من الإيجابيات الكاذبة. تُستخدم أثناء التحقق لحساب منحنيات الدقة والاسترجاع. |
iou | float | 0.7 | يضبط عتبة Intersection Over Union لـ Non-Maximum Suppression للتحكم في التخلص من الاكتشافات المكررة. |
max_det | int | 300 | يحدد الحد الأقصى لعدد الاكتشافات لكل صورة. مفيد في المشاهد المزدحمة لمنع الاكتشافات المفرطة وإدارة الموارد الحسابية. |
half | bool | False | يُمكّن حساب الدقة النصفية (FP16)، مما يقلل من استخدام الذاكرة ويزيد من السرعة مع تأثير ضئيل على الدقة. |
device | str | None | يحدد الجهاز للتحقق (cpu, cuda:0, npu, npu:0، إلخ). عندما None، يتم تحديد أفضل جهاز متاح تلقائيًا. يمكن تحديد أجهزة CUDA متعددة بفواصل. |
dnn | bool | False | إذا True، يستخدم وحدة OpenCV DNN لاستنتاج نموذج ONNX، مما يوفر بديلاً لطرق استنتاج PyTorch. |
plots | bool | True | عند التعيين على True، يتم إنشاء وحفظ مخططات للتنبؤات مقابل الحقيقة الأساسية (ground truth)، ومصفوفات الارتباك، ومنحنيات PR للتقييم المرئي لأداء النموذج. |
classes | list[int] | None | يحدد قائمة بمعرفات الفئات للتقييم. مفيد لتصفية والتركيز فقط على فئات معينة أثناء التقييم. |
rect | bool | True | إذا True، يستخدم الاستنتاج المستطيل للدفعة، مما يقلل من الحشو (padding) ويزيد من السرعة والكفاءة من خلال معالجة الصور بنسبة العرض إلى الارتفاع الأصلية. |
split | str | 'val' | يحدد تقسيم مجموعة البيانات المستخدم للتحقق (val, test، أو train). يسمح بالمرونة في اختيار جزء البيانات لتقييم الأداء. |
project | str | None | اسم دليل المشروع حيث يتم حفظ مخرجات التحقق. يساعد في تنظيم النتائج من تجارب أو نماذج مختلفة. |
name | str | None | اسم تشغيل التحقق. يُستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين سجلات ومخرجات التحقق. |
verbose | bool | True | إذا True، يعرض معلومات مفصلة أثناء عملية التحقق، بما في ذلك مقاييس كل فئة، وتقدم الدُفعة، ومعلومات تصحيح إضافية. |
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 | يُصور الحقائق الأساسية، والإيجابيات الحقيقية، والإيجابيات الكاذبة، والسلبيات الكاذبة لكل صورة. مفيد لتصحيح الأخطاء وتفسير النموذج. |
compile | bool أو str | False | يُمكّن تجميع الرسم البياني لـ PyTorch 2.x torch.compile باستخدام backend='inductor'. يقبل True → "default", False ← للتعطيل، أو وضع نصي مثل "default", "reduce-overhead", "max-autotune-no-cudagraphs". يعود إلى الوضع السريع (eager) مع تحذير إذا كان غير مدعوم. |
end2end | bool | None | يتجاوز الوضع الشامل في نماذج YOLO التي تدعم الاستنتاج بدون NMS (YOLO26, YOLOv10). تعيينه على False يتيح لك تشغيل التحقق باستخدام مسار NMS التقليدي، مما يسمح لك أيضًا بالاستفادة من iou معامل. |
يلعب كل من هذه الإعدادات دورًا حيويًا في عملية التحقق، مما يسمح بتقييم قابل للتخصيص وفعال لنماذج YOLO. يمكن أن يساعد ضبط هذه المعلمات وفقًا لاحتياجاتك ومواردك الخاصة في تحقيق أفضل توازن بين الدقة والأداء.
مثال على التحقق باستخدام المعاملات
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")يمكنك أيضًا حفظ نتائج ConfusionMatrix بتنسيقات مختلفة باستخدام الكود المقدم.
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
للتقسيم (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 لمزيد من التفاصيل.