تصدير النموذج مع Ultralytics YOLO
مقدمة
الهدف النهائي من تدريب نموذج هو نشره لتطبيقات العالم الحقيقي. وضع التصدير في Ultralytics YOLOv8 يقدم مجموعة متنوعة من الخيارات لتصدير نموذجك المدرب إلى تنسيقات مختلفة ، مما يجعله قابلا للنشر عبر الأنظمة الأساسية والأجهزة المختلفة. يهدف هذا الدليل الشامل إلى إرشادك عبر الفروق الدقيقة في تصدير النموذج ، وعرض كيفية تحقيق أقصى قدر من التوافق والأداء.
شاهد: كيفية تصدير تدريب مخصص Ultralytics YOLOv8 نموذج وتشغيل الاستدلال المباشر على كاميرا الويب.
لماذا تختار YOLOv8في وضع التصدير؟
- براعه: تصدير إلى تنسيقات متعددة بما في ذلك ONNX, TensorRT, CoreML، وأكثر من ذلك.
- الأداء: احصل على تسريع يصل إلى 5 أضعاف GPU مع TensorRT و3 أضعاف CPU مع ONNX أو OpenVINO.
- التوافق: اجعل نموذجك قابلا للنشر عالميا عبر العديد من بيئات الأجهزة والبرامج.
- سهولة الاستخدام: بسيط CLI و Python API لتصدير النموذج بسرعة ومباشرة.
الميزات الرئيسية لوضع التصدير
فيما يلي بعض الوظائف البارزة:
- تصدير بنقرة واحدة: أوامر بسيطة للتصدير إلى تنسيقات مختلفة.
- تصدير الدفعة: تصدير نماذج قادرة على الاستدلال الدفعي.
- الاستدلال الأمثل: تم تحسين النماذج المصدرة لأوقات الاستدلال الأسرع.
- مقاطع فيديو تعليمية: أدلة وبرامج تعليمية متعمقة لتجربة تصدير سلسة.
بقشيش
أمثلة الاستخدام
Export a YOLOv8n model to a different format like ONNX or TensorRT. See the Arguments section below for a full list of export arguments.
مثل
الحجج
يوضح هذا الجدول تفاصيل التكوينات والخيارات المتاحة للتصدير 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 و OpenVINO ، مما يعزز المرونة في التعامل مع أبعاد الصور المختلفة. |
simplify |
bool |
False |
يبسط الرسم البياني النموذجي ل ONNX الصادرات مع onnxslim ، مما قد يؤدي إلى تحسين الأداء والتوافق. |
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 , int8 , 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 |
TF.شبيبه | tfjs |
yolov8n_web_model/ |
✅ | imgsz , half , int8 , batch |
PaddlePaddle | paddle |
yolov8n_paddle_model/ |
✅ | imgsz , batch |
NCNN | ncnn |
yolov8n_ncnn_model/ |
✅ | imgsz , half , batch |
الأسئلة المتداولة
كيف يمكنني تصدير نموذج YOLOv8 إلى تنسيق ONNX ؟
يعد تصدير نموذج YOLOv8 إلى تنسيق ONNX أمرًا سهلاً ومباشرًا باستخدام Ultralytics. يوفر كلاً من طريقتين Python و CLI لتصدير النماذج.
مثل
For more details on the process, including advanced options like handling different input sizes, refer to the ONNX section.
ما هي فوائد استخدام TensorRT لتصدير النماذج؟
يوفر استخدام TensorRT لتصدير النماذج تحسينات كبيرة في الأداء، حيث يمكن لنماذج YOLOv8 المصدرة إلى TensorRT تحقيق سرعة تصل إلى 5 أضعاف GPU ، مما يجعلها مثالية لتطبيقات الاستدلال في الوقت الحقيقي.
- تعدد الاستخدامات: تحسين النماذج لإعداد أجهزة معينة.
- السرعة: تحقيق استدلال أسرع من خلال التحسينات المتقدمة.
- التوافق: تتكامل بسلاسة مع أجهزة NVIDIA .
To learn more about integrating TensorRT, see the TensorRT integration guide.
كيف يمكنني تمكين التكميم INT8 عند تصدير نموذجي YOLOv8 ؟
يعتبر التكميم INT8 طريقة ممتازة لضغط النموذج وتسريع الاستدلال، خاصةً على الأجهزة المتطورة. إليك كيفية تمكين التكميم INT8:
مثل
INT8 quantization can be applied to various formats, such as TensorRT and CoreML. More details can be found in the Export section.
ما أهمية حجم المدخلات الديناميكية عند تصدير النماذج؟
يسمح حجم الإدخال الديناميكي للنموذج المُصدَّر بالتعامل مع أبعاد الصور المختلفة، مما يوفر المرونة وتحسين كفاءة المعالجة لحالات الاستخدام المختلفة. عند التصدير إلى تنسيقات مثل ONNX أو TensorRT ، فإن تمكين حجم الإدخال الديناميكي يضمن إمكانية تكيف النموذج مع أشكال الإدخال المختلفة بسلاسة.
لتمكين هذه الميزة، استخدم dynamic=True
علامة أثناء التصدير:
مثل
للحصول على سياق إضافي، راجع تكوين حجم الإدخال الديناميكي.
ما هي حجج التصدير الرئيسية التي يجب مراعاتها لتحسين أداء النموذج؟
يعد فهم وسيطات التصدير وتكوينها أمرًا بالغ الأهمية لتحسين أداء النموذج:
format:
التنسيق المستهدف للنموذج المُصدَّر (على سبيل المثال,onnx
,torchscript
,tensorflow
).imgsz:
حجم الصورة المطلوب لمدخلات النموذج (على سبيل المثال,640
أو(height, width)
).half:
تمكين تكميم FP16، مما يقلل من حجم النموذج وربما يسرّع عملية الاستدلال.optimize:
يطبق تحسينات محددة للبيئات المتنقلة أو المقيدة.int8:
تمكين التكميم INT8، وهو مفيد للغاية لعمليات النشر على الحواف.
For a detailed list and explanations of all the export arguments, visit the Export Arguments section.