تصدير النموذج مع Ultralytics YOLO
مقدمة
الهدف النهائي من تدريب نموذج هو نشره لتطبيقات العالم الحقيقي. وضع التصدير في Ultralytics YOLOv8 يقدم مجموعة متنوعة من الخيارات لتصدير نموذجك المدرب إلى تنسيقات مختلفة ، مما يجعله قابلا للنشر عبر الأنظمة الأساسية والأجهزة المختلفة. يهدف هذا الدليل الشامل إلى إرشادك عبر الفروق الدقيقة في تصدير النموذج ، وعرض كيفية تحقيق أقصى قدر من التوافق والأداء.
شاهد: كيفية تصدير تدريب مخصص Ultralytics YOLOv8 نموذج وتشغيل الاستدلال المباشر على كاميرا الويب.
لماذا تختار YOLOv8في وضع التصدير؟
- براعه: تصدير إلى تنسيقات متعددة بما في ذلك ONNX, TensorRT, CoreML، وأكثر من ذلك.
- اداء: احصل على تسريع يصل إلى 5x لوحدة معالجة الرسومات باستخدام TensorRT وتسريع وحدة المعالجة المركزية 3x مع ONNX أو OpenVINO.
- التوافق: اجعل نموذجك قابلا للنشر عالميا عبر العديد من بيئات الأجهزة والبرامج.
- سهولة الاستخدام: بسيط CLI و Python API لتصدير النموذج بسرعة ومباشرة.
الميزات الرئيسية لوضع التصدير
فيما يلي بعض الوظائف البارزة:
- تصدير بنقرة واحدة: أوامر بسيطة للتصدير إلى تنسيقات مختلفة.
- تصدير الدفعة: تصدير نماذج قادرة على الاستدلال الدفعي.
- الاستدلال الأمثل: تم تحسين النماذج المصدرة لأوقات الاستدلال الأسرع.
- مقاطع فيديو تعليمية: أدلة وبرامج تعليمية متعمقة لتجربة تصدير سلسة.
بقشيش
- تصدير إلى ONNX أو OpenVINO لتسريع وحدة المعالجة المركزية حتى 3x.
- تصدير إلى TensorRT لتسريع وحدة معالجة الرسومات حتى 5x.
أمثلة الاستخدام
تصدير أ YOLOv8n نموذج إلى تنسيق مختلف مثل ONNX أو TensorRT. راجع قسم الوسيطات أدناه للحصول على قائمة كاملة بوسيطات التصدير.
مثل
الحجج
يوضح هذا الجدول تفاصيل التكوينات والخيارات المتاحة للتصدير YOLO نماذج لأشكال مختلفة. تعد هذه الإعدادات ضرورية لتحسين أداء النموذج المصدر وحجمه وتوافقه عبر الأنظمة الأساسية والبيئات المختلفة. يضمن التكوين المناسب أن النموذج جاهز للنشر في التطبيق المقصود بكفاءة مثالية.
جدال | نوع | افتراضي | وصف |
---|---|---|---|
format |
str |
'torchscript' |
التنسيق الهدف للنموذج المصدر، مثل 'onnx' , 'torchscript' , 'tensorflow' ، أو غيرها، تحديد التوافق مع بيئات النشر المختلفة. |
imgsz |
int أو tuple |
640 |
حجم الصورة المطلوب لإدخال النموذج. يمكن أن يكون عددا صحيحا للصور المربعة أو مجموعة (height, width) لأبعاد محددة. |
keras |
bool |
False |
تمكين التصدير إلى تنسيق Keras ل TensorFlow SavedModel، مما يوفر التوافق مع TensorFlow الخدمة وواجهات برمجة التطبيقات. |
optimize |
bool |
False |
يطبق التحسين للأجهزة المحمولة عند التصدير إلى TorchScript، مما قد يقلل من حجم النموذج ويحسن الأداء. |
half |
bool |
False |
تمكين التكميم FP16 (نصف الدقة) ، مما يقلل من حجم النموذج ويحتمل أن يسرع الاستدلال على الأجهزة المدعومة. |
int8 |
bool |
False |
ينشط تكميم INT8 ، مما يزيد من ضغط النموذج ويسرع الاستدلال بأقل قدر من فقدان الدقة ، بشكل أساسي لأجهزة الحافة. |
dynamic |
bool |
False |
يسمح بأحجام الإدخال الديناميكية ل ONNX و TensorRT الصادرات ، وتعزيز المرونة في التعامل مع أبعاد الصورة المختلفة. |
simplify |
bool |
False |
يبسط الرسم البياني النموذجي ل ONNX الصادرات ، مما قد يؤدي إلى تحسين الأداء والتوافق. |
opset |
int |
None |
يحدد ONNX إصدار Opset للتوافق مع مختلف ONNX المحللون وأوقات التشغيل. إذا لم يتم تعيينه، يستخدم أحدث إصدار مدعوم. |
workspace |
float |
4.0 |
تعيين الحد الأقصى لحجم مساحة العمل بالجيجابايت ل TensorRT التحسينات ، وتحقيق التوازن بين استخدام الذاكرة والأداء. |
nms |
bool |
False |
يضيف منع غير أقصى (NMS) إلى CoreML التصدير ، ضروري للكشف الدقيق والفعال بعد المعالجة. |
batch |
int |
1 |
يحدد حجم الاستدلال على دفعة نموذج التصدير أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المُصدَّر في نفس الوقت في predict الوضع. |
يسمح ضبط هذه المعلمات بتخصيص عملية التصدير لتلائم متطلبات محددة، مثل بيئة النشر وقيود الأجهزة وأهداف الأداء. يعد تحديد التنسيق والإعدادات المناسبة أمرا ضروريا لتحقيق أفضل توازن بين حجم النموذج والسرعة والدقة.
تنسيقات التصدير
متوفر YOLOv8 تنسيقات التصدير موجودة في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام format
الحجة ، أي format='onnx'
أو format='engine'
. يمكنك التنبؤ أو التحقق من صحة النماذج المصدرة مباشرة، أي yolo predict model=yolov8n.onnx
. يتم عرض أمثلة الاستخدام للطراز الخاص بك بعد اكتمال التصدير.
تنسيق | format جدال |
نموذج | البيانات الوصفية | الحجج |
---|---|---|---|---|
PyTorch | - | yolov8n.pt |
✅ | - |
TorchScript | torchscript |
yolov8n.torchscript |
✅ | imgsz , optimize , batch |
ONNX | onnx |
yolov8n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , batch |
OpenVINO | openvino |
yolov8n_openvino_model/ |
✅ | imgsz , half , int8 , batch |
TensorRT | engine |
yolov8n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , batch |
CoreML | coreml |
yolov8n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolov8n_saved_model/ |
✅ | imgsz , keras , int8 , batch |
TF GraphDef | pb |
yolov8n.pb |
❌ | imgsz , batch |
TF لايت | tflite |
yolov8n.tflite |
✅ | imgsz , half , int8 , batch |
TF حافة TPU | edgetpu |
yolov8n_edgetpu.tflite |
✅ | imgsz , batch |
TF.شبيبه | tfjs |
yolov8n_web_model/ |
✅ | imgsz , half , int8 , batch |
PaddlePaddle | paddle |
yolov8n_paddle_model/ |
✅ | imgsz , batch |
NCNN | ncnn |
yolov8n_ncnn_model/ |
✅ | imgsz , half , batch |