قياس أداء النموذج باستخدام Ultralytics YOLO#
تصور قياس الأداء#
مقدمة#
بمجرد تدريب نموذجك والتحقق من صحته، تكون الخطوة المنطقية التالية هي تقييم أدائه في سيناريوهات واقعية مختلفة. يخدم وضع المقارنة المرجعية Benchmark في Ultralytics YOLO26 هذا الغرض من خلال توفير إطار عمل قوي لتقييم سرعة accuracy نموذجك عبر مجموعة من تنسيقات التصدير.
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
لماذا يعد قياس الأداء أمراً بالغ الأهمية؟#
- قرارات مستنيرة: احصل على رؤى حول المقايضات بين السرعة والدقة.
- تخصيص الموارد: افهم كيفية أداء تنسيقات التصدير المختلفة على أجهزة مختلفة.
- التحسين: تعرف على تنسيق التصدير الذي يوفر أفضل أداء لحالة الاستخدام المحددة الخاصة بك.
- كفاءة التكلفة: استفد بشكل أكثر كفاءة من موارد الأجهزة بناءً على نتائج قياس الأداء.
المقاييس الرئيسية في وضع قياس الأداء#
- mAP50-95: لاكتشاف الكائنات object detection، والتجزئة، وتقدير الوضعية.
- accuracy_top1: لتصنيف الصور image classification.
- وقت الاستدلال (Inference Time): الوقت المستغرق لكل صورة بالملي ثانية.
تنسيقات التصدير المدعومة#
- ONNX: لأداء مثالي على CPU
- TensorRT: لأقصى كفاءة على GPU
- OpenVINO: لتحسين أداء أجهزة Intel
- CoreML وTensorFlow SavedModel والمزيد: لاحتياجات النشر المتنوعة.
- التصدير إلى ONNX أو OpenVINO للحصول على سرعة أكبر بـ 3 أضعاف على CPU.
- التصدير إلى TensorRT للحصول على سرعة أكبر بـ 5 أضعاف على GPU.
أمثلة الاستخدام#
قم بتثبيت 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")الوسائط (Arguments)#
تمنح الوسائط مثل model و data و imgsz و quantize و device و verbose و format المستخدمين المرونة لضبط المقارنات المرجعية بدقة وفقاً لاحتياجاتهم الخاصة ومقارنة أداء تنسيقات التصدير المختلفة بسهولة.
| المفتاح | القيمة الافتراضية | الوصف |
|---|---|---|
model | None | يحدد مسار ملف النموذج. يقبل كل من تنسيقي .pt و .yaml، على سبيل المثال، "yolo26n.pt" للنماذج المدربة مسبقاً أو ملفات التكوين. |
data | None | مسار ملف YAML الخاص بمجموعة البيانات للمقارنة المرجعية، والذي يتضمن عادةً المسارات والإعدادات الخاصة ببيانات التحقق validation data. مثال: "coco8.yaml". يأخذ التصنيف بدلاً من ذلك مجلد مجموعة بيانات أو اسم مجموعة بيانات مدمجاً (مثل imagenet10). |
imgsz | 640 | حجم صورة الإدخال للنموذج. يجب أن يكون رقماً صحيحاً مفرداً للصور المربعة (مثل 640)؛ يدعم benchmark() أحجام الصور المربعة فقط. |
quantize | None | دقة التكميم: 16 (FP16) أو 8 (INT8/PTQ؛ يتطلب المعايرة data/fraction)؛ 32/غير المحدد هو FP32. يحل محل علامات half/int8 المهملة. |
device | 'cpu' | يحدد جهاز (أجهزة) الحساب للمقارنة المرجعية، مثل "cpu" أو "cuda:0". |
verbose | False | يتحكم في مستوى التفاصيل في مخرجات التجليد (logging). اضبط 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 | النموذج | البيانات الوصفية | الوسائط (Arguments) |
|---|---|---|---|---|
| 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 |
راجع تفاصيل export الكاملة في صفحة التصدير (Export).
الأسئلة الشائعة#
يوفر وضع المقارنة المرجعية Benchmark في Ultralytics YOLO26 لتقييم أداء نموذجك عبر تنسيقات التصدير المختلفة. يمنح هذا الوضع رؤى حول المقاييس الرئيسية مثل متوسط الدقة mean Average Precision (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)لمزيد من التفاصيل حول وسائط المقارنة المرجعية، تفضل بزيارة قسم Arguments.
ييح لك تصدير نماذج YOLO26 إلى تنسيقات مختلفة مثل ONNX و TensorRT و OpenVINO تحسين الأداء بناءً على بيئة نشرك. على سبيل المثال:
- ONNX: يوفر تسريعاً لوحدة المعالجة المركزية (CPU) يصل إلى 3 مرات.
- TensorRT: يوفر تسريعاً لوحدة معالجة الرسومات (GPU) يصل إلى 5 مرات.
- OpenVINO: مُحسَّن خصيصاً لأجهزة Intel.
تعمل هذه التنسيقات على تعزيز كل من سرعة ودقة نماذجك، مما يجعلها أكثر كفاءة لمختلف التطبيقات الواقعية. تفضل بزيارة صفحة Export للحصول على التفاصيل الكاملة.
يعد قياس أداء نماذج YOLO26 الخاصة بك ضرورياً لعدة أسباب:
- اتخاذ قرارات مستنيرة: فهم المقايضات بين السرعة والدقة.
- تخصيص الموارد: قياس الأداء عبر خيارات الأجهزة المختلفة.
- التحسين: تحديد تنسيق التصدير الذي يوفر أفضل أداء لحالات استخدام معينة.
- كفاءة التكلفة: تحسين استخدام الأجهزة بناءً على نتائج قياس الأداء.
تساعد المقاييس الرئيسية مثل mAP50-95، ودقة Top-1، ووقت الاستدلال في إجراء هذه التقييمات. راجع قسم Key Metrics لمزيد من المعلومات.
يدعم YOLO26 مجموعة متنوعة من تنسيقات التصدير، كل منها مصمم خصيصاً لأجهزة وحالات استخدام محددة:
- ONNX: الأفضل لأداء وحدة المعالجة المركزية (CPU).
- TensorRT: مثالي لكفاءة وحدة معالجة الرسومات (GPU).
- OpenVINO: مُحسَّن لأجهزة Intel.
- CoreML & TensorFlow: مفيد لتطبيقات iOS وتطبيقات التعلم الآلي العامة.
للحصول على قائمة كاملة بالتنسيقات المدعومة ومزاياها الخاصة، راجع قسم Supported Export Formats.
عند تشغيل قياسات الأداء، يمكن تخصيص عدة وسائط لتناسب احتياجات معينة:
- model: المسار إلى ملف النموذج (على سبيل المثال، "yolo26n.pt").
- data: مسار ملف YAML الخاص بمجموعة البيانات (مثل
"coco8.yaml")؛ يأخذ التصنيف بدلاً من ذلك مجلد مجموعة بيانات أو اسم مجموعة بيانات مدمجاً (مثلimagenet10). - imgsz: حجم صورة الإدخال المربعة كرقم صحيح مفرد، مثل
640. يستخدم وضع المقارنة المرجعية نفس حجم الصورة المربعة عبر PyTorch والتنسيقات المصدرة للمقارنة العادلة. - quantize: دقة التكميم:
16لـ FP16، و8لـ INT8 (مفيد لأجهزة الحافة edge devices)؛32/غير المحدد هو FP32. - device: تحديد جهاز الحوسبة (على سبيل المثال، "cpu"، "cuda:0").
- verbose: التحكم في مستوى تفاصيل التسجيل (logging).
للحصول على قائمة كاملة بالوسائط، راجع قسم Arguments.