تقييم أداء النموذج باستخدام Ultralytics YOLO#
تصور النتائج المعيارية#
مقدمة#
بمجرد تدريب نموذجك والتحقق من صحته، فإن الخطوة المنطقية التالية هي تقييم أدائه في سيناريوهات مختلفة في العالم الحقيقي. يخدم وضع المعايير في Ultralytics YOLO26 هذا الغرض من خلال توفير إطار عمل قوي لتقييم السرعة والدقة الخاصة بنموذجك عبر مجموعة من تنسيقات التصدير.
راجع معاينة YOLO27 غير المُصْدرة للحصول على تقييمات أولية للسرعة.
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
لماذا يُعد وضع المعايير أمراً بالغ الأهمية؟#
- قرارات مستنيرة: احصل على رؤى حول المفاضلات بين السرعة والدقة.
- تخصيص الموارد: افهم كيف تؤدي تنسيقات التصدير المختلفة على الأجهزة المختلفة.
- التحسين: تعرف على تنسيق التصدير الذي يوفر أفضل أداء لحالة الاستخدام الخاصة بك.
- كفاءة التكلفة: استفد بشكل أكثر كفاءة من موارد الأجهزة بناءً على نتائج المعايير.
المقاييس الرئيسية في وضع المعايير#
- mAP50-95: لكشف الكائنات، والتقسيم، وتقدير الوضعية.
- accuracy_top1: لتصنيف الصور.
- وقت الاستدلال: الوقت المستغرق لكل صورة بالميلي ثانية.
تنسيقات التصدير المدعومة#
- ONNX: للحصول على أداء مثالي لوحدة المعالجة المركزية (CPU)
- TensorRT: لأقصى كفاءة لوحدة معالجة الرسومات (GPU)
- OpenVINO: لتحسين أجهزة Intel
- CoreML وTensorFlow SavedModel والمزيد: لتلبية احتياجات النشر المختلفة.
- قم بالتصدير إلى ONNX أو OpenVINO لتسريع وحدة المعالجة المركزية (CPU) بنسبة تصل إلى 3 أضعاف.
- قم بالتصدير إلى TensorRT لتسريع وحدة معالجة الرسومات (GPU) بنسبة تصل إلى 5 أضعاف.
أمثلة على الاستخدام#
قم بتثبيت Ultralytics مع تبعيات التصدير قبل إجراء المعايير لتجنب الحزم المفقودة.
pip install ultralytics[export]قم بتشغيل معايير YOLO26n عبر جميع تنسيقات التصدير المدعومة (ONNX، وTensorRT، وما إلى ذلك). راجع قسم الوسائط أدناه للحصول على قائمة كاملة بخيارات التصدير.
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)
# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")الوسائط#
تتيح الوسائط مثل model، وdata، وimgsz، وquantize، وdevice، وverbose، وformat للمستخدمين المرونة لضبط المعايير بدقة لتناسب احتياجاتهم الخاصة ومقارنة أداء تنسيقات التصدير المختلفة بسهولة.
| المفتاح | القيمة الافتراضية | الوصف |
|---|---|---|
model | None | يحدد مسار ملف النموذج. يقبل تنسيقَي .pt و.yaml، على سبيل المثال، "yolo26n.pt" للنماذج المدربة مسبقاً أو ملفات التكوين. |
data | None | مسار ملف YAML الخاص بمجموعة البيانات لإجراء المعايير، والذي يتضمن عادةً المسارات والإعدادات لبيانات التحقق من الصحة. مثال: "coco8.yaml". يأخذ التصنيف بدلاً من ذلك دليلاً لمجموعة البيانات أو اسم مجموعة بيانات مدمج (على سبيل المثال، imagenet10). |
imgsz | 640 | حجم صورة الإدخال للنموذج. يجب أن يكون عدداً صحيحاً واحداً للصور المربعة (على سبيل المثال، 640)؛ يدعم benchmark() أحجام الصور المربعة فقط. |
quantize | None | الدقة المطلوبة: 16 (FP16) أو 8 (INT8؛ تتطلب مخططات PTQ معايرة data/fraction، بينما لا تتطلب مخططات الأوزان فقط ذلك)؛ 32/غير المُحدد هو FP32 حيثما يدعم التنسيق ذلك - التنسيق الذي لا يمكنه تصدير FP32 يرفض 32 صريحاً أو يتراجع إلى الدقة التي يتطلبها. لا يتم تصدير صف PyTorch الأصلي: يؤثر 16 وحده عليه، حيث يحدد استدلال FP16، بينما يقوم 8 و32 وغير المُحدد بتشغيل FP32. يقوم كل تنسيق بعد ذلك بتشغيل الاستدلال بدقة وقت التشغيل الخاص به. يحل محل علامات half/int8 المهملة. |
device | 'cpu' | يحدد جهاز (أجهزة) الحساب لإجراء المعايير، مثل "cpu" أو "cuda:0". |
verbose | False | يتحكم في مستوى التفاصيل في مخرجات السجل. اضبط verbose=True للحصول على سجلات مفصلة. |
eps | 0.001 | إبسيلون صغير (بالميلي ثانية) يضاف إلى وقت الاستدلال لكل صورة قبل تحويله إلى إطار في الثانية (FPS)، لمنع القسمة على صفر. نادرًا ما يتم تغييره. |
format | '' | يقيم معايير تنسيق التصدير المحدد فقط (على سبيل المثال، format=onnx). اترك الحقل فارغاً لاختبار كل تنسيق مدعوم تلقائياً. |
تستخدم دالة benchmark() المستقلة (from ultralytics.utils.benchmarks import benchmark) افتراضيات توقيعها الخاصة بدلاً من قيم الجدول أعلاه، وتحديداً model="yolo26n.pt" وimgsz=160؛ قم بتمرير imgsz صراحةً ليطابق واجهة سطر الأوامر (CLI) yolo benchmark.
تنسيقات التصدير#
ستحاول المعايير التشغيل تلقائياً على جميع تنسيقات التصدير الممكنة المدرجة أدناه. بدلاً من ذلك، يمكنك تشغيل المعايير لتنسيق معين باستخدام الوسائط format، والتي تقبل أي من التنسيقات المذكورة أدناه.
| التنسيق | وسيط format | النموذج | البيانات الوصفية | الوسائط |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz، quantize، dynamic، nms، batch، device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz، quantize، dynamic، simplify، opset، nms، batch، data، fraction، device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz، quantize، dynamic، nms، batch، data، fraction، device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz، quantize، dynamic، simplify، opset، workspace، nms، batch، data، fraction، device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz، dynamic، quantize، nms، batch، device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz، keras، quantize، opset، nms، batch، data، fraction، device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz، opset، batch، device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz، quantize، opset، data، fraction، device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz، batch، device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz، batch، dynamic، quantize، simplify، opset، nms، device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz، quantize، batch، device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz، quantize، data، fraction، nms، device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz، batch، name، quantize، simplify، opset، data، fraction، device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz، batch، device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz، batch، quantize، data، fraction، device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz، quantize، simplify، opset، data، optimize، device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz، batch، name، quantize، simplify، opset، data، fraction، device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz، quantize، batch، data، fraction، device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz، name، quantize، data، fraction، simplify، conf، iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz، batch، name، quantize، opset، simplify، nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz، batch، quantize |
يفترض nms=None المخرجات الخام لـ NMS الخارجي. قم بتعيين nms=False لتحديد رأس متاح خالٍ من NMS؛ وتتراجع التنسيقات غير المدعومة إلى مسار إخراجها الأصلي. وتحدد مُدخلات nms أعلاه التنسيقات التي يمكنها تضمين NMS باستخدام nms=True.
راجع تفاصيل export الكاملة في صفحة التصدير.
الأسئلة الشائعة#
يقدم Ultralytics YOLO26 وضع المعايير لتقييم أداء نموذجك عبر تنسيقات التصدير المختلفة. يوفر هذا الوضع رؤى حول المقاييس الرئيسية مثل متوسط دقة التنبؤ (mAP50-95)، والدقة، ووقت الاستدلال بالميلي ثانية. لتشغيل المعايير، يمكنك استخدام Python أو أوامر سطر الأوامر (CLI). على سبيل المثال، للتقييم على وحدة معالجة رسومات (GPU):
مثالfrom ultralytics.utils.benchmarks import benchmark # Benchmark on GPU benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)لمزيد من التفاصيل حول وسائط المعايير، تفضل بزيارة قسم الوسائط.
يسمح لك تصدير نماذج YOLO26 إلى تنسيقات مختلفة مثل ONNX، وTensorRT، وOpenVINO بتحسين الأداء بناءً على بيئة النشر الخاصة بك. على سبيل المثال:
- ONNX: يوفر تسريعاً لوحدة المعالجة المركزية (CPU) بنسبة تصل إلى 3 أضعاف.
- TensorRT: يوفر تسريعاً لوحدة معالجة الرسومات (GPU) بنسبة تصل إلى 5 أضعاف.
- OpenVINO: مُحسّن خصيصاً لأجهزة Intel.
تعمل هذه التنسيقات على تعزيز كل من سرعة ودقة نماذجك، مما يجعلها أكثر كفاءة لمختلف التطبيقات في العالم الحقيقي. تفضل بزيارة صفحة التصدير للحصول على التفاصيل الكاملة.
يُعد إجراء المعايير لنماذج YOLO26 أمراً بالغ الأهمية لعدة أسباب:
- قرارات مستنيرة: فهم المفاضلات بين السرعة والدقة.
- تخصيص الموارد: قياس الأداء عبر خيارات الأجهزة المختلفة.
- التحسين: تحديد تنسيق التصدير الذي يوفر أفضل أداء لحالات الاستخدام المحددة.
- كفاءة التكلفة: تحسين استخدام الأجهزة بناءً على نتائج المعايير.
تساعد المقاييس الرئيسية مثل mAP50-95، ودقة Top-1، ووقت الاستدلال في إجراء هذه التقييمات. ارجع إلى قسم المقاييس الرئيسية لمزيد من المعلومات.
يدعم YOLO26 مجموعة متنوعة من تنسيقات التصدير، حيث تم تصميم كل منها خصيصاً لأجهزة وحالات استخدام محددة:
- ONNX: الأفضل لأداء وحدة المعالجة المركزية (CPU).
- TensorRT: مثالي لكفاءة وحدة معالجة الرسومات (GPU).
- OpenVINO: مُحسّن لأجهزة Intel.
- CoreML وTensorFlow: مفيدان لتطبيقات iOS وتطبيقات التعلم الآلي العامة.
للحصول على قائمة كاملة بالتنسيقات المدعومة ومزايا كل منها، راجع قسم تنسيقات التصدير المدعومة.
عند تشغيل المعايير، يمكن تخصيص عدة وسائط لتناسب الاحتياجات المحددة:
- model: مسار ملف النموذج (على سبيل المثال، "yolo26n.pt").
- data: مسار ملف YAML الخاص بمجموعة البيانات (على سبيل المثال،
"coco8.yaml")؛ يأخذ التصنيف بدلاً من ذلك دليلاً لمجموعة البيانات أو اسم مجموعة بيانات مدمج (على سبيل المثال،imagenet10). - imgsz: حجم صورة الإدخال المربعة كعدد صحيح واحد، مثل
640. يستخدم وضع المعايير نفس حجم الصورة المربعة عبر PyTorch والتنسيقات المصدرة لضمان مقارنة عادلة. - quantize: الدقة المطلوبة:
16لـ FP16، و8لـ INT8 (مفيد للأجهزة الطرفية)؛32/غير المُحدد هو FP32 حيثما يدعم التنسيق ذلك - التنسيق الذي لا يمكنه تصدير FP32 يرفض32صريحاً أو يتراجع إلى الدقة التي يتطلبها. لا يتم تصدير صف PyTorch الأصلي: يؤثر16وحده عليه، حيث يحدد استدلال FP16، بينما يقوم8و32وغير المُحدد بتشغيل FP32. يقوم كل تنسيق بعد ذلك بتشغيل الاستدلال بدقة وقت التشغيل الخاص به. - device: حدد جهاز الحساب (على سبيل المثال، "cpu"، "cuda:0").
- verbose: التحكم في مستوى تفاصيل سجل الأحداث.
للحصول على قائمة كاملة بالوسائط، راجع قسم الوسائط.