Ultralytics YOLO27:
Get Started

قياس أداء النماذج باستخدام Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

تصوير نتائج قياس الأداء#

مقدمة#

بعد تدريب النموذج والتحقق من صحته، تتمثل الخطوة المنطقية التالية في تقييم أدائه في سيناريوهات واقعية متنوعة. يتيح وضع قياس الأداء في Ultralytics YOLO26 ذلك من خلال توفير إطار عمل متين لتقييم سرعة النموذج ودقته عبر مجموعة من تنسيقات التصدير.

اطّلع على معاينة YOLO27 غير المُصدرة للاطلاع على نتائج أولية لقياس السرعة.



شاهد: قياس أداء نماذج Ultralytics YOLO26 | كيفية مقارنة أداء النماذج على أجهزة مختلفة؟

لماذا يُعد قياس الأداء ضروريًا؟#

  • اتخاذ قرارات مستنيرة: اكتساب فهم للمفاضلات بين السرعة والدقة.
  • تخصيص الموارد: فهم أداء تنسيقات التصدير المختلفة على العتاد المختلف.
  • التحسين: معرفة تنسيق التصدير الذي يوفّر أفضل أداء لحالة الاستخدام المحددة.
  • كفاءة التكلفة: استخدام موارد العتاد بكفاءة أكبر استنادًا إلى نتائج قياس الأداء.

المقاييس الأساسية في وضع قياس الأداء#

  • mAP50-95: لمهام اكتشاف الكائنات، وتقسيم المثيلات، وتقدير الوضعيات، وOBB.
  • mIoU: للتقسيم الدلالي.
  • delta1: لتقدير العمق.
  • accuracy_top1: لـتصنيف الصور.
  • زمن الاستدلال: الوقت المستغرق لمعالجة كل صورة، بالمللي ثانية.

تنسيقات التصدير المدعومة#

  • 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

# ⁨قياس الأداء على GPU⁩
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

# ⁨قياس أداء تنسيق تصدير محدد⁩
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")

الوسيطات#

تمنح الوسيطات مثل model وdata وimgsz وquantize وdevice وverbose وformat المستخدمين مرونة ضبط قياسات الأداء بدقة لتلبية احتياجاتهم الخاصة ومقارنة أداء تنسيقات التصدير المختلفة بسهولة.

المفتاحالقيمة الافتراضيةالوصف
modelNoneيحدد مسار ملف النموذج. يقبل تنسيقي .pt و.yaml، مثل "yolo26n.pt" للنماذج المدرّبة مسبقًا أو ملفات الإعداد.
dataNoneمسار ملف YAML لمجموعة البيانات المستخدَمة في قياس الأداء، ويشمل عادةً المسارات والإعدادات الخاصة بـبيانات التحقق. مثال: "coco8.yaml". أما التصنيف فيتطلب دليل مجموعة بيانات أو اسم مجموعة بيانات مضمّنة (مثل imagenet10).
imgsz640حجم صورة الإدخال للنموذج. يجب أن يكون عددًا صحيحًا واحدًا للصور المربعة (مثل 640)؛ ولا يدعم benchmark() سوى أحجام الصور المربعة.
quantizeNoneالدقة المطلوبة: 16 (FP16) أو 8 (INT8؛ تتطلب مخططات PTQ بيانات معايرة data/fraction، بينما لا تتطلبها مخططات أوزان فقط)؛ أما 32/غير المحدد فيعني FP32 إذا كان التنسيق يدعمه — ويرفض التنسيق الذي لا يستطيع التصدير بدقة FP32 قيمة 32 الصريحة أو يعود إلى الدقة التي يتطلبها. لا يُصدَّر صف PyTorch الأصلي: يؤثر 16 وحده فيه، إذ يحدد الاستدلال بدقة FP16، بينما يشغّل 8 و32 والقيمة غير المحددة الاستدلال بدقة FP32. بعد ذلك، ينفّذ كل تنسيق الاستدلال بدقة وقت التشغيل الخاصة به. يحل هذا محل العلمين المهجورين half/int8.
deviceNoneيحدد جهاز الحوسبة لقياس الأداء، مثل "cpu" أو "cuda:0"؛ وإذا لم يُحدَّد، يُستخدم أول GPU متاح، وإلا فـCPU.
verboseFalseإذا كانت القيمة True أو عددًا عشريًا، فإن إخفاقات قياس الأداء (باستثناء أخطاء التأكيد) تؤدي إلى رفع استثناء بدلًا من تسجيل خطأ؛ كما أن العدد العشري مثل 0.25 يؤكد تجاوز مقياس كل تنسيق ناجح ذلك الحد الأدنى.
eps0.001قيمة إبسيلون صغيرة (بالمللي ثانية) تُضاف إلى زمن الاستدلال لكل صورة قبل تحويله إلى FPS، منعًا للقسمة على صفر. نادرًا ما تتغير.
format''يقيس أداء تنسيق التصدير المحدد فقط (مثل format=onnx). اتركه فارغًا لاختبار جميع التنسيقات المدعومة تلقائيًا.
القيم الافتراضية لدالة `benchmark()` المستقلة

تستخدم دالة benchmark() المستقلة (from ultralytics.utils.benchmarks import benchmark) القيم الافتراضية الخاصة بتوقيعها بدلًا من قيم الجدول أعلاه، ولا سيما model="yolo26n.pt" وimgsz=160 وdevice="cpu"؛ مرّر imgsz وdevice صراحةً لمطابقة CLI الخاص بـyolo benchmark.

تنسيقات التصدير#

ستحاول اختبارات قياس الأداء التشغيل تلقائيًا على جميع تنسيقات التصدير الممكنة المدرجة أدناه. ويمكنك بدلًا من ذلك قياس الأداء لتنسيق محدد باستخدام الوسيطة format، التي تقبل أيًا من التنسيقات المذكورة أدناه.

التنسيقوسيط formatالنموذجالبيانات الوصفيةالوسيطات
PyTorch-yolo26n.pt✅-
TorchScripttorchscriptyolo26n.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

يعتمد nms=None على المخرجات الأولية لإجراء NMS خارجي. اضبط nms=False لتحديد رأس متاح خالٍ من NMS؛ وتعود التنسيقات غير المدعومة إلى مسار المخرجات الأصلي الخاص بها. تحدد إدخالات nms أعلاه التنسيقات التي يمكنها تضمين NMS باستخدام nms=True.

اطّلع على التفاصيل الكاملة لـexport في صفحة التصدير.

الأسئلة الشائعة#

  • يوفر Ultralytics YOLO26 وضع قياس الأداء لتقييم أداء النموذج عبر تنسيقات تصدير مختلفة. ويعرض هذا الوضع معلومات عن مقاييس أساسية مثل متوسط الدقة (mAP50-95)، والدقة، وزمن الاستدلال بالمللي ثانية. لتشغيل قياس الأداء، يمكنك استخدام أوامر Python أو CLI. على سبيل المثال، لقياس الأداء على GPU:

    مثال
    from ultralytics.utils.benchmarks import benchmark
    
    # ⁨قياس الأداء على GPU⁩
    benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

    لمزيد من التفاصيل حول وسيطات قياس الأداء، راجع قسم الوسيطات.

  • يتيح تصدير نماذج YOLO26 إلى تنسيقات مختلفة مثل ONNX وTensorRT وOpenVINO تحسين الأداء وفقًا لبيئة النشر. على سبيل المثال:

    • ONNX: يوفّر تسريعًا يصل إلى 3 أضعاف على CPU.
    • TensorRT: يوفّر تسريعًا يصل إلى 5 أضعاف على GPU.
    • 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: ارفع استثناءً عند إخفاق قياس الأداء بدلًا من تسجيله؛ ومرّر عددًا عشريًا لاشتراط تجاوز مقياس كل تنسيق ذلك الحد الأدنى أيضًا.

    للاطلاع على القائمة الكاملة للوسيطات، راجع قسم الوسيطات.

التعليقات