التحقق من النموذج باستخدام Ultralytics YOLO
مقدمة
تعد عملية التحقق خطوة حاسمة في خط أنابيب تعلم الآلة، حيث تتيح لك تقييم جودة نماذجك المدربة. يوفر وضع Val في Ultralytics YOLO26 مجموعة قوية من الأدوات والمقاييس لتقييم أداء نماذج اكتشاف الكائنات الخاصة بك. يعد هذا الدليل مورداً شاملاً لفهم كيفية استخدام وضع Val بفعالية لضمان أن تكون نماذجك دقيقة وموثوقة.
Watch: Ultralytics Modes Tutorial: Validation
لماذا التحقق باستخدام Ultralytics YOLO؟
إليك سبب كون استخدام وضع Val في YOLO26 مفيداً:
- الدقة: احصل على مقاييس دقيقة مثل mAP50 و mAP75 و mAP50-95 لتقييم نموذجك بشكل شامل.
- السهولة: استخدم الميزات المضمنة التي تتذكر إعدادات التدريب، مما يبسط عملية التحقق.
- المرونة: تحقق من نموذجك باستخدام نفس مجموعات البيانات وأحجام الصور أو مجموعات وأحجام مختلفة.
- ضبط المعاملات الفائقة: استخدم مقاييس التحقق لضبط نموذجك للحصول على أداء أفضل.
الميزات الرئيسية لوضع Val
هذه هي الوظائف البارزة التي يوفرها وضع Val في YOLO26:
- الإعدادات المؤتمتة: تتذكر النماذج تكوينات تدريبها لإجراء تحقق مباشر.
- دعم المقاييس المتعددة: قيّم نموذجك بناءً على مجموعة من مقاييس الدقة.
- واجهة سطر الأوامر (CLI) وواجهة برمجة تطبيقات Python: اختر من بين واجهة سطر الأوامر أو واجهة برمجة تطبيقات Python بناءً على تفضيلك للتحقق.
- توافق البيانات: يعمل بسلاسة مع مجموعات البيانات المستخدمة خلال مرحلة التدريب بالإضافة إلى مجموعات البيانات المخصصة.
- تتذكر نماذج 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 | يحدد عتبة الثقة الدنيا للاكتشافات. تزيد القيم المنخفضة من الاستدعاء ولكنها قد تقدم المزيد من النتائج الإيجابية الكاذبة. تستخدم أثناء التحقق لحساب منحنيات الدقة والاستدعاء. |
iou | float | 0.7 | يحدد عتبة التقاطع فوق الاتحاد لـ قمع النطاق غير الأقصى. يتحكم في القضاء على الاكتشاف المكرر. |
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، يقوم بإنشاء وحفظ مخططات للتنبؤات مقابل الحقيقة الأرضية، ومصفوفات الارتباك، ومنحنيات PR للتقييم المرئي لأداء النموذج. |
classes | list[int] | None | يحدد قائمة بمعرفات الفئات لتقييمها. مفيد للتصفية والتركيز فقط على فئات معينة أثناء التقييم. |
rect | bool | True | إذا كانت القيمة True، يتم استخدام الاستنتاج المستطيل للتجميع، مما يقلل من الحشو وربما يزيد السرعة والكفاءة من خلال معالجة الصور بنسبة العرض إلى الارتفاع الأصلية الخاصة بها. |
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 | عدد سلاسل العمليات المخصصة لتحميل البيانات. يمكن أن تؤدي القيم الأعلى إلى تسريع المعالجة الأولية للبيانات ولكنها قد تزيد من استخدام CPU. الضبط على 0 يستخدم السلسلة الرئيسية، والتي يمكن أن تكون أكثر استقراراً في بعض البيئات. |
augment | bool | False | يفعل زيادة وقت الاختبار (TTA) أثناء التحقق، مما قد يحسن دقة الاكتشاف على حساب سرعة الاستنتاج من خلال تشغيل الاستنتاج على إصدارات محولة من المدخلات. |
agnostic_nms | bool | False | يفعل قمع النطاق غير الأقصى غير المرتبط بالفئة، والذي يدمج الصناديق المتداخلة بغض النظر عن فئتها المتوقعة. مفيد للتطبيقات التي تركز على الحالات الفردية. بالنسبة للنماذج الشاملة (YOLO26، YOLOv10)، يمنع هذا فقط ظهور نفس الاكتشاف بتسميات فئات متعددة (تكرارات IoU=1.0) ولا يؤدي إلى قمع قائم على عتبة IoU بين الصناديق المميزة. |
single_cls | bool | False | يعامل جميع الفئات كفئة واحدة أثناء التحقق. مفيد لتقييم أداء النموذج في مهام الاكتشاف الثنائي أو عندما لا تكون تمييزات الفئات مهمة. |
visualize | bool | False | يتصور الحقائق الأرضية، والإيجابيات الحقيقية، والإيجابيات الكاذبة، والسلبيات الكاذبة لكل صورة. مفيد لتصحيح الأخطاء وتفسير النموذج. |
compile | bool or str | False | يُفعل تجميع الرسوم البيانية لـ PyTorch 2.x torch.compile باستخدام backend='inductor'. يقبل True → "default"، False → للتعطيل، أو وضع نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يعود إلى التنفيذ الفوري مع تحذير إذا كان غير مدعوم. |
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")يمكنك أيضاً حفظ نتائج مصفوفة الارتباك بتنسيقات مختلفة باستخدام الكود المقدم.
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.
| الطريقة | نوع الإرجاع | الوصف |
|---|---|---|
summary() | List[Dict[str, Any]] | تحول نتائج التحقق إلى قاموس ملخص. |
to_df() | DataFrame | تُرجع نتائج التحقق كـ Polars DataFrame مهيكل. |
to_csv() | str | تُصدر نتائج التحقق بتنسيق CSV وتُرجع سلسلة CSV. |
to_json() | str | تُصدر نتائج التحقق بتنسيق JSON وتُرجع سلسلة JSON. |
لمزيد من التفاصيل، راجع توثيق فئة DataExportMixin.
الأسئلة الشائعة
كيف أتحقق من نموذج YOLO26 الخاص بي باستخدام Ultralytics؟
للتحقق من نموذج YOLO26 الخاص بك، يمكنك استخدام وضع Val الذي توفره Ultralytics. على سبيل المثال، باستخدام واجهة برمجة تطبيقات Python، يمكنك تحميل نموذج وتشغيل التحقق باستخدام:
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، يمكنك الوصول إلى هذه المقاييس كما يلي:
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.
- السهولة: تتذكر النماذج إعدادات تدريبها، مما يجعل التحقق مباشراً.
- المرونة: يمكنك التحقق مقابل نفس مجموعات البيانات وأحجام الصور أو مجموعات وأحجام مختلفة.
- ضبط المعاملات الفائقة: تساعد مقاييس التحقق في ضبط النماذج للحصول على أداء أفضل.
تضمن هذه الفوائد تقييم نماذجك بدقة ويمكن تحسينها للحصول على نتائج فائقة. تعرف على المزيد حول هذه المزايا في قسم لماذا التحقق باستخدام 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 و 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 لمزيد من التفاصيل.