تخطي إلى المحتوى

تصدير النموذج مع Ultralytics YOLO

Ultralytics YOLO النظام البيئي والتكاملات

مقدمة

الهدف النهائي من تدريب النموذج هو نشره للتطبيقات الواقعية. يوفر وضع التصدير في Ultralytics YOLO11 مجموعة متنوعة من الخيارات لتصدير نموذجك المدرّب إلى تنسيقات مختلفة، مما يجعله قابلاً للنشر عبر مختلف المنصات والأجهزة. يهدف هذا الدليل الشامل إلى إرشادك خلال الفروق الدقيقة لتصدير النموذج، وعرض كيفية تحقيق أقصى قدر من التوافق والأداء.



شاهد: كيفية تصدير نموذج Ultralytics YOLO المدربين المخصص وتشغيل الاستدلال المباشر على كاميرا الويب.

لماذا تختار وضع التصدير YOLO11 ؟

  • تعدد الاستخدامات: التصدير إلى تنسيقات متعددة بما في ذلك ONNX, TensorRT, CoreMLوغيرها.
  • الأداء: احصل على ما يصل إلى 5 أضعاف سرعة GPU باستخدام TensorRT و3 أضعاف سرعة CPU باستخدام ONNX أو OpenVINO.
  • التوافق: اجعل نموذجك قابلاً للنشر عالمياً عبر العديد من بيئات الأجهزة والبرامج.
  • سهولة الاستخدام: واجهة برمجة تطبيقات CLI و Python بسيطة لتصدير النماذج بشكل سريع ومباشر.

الميزات الرئيسية لوضع التصدير

فيما يلي بعض الوظائف البارزة:

  • تصدير بنقرة واحدة: أوامر بسيطة للتصدير إلى تنسيقات مختلفة.
  • تصدير الدُفعات: تصدير النماذج القادرة على الاستدلال على دفعات.
  • الاستدلال الأمثل: تم تحسين النماذج المصدَّرة من أجل زمن استدلال أسرع.
  • مقاطع فيديو تعليمية: إرشادات ودروس تعليمية متعمقة لتجربة تصدير سلسة.

نصيحة

  • التصدير إلى ONNX أو OpenVINO لتسريع يصل إلى 3 أضعاف CPU .
  • التصدير إلى TensorRT لتسريع يصل إلى 5 أضعاف GPU .

أمثلة على الاستخدام

قم بتصدير نموذج YOLO11n إلى تنسيق مختلف مثل ONNX أو TensorRT. راجع قسم الوسيطات أدناه للحصول على قائمة كاملة بوسائط التصدير.

مثال على ذلك

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo11n.pt format=onnx      # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

الحجج

يوضح هذا الجدول تفاصيل التكوينات والخيارات المتاحة لتصدير النماذج YOLO إلى تنسيقات مختلفة. تعد هذه الإعدادات ضرورية لتحسين أداء النموذج المُصدَّر وحجمه وتوافقه عبر مختلف المنصات والبيئات. يضمن التكوين المناسب أن يكون النموذج جاهزًا للنشر في التطبيق المقصود بكفاءة مثالية.

الجدال النوع افتراضي الوصف
format str 'torchscript' التنسيق المستهدف للنموذج المُصدَّر، مثل 'onnx', 'torchscript', 'engine' TensorRT)، أو غيرها. يتيح كل تنسيق التوافق مع مختلف بيئات النشر.
imgsz int أو tuple 640 حجم الصورة المطلوب لإدخال النموذج. يمكن أن يكون عددًا صحيحًا للصور المربعة (على سبيل المثال, 640 ل 640 × 640) أو تابلو (height, width) لأبعاد محددة.
keras bool False تمكين التصدير إلى تنسيق Keras لـ TensorFlow SavedModel وتوفير التوافق مع خدمة TensorFlow وواجهات برمجة التطبيقات.
optimize bool False يطبّق تحسينات للأجهزة المحمولة عند التصدير إلى TorchScript مما يقلل من حجم النموذج ويحسّن أداء الاستدلال. غير متوافق مع تنسيق NCNN أو أجهزة CUDA .
half bool False تمكين التكميم FP16 (نصف دقة)، مما يقلل من حجم النموذج وربما يسرع الاستدلال على الأجهزة المدعومة. غير متوافق مع التكميم INT8 أو التصدير CPU ل ONNX.
int8 bool False تنشيط التكميم INT8، مما يؤدي إلى زيادة ضغط النموذج وتسريع الاستدلال بأقل خسارة في الدقة، خاصةً للأجهزة الطرفية. عند استخدامه مع TensorRT يقوم بإجراء تكميم ما بعد التدريب (PTQ).
dynamic bool False يسمح بأحجام إدخال ديناميكية لصادرات ONNX TensorRT OpenVINO مما يعزز المرونة في التعامل مع أبعاد الصور المختلفة. يتم ضبطها تلقائيًا على True عند استخدام TensorRT مع INT8.
simplify bool True يبسط الرسم البياني النموذجي للصادرات ONNX مع onnxslimمما يحسن الأداء والتوافق مع محركات الاستدلال.
opset int None تحديد إصدار مجموعة عمليات ONNX للتوافق مع إصدارات ONNX المختلفة ONNX وأوقات التشغيل المختلفة. إذا لم يتم تعيينه، يستخدم أحدث إصدار مدعوم.
workspace float أو None None تعيين الحد الأقصى لحجم مساحة العمل بالجيغابايت ل TensorRT تحسينات وموازنة استخدام الذاكرة والأداء. الاستخدام None للتخصيص التلقائي بواسطة TensorRT حتى الحد الأقصى للجهاز.
nms bool False يضيف الكبت غير الأقصى (NMS) إلى النموذج المُصدَّر عندما يكون مدعومًا (انظر تنسيقات التصدير)، مما يحسن كفاءة الكشف بعد المعالجة. غير متوفر لنماذج end2end.
batch int 1 يحدد حجم الاستدلال على دفعة نموذج التصدير أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المُصدَّر بشكل متزامن في predict الوضع. بالنسبة لصادرات Edge TPU يتم تعيين هذا تلقائيًا إلى 1.
device str None يحدد جهاز التصدير: GPU (device=0)، CPU (device=cpu)، MPS لسيليكون أبل (device=mps) أو DLA لـ NVIDIA جيتسون (device=dla:0 أو device=dla:1). تستخدم صادرات TensorRT تلقائيًا GPU.
data str 'coco8.yaml' الطريق إلى مجموعة البيانات ملف التكوين (افتراضي: coco8.yaml)، ضروري للمعايرة الكمية INT8. إذا لم يتم تحديدها مع تمكين INT8، سيتم تعيين مجموعة بيانات افتراضية.

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

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

ترد تنسيقات التصدير المتاحة YOLO11 في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام format الحجة، أي format='onnx' أو format='engine'. يمكنك التنبؤ أو التحقق من الصحة مباشرةً على النماذج المصدرة، أي yolo predict model=yolo11n.onnx. تظهر أمثلة الاستخدام للنموذج الخاص بك بعد اكتمال التصدير.

التنسيق format الجدال الطراز البيانات الوصفية الحجج
PyTorch - yolo11n.pt -
TorchScript torchscript yolo11n.torchscript imgsz, optimize, nms, batch
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, nms, batch
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, nms, batch
TF GraphDef pb yolo11n.pb imgsz, batch
TF لايت tflite yolo11n.tflite imgsz, half, int8, nms, batch, data
TF إيدج TPU edgetpu yolo11n_edgetpu.tflite imgsz
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, nms, batch
PaddlePaddle paddle yolo11n_paddle_model/ imgsz, batch
MNN mnn yolo11n.mnn imgsz, batch, int8, half
NCNN ncnn yolo11n_ncnn_model/ imgsz, half, batch
IMX500 imx yolov8n_imx_model/ imgsz, int8, data
ر.ك.ن.ن.ن rknn yolo11n_rknn_model/ imgsz, batch, name

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

كيف يمكنني تصدير نموذج YOLO11 إلى تنسيق ONNX ؟

يعد تصدير نموذج YOLO11 إلى صيغة ONNX أمرًا سهلاً ومباشرًا باستخدام Ultralytics. يوفر كلاً من طريقتين Python و CLI لتصدير النماذج.

مثال على ذلك

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo11n.pt format=onnx      # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

لمزيد من التفاصيل حول العملية، بما في ذلك الخيارات المتقدمة مثل التعامل مع أحجام الإدخال المختلفة، راجع دليل تكاملONNX .

ما هي فوائد استخدام TensorRT لتصدير النماذج؟

يوفر استخدام TensorRT لتصدير النماذج تحسينات كبيرة في الأداء، حيث يمكن لنماذج YOLO11 المصدرة إلى TensorRT تحقيق سرعة تصل إلى 5 أضعاف GPU ، مما يجعلها مثالية لتطبيقات الاستدلال في الوقت الحقيقي.

  • تعدد الاستخدامات: تحسين النماذج لإعداد أجهزة معينة.
  • السرعة: تحقيق استدلال أسرع من خلال التحسينات المتقدمة.
  • التوافق: تتكامل بسلاسة مع أجهزة NVIDIA .

لمعرفة المزيد حول دمج TensorRT ، راجع دليل التكاملTensorRT .

كيف يمكنني تمكين التكميم INT8 عند تصدير نموذجي YOLO11 ؟

يعد التكميم INT8 طريقة ممتازة لضغط النموذج وتسريع الاستدلال، خاصةً على الأجهزة المتطورة. إليك كيفية تمكين التكميم INT8:

مثال على ذلك

from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo11n.pt format=engine int8=True # export TensorRT model with INT8 quantization

يمكن تطبيق التكميم INT8 على تنسيقات مختلفة، مثل TensorRT, OpenVINOو CoreML. للحصول على نتائج تكميم مثالية، قم بتوفير ممثل مجموعة البيانات باستخدام data المعلمة.

ما أهمية حجم المدخلات الديناميكية عند تصدير النماذج؟

يسمح حجم الإدخال الديناميكي للنموذج المُصدَّر بالتعامل مع أبعاد الصور المختلفة، مما يوفر المرونة وتحسين كفاءة المعالجة لحالات الاستخدام المختلفة. عند التصدير إلى تنسيقات مثل ONNX أو TensorRTفإن تمكين حجم الإدخال الديناميكي يضمن قدرة النموذج على التكيف مع أشكال الإدخال المختلفة بسلاسة.

لتمكين هذه الميزة، استخدم dynamic=True علامة أثناء التصدير:

مثال على ذلك

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo11n.pt format=onnx dynamic=True

يعد تحديد حجم الإدخال الديناميكي مفيدًا بشكل خاص للتطبيقات التي قد تختلف فيها أبعاد الإدخال، مثل معالجة الفيديو أو عند معالجة الصور من مصادر مختلفة.

ما هي حجج التصدير الرئيسية التي يجب مراعاتها لتحسين أداء النموذج؟

يعد فهم وسيطات التصدير وتكوينها أمرًا بالغ الأهمية لتحسين أداء النموذج:

  • format: التنسيق المستهدف للنموذج المُصدَّر (على سبيل المثال, onnx, torchscript, tensorflow).
  • imgsz: حجم الصورة المطلوب لمدخلات النموذج (على سبيل المثال, 640 أو (height, width)).
  • half: تمكين تكميم FP16، مما يقلل من حجم النموذج وربما يسرّع عملية الاستدلال.
  • optimize: يطبق تحسينات محددة للبيئات المتنقلة أو المقيدة.
  • int8: تمكين التكميم INT8، وهو مفيد للغاية ل حافة الذكاء الاصطناعي عمليات النشر.

للنشر على منصات أجهزة معينة، ضع في اعتبارك استخدام تنسيقات تصدير متخصصة مثل TensorRT لوحدات معالجة الرسومات NVIDIA , CoreML لأجهزة Apple، أو Edge TPU لأجهزة Google Coral.

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 3 أيام

التعليقات