تصدير النموذج مع Ultralytics YOLO
مقدمة
الهدف النهائي من تدريب النموذج هو نشره للتطبيقات الواقعية. يوفر وضع التصدير في Ultralytics YOLO11 مجموعة متنوعة من الخيارات لتصدير نموذجك المدرّب إلى تنسيقات مختلفة، مما يجعله قابلاً للنشر عبر مختلف المنصات والأجهزة. يهدف هذا الدليل الشامل إلى إرشادك خلال الفروق الدقيقة لتصدير النموذج، وعرض كيفية تحقيق أقصى قدر من التوافق والأداء.
شاهد: كيفية تصدير نموذج Ultralytics YOLO المدربين المخصص وتشغيل الاستدلال المباشر على كاميرا الويب.
لماذا تختار وضع التصدير YOLO11 ؟
- تعدد الاستخدامات: التصدير إلى تنسيقات متعددة بما في ذلك ONNX و TensorRT و CoreML وغيرها.
- الأداء: احصل على تسريع يصل إلى 5 أضعاف GPU مع TensorRT و3 أضعاف CPU مع ONNX أو OpenVINO.
- التوافق: اجعل نموذجك قابلاً للنشر عالمياً عبر العديد من بيئات الأجهزة والبرامج.
- سهولة الاستخدام: واجهة برمجة تطبيقات CLI و Python بسيطة لتصدير النماذج بشكل سريع ومباشر.
الميزات الرئيسية لوضع التصدير
فيما يلي بعض الوظائف البارزة:
- تصدير بنقرة واحدة: أوامر بسيطة للتصدير إلى تنسيقات مختلفة.
- تصدير الدُفعات: تصدير النماذج القادرة على الاستدلال على دفعات.
- الاستدلال الأمثل: تم تحسين النماذج المصدَّرة من أجل زمن استدلال أسرع.
- مقاطع فيديو تعليمية: إرشادات ودروس تعليمية متعمقة لتجربة تصدير سلسة.
نصيحة
أمثلة على الاستخدام
قم بتصدير نموذج YOLO11n إلى تنسيق مختلف مثل 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 و OpenVINO ، مما يعزز المرونة في التعامل مع أبعاد الصور المختلفة. |
simplify |
bool |
True |
يبسط الرسم البياني النموذجي للصادرات ONNX مع onnxslim مما قد يحسن الأداء والتوافق. |
opset |
int |
None |
يحدد الإصدار ONNX opset للتوافق مع مختلف المحللين وأوقات التشغيل ONNX . إذا لم يتم تعيينه، يستخدم أحدث إصدار مدعوم. |
workspace |
float أو None |
None |
يضبط الحد الأقصى لحجم مساحة العمل بالجيغابايت من أجل تحسينات TensorRT ، وتحقيق التوازن بين استخدام الذاكرة والأداء؛ استخدم None للتخصيص التلقائي بواسطة TensorRT حتى الحد الأقصى للجهاز. |
nms |
bool |
False |
يضيف كبتًا غير أقصى (NMS) إلى التصدير CoreML ، وهو أمر ضروري للكشف الدقيق والفعال بعد المعالجة. |
batch |
int |
1 |
يحدد حجم الاستدلال على دفعة نموذج التصدير أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المُصدَّر في نفس الوقت في predict الوضع. |
device |
str |
None |
يحدد جهاز التصدير: GPU (device=0 )، CPU (device=cpu )، MPS لسيليكون أبل (device=mps ) أو DLA لـ NVIDIA جيتسون (device=dla:0 أو device=dla:1 ). |
يسمح ضبط هذه المعلمات بتخصيص عملية التصدير لتناسب متطلبات محددة، مثل بيئة النشر وقيود الأجهزة وأهداف الأداء. يعد اختيار التنسيق والإعدادات المناسبة أمرًا ضروريًا لتحقيق أفضل توازن بين حجم النموذج والسرعة والدقة.
تنسيقات التصدير
ترد تنسيقات التصدير المتاحة YOLO11 في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام format
الحجة، أي format='onnx'
أو format='engine'
. يمكنك التنبؤ أو التحقق من الصحة مباشرةً على النماذج المصدرة، أي yolo predict model=yolo11n.onnx
. تظهر أمثلة الاستخدام للنموذج الخاص بك بعد اكتمال التصدير.
التنسيق | format الجدال |
الطراز | البيانات الوصفية | الحجج |
---|---|---|---|---|
PyTorch | - | yolo11n.pt |
✅ | - |
TorchScript | torchscript |
yolo11n.torchscript |
✅ | imgsz , optimize , batch |
ONNX | onnx |
yolo11n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , batch |
OpenVINO | openvino |
yolo11n_openvino_model/ |
✅ | imgsz , half , int8 , batch |
TensorRT | engine |
yolo11n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , batch |
CoreML | coreml |
yolo11n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolo11n_saved_model/ |
✅ | imgsz , keras , int8 , batch |
TF GraphDef | pb |
yolo11n.pb |
❌ | imgsz , batch |
TF لايت | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , batch |
TF إيدج TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , 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 |
الأسئلة الشائعة
كيف يمكنني تصدير نموذج YOLO11 إلى تنسيق ONNX ؟
يعد تصدير نموذج YOLO11 إلى صيغة ONNX أمرًا سهلاً ومباشرًا باستخدام Ultralytics. يوفر كلاً من طريقتين Python و CLI لتصدير النماذج.
مثال على ذلك
لمزيد من التفاصيل حول العملية، بما في ذلك الخيارات المتقدمة مثل التعامل مع أحجام الإدخال المختلفة، راجع قسمONNX .
ما هي فوائد استخدام TensorRT لتصدير النماذج؟
يوفر استخدام TensorRT لتصدير النماذج تحسينات كبيرة في الأداء، حيث يمكن لنماذج YOLO11 المصدرة إلى TensorRT تحقيق سرعة تصل إلى 5 أضعاف GPU ، مما يجعلها مثالية لتطبيقات الاستدلال في الوقت الحقيقي.
- تعدد الاستخدامات: تحسين النماذج لإعداد أجهزة معينة.
- السرعة: تحقيق استدلال أسرع من خلال التحسينات المتقدمة.
- التوافق: تتكامل بسلاسة مع أجهزة NVIDIA .
لمعرفة المزيد حول دمج TensorRT ، راجع دليل التكاملTensorRT .
كيف يمكنني تمكين التكميم INT8 عند تصدير نموذجي YOLO11 ؟
يعد التكميم INT8 طريقة ممتازة لضغط النموذج وتسريع الاستدلال، خاصةً على الأجهزة المتطورة. إليك كيفية تمكين التكميم INT8:
مثال على ذلك
يمكن تطبيق التكميم INT8 على تنسيقات مختلفة، مثل TensorRT و CoreML. يمكن العثور على مزيد من التفاصيل في قسم التصدير.
ما أهمية حجم المدخلات الديناميكية عند تصدير النماذج؟
يسمح حجم الإدخال الديناميكي للنموذج المُصدَّر بالتعامل مع أبعاد الصور المختلفة، مما يوفر المرونة وتحسين كفاءة المعالجة لحالات الاستخدام المختلفة. عند التصدير إلى تنسيقات مثل ONNX أو TensorRT ، فإن تمكين حجم الإدخال الديناميكي يضمن إمكانية تكيف النموذج مع أشكال الإدخال المختلفة بسلاسة.
لتمكين هذه الميزة، استخدم dynamic=True
علامة أثناء التصدير:
مثال على ذلك
للحصول على سياق إضافي، راجع تكوين حجم الإدخال الديناميكي.
ما هي حجج التصدير الرئيسية التي يجب مراعاتها لتحسين أداء النموذج؟
يعد فهم وسيطات التصدير وتكوينها أمرًا بالغ الأهمية لتحسين أداء النموذج:
format:
التنسيق المستهدف للنموذج المُصدَّر (على سبيل المثال,onnx
,torchscript
,tensorflow
).imgsz:
حجم الصورة المطلوب لمدخلات النموذج (على سبيل المثال,640
أو(height, width)
).half:
تمكين تكميم FP16، مما يقلل من حجم النموذج وربما يسرّع عملية الاستدلال.optimize:
يطبق تحسينات محددة للبيئات المتنقلة أو المقيدة.int8:
تمكين التكميم INT8، وهو مفيد للغاية لعمليات النشر على الحواف.
للاطلاع على قائمة مفصلة وشروحات لجميع وسيطات التصدير، قم بزيارة قسم وسيطات التصدير.