التحقق من النموذج باستخدام 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 | يحدد المسار إلى ملف YAML لمجموعة البيانات (مثل coco8.yaml)، والذي يجب أن يتضمن مسار بيانات التحقق. وبدلاً من ذلك، يقبل التصنيف دليل مجموعة البيانات أو اسم مجموعة بيانات مدمج (مثل imagenet10). |
imgsz | int | 640 | يحدد حجم صور الإدخال. يتم تغيير حجم جميع الصور إلى هذا البعد قبل المعالجة. قد تعمل الأحجام الأكبر على تحسين الدقة للكائنات الصغيرة ولكنها تزيد من وقت الحساب. |
batch | int | 16 | يعين عدد الصور في كل دفعة. تستخدم القيم الأعلى ذاكرة GPU بشكل أكثر كفاءة ولكنها تتطلب المزيد من VRAM. اضبط بناءً على موارد الأجهزة المتاحة. |
save_json | bool | False | إذا كان True، يحفظ النتائج في ملف JSON لمزيد من التحليل، أو التكامل مع أدوات أخرى، أو الإرسال إلى خوادم التقييم مثل COCO. |
conf | float | 0.001 | يحدد الحد الأدنى لعتبة الثقة لعمليات الكشف. تؤدي القيم الأقل إلى زيادة استرجاع المعلومات ولكن قد تؤدي إلى المزيد من النتائج الإيجابية الخاطئة. تفترض منحنيات الدقة والاسترجاع افتراضياً 0.001؛ وتستخدم مصفوفات الارتباك الخاصة بالكشف قيمة صريحة conf، أو 0.25 عند حذفها. يستخدم ملخص الدقة والاسترجاع ثقة max-F1، لذا فقد تختلف عن القيم المشتقة من confusion_matrix.png. القيمة الافتراضية هي 0.01 للتحقق من صحة OBB لتقليل استخدام الذاكرة. |
iou | float | 0.7 | يُعيّن عتبة التقاطع فوق الاتحاد لـ إلغاء القمع غير الأقصى. يتحكم في القضاء على الكشف المكرر. |
max_det | int | 300 | يحد من الحد الأقصى لعدد الاكتشافات لكل صورة. مفيد في المشاهد الكثيفة لمنع الاكتشافات المفرطة وإدارة موارد الحوسبة. |
quantize | int أو str | None | دقة التحقق: يُمكّن 16/"fp16" تحقق FP16 على وحدات معالجة الرسومات المدعومة؛ ويعتبر 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، فإنه يستخدم الاستدلال المستطيل للمعالجة المجمعة، مما يقلل من الحشو وربما يزيد من السرعة والكفاءة من خلال معالجة الصور بنسب أبعادها الأصلية. يتم تجاهل هذا للتحقق من الصحة depth، والذي يمد كل صورة لتصبح مربعًا ثابتًا imgsz بدلاً من الحشو. |
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) أثناء التحقق، مما قد يحسين دقة الكشف على حساب سرعة الاستدلال عن طريق تشغيل الاستدلال على نسخ محولة من المدخلات. متاح فقط لنماذج Ultralytics المصنوعة بـ PyTorch. |
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 | يمكّن تجميع رسم البياني PyTorch 2.x torch.compile باستخدام backend='inductor'. يقبل True ← "default"، False ← تعطيل، أو وضع نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يتراجع إلى الوضع الحماسي (eager) مع تحذير إذا كان غير مدعوم. |
channels_last | bool | None | يستخدم تنسيق الذاكرة channels_last (NHWC) للتحقق الأصلي في PyTorch. يقوم None بتمكينه تلقائياً للتحقق المستقل على وحدات المعالجة المركزية x86 التي تعمل بنظام Linux/Windows والممكن فيها oneDNN، بينما يقوم False بتعطيله، ويطلب True ذلك على وحدات المعالجة المركزية x86 المدعومة أو أجهزة CUDA. تظل بنيات ARM64، وMPS، ووحدات المعالجة المركزية بدون oneDNN، والتنسيقات المصدرة دون تغيير؛ ويحتفظ التحقق أثناء التدريب بتخطيط نموذج التدريب. |
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.
| الطريقة (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 لمزيد من التفاصيل.