Link to this sectionالتحقق من صحة النموذج باستخدام Ultralytics YOLO#
Link to this sectionمقدمة#
يعد التحقق من الصحة خطوة حاسمة في خط أنابيب تعلم الآلة، مما يسمح لك بتقييم جودة نماذجك المدربة. يوفر وضع التحقق (Val mode) في Ultralytics YOLO26 مجموعة قوية من الأدوات والمقاييس لتقييم أداء نماذج اكتشاف الكائنات الخاصة بك. يعد هذا الدليل مورداً كاملاً لفهم كيفية استخدام وضع التحقق بفعالية لضمان دقة وموثوقية نماذجك.
Watch: Ultralytics Modes Tutorial: Validation
Link to this sectionلماذا يتم التحقق من الصحة باستخدام Ultralytics YOLO؟#
إليك سبب كون استخدام وضع التحقق في YOLO26 مفيداً:
- الدقة: احصل على مقاييس دقيقة مثل mAP50 وmAP75 وmAP50-95 لتقييم نموذجك بشكل شامل.
- الراحة: استفد من الميزات المدمجة التي تتذكر إعدادات التدريب، مما يبسط عملية التحقق من الصحة.
- المرونة: تحقق من صحة نموذجك باستخدام مجموعات بيانات وأحجام صور مماثلة أو مختلفة.
- ضبط المعاملات الفائقة: استخدم مقاييس التحقق لضبط نموذجك لتحقيق أداء أفضل.
Link to this sectionالميزات الرئيسية لوضع التحقق (Val Mode)#
هذه هي الوظائف البارزة التي يوفرها وضع التحقق في YOLO26:
- الإعدادات المؤتمتة: تتذكر النماذج تكوينات تدريبها لإجراء تحقق مباشر من الصحة.
- دعم المقاييس المتعددة: قيّم نموذجك بناءً على مجموعة من مقاييس الدقة.
- واجهة سطر الأوامر (CLI) وواجهة برمجة تطبيقات Python: اختر بين واجهة سطر الأوامر أو واجهة برمجة تطبيقات Python بناءً على تفضيلك للتحقق من الصحة.
- توافق البيانات: يعمل بسلاسة مع مجموعات البيانات المستخدمة أثناء مرحلة التدريب وكذلك مجموعات البيانات المخصصة.
- تتذكر نماذج 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 | يحدد الحد الأدنى لعتبة الثقة للاكتشافات. القيم الأقل تزيد من معدل الاستدعاء (Recall) ولكنها قد تؤدي إلى المزيد من الإيجابيات الكاذبة. يُستخدم أثناء التحقق لحساب منحنيات الدقة والاستدعاء. القيمة الافتراضية هي 0.01 للتحقق من OBB لتقليل استخدام الذاكرة. |
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 | يصور الحقائق الأرضية، والإيجابيات الحقيقية، والإيجابيات الكاذبة، والسلبيات الكاذبة لكل صورة. مفيد لتصحيح الأخطاء وتفسير النموذج. |
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". يعود إلى التنفيذ الفوري مع تحذير إذا كان غير مدعوم. |
end2end | bool | None | يتجاوز الوضع الشامل في نماذج 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")يمكنك أيضاً حفظ نتائج 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 للتجزئة، و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.
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لإجراء تقييم أداء كامل، من الضروري مراجعة جميع هذه المقاييس. لمزيد من التفاصيل، راجع الميزات الرئيسية لوضع التحقق.
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 لمزيد من التفاصيل.