تصدير النموذج مع 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' , '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 لتصدير النماذج.
مثال على ذلك
لمزيد من التفاصيل حول العملية، بما في ذلك الخيارات المتقدمة مثل التعامل مع أحجام الإدخال المختلفة، راجع دليل تكاملONNX .
ما هي فوائد استخدام TensorRT لتصدير النماذج؟
يوفر استخدام TensorRT لتصدير النماذج تحسينات كبيرة في الأداء، حيث يمكن لنماذج YOLO11 المصدرة إلى TensorRT تحقيق سرعة تصل إلى 5 أضعاف GPU ، مما يجعلها مثالية لتطبيقات الاستدلال في الوقت الحقيقي.
- تعدد الاستخدامات: تحسين النماذج لإعداد أجهزة معينة.
- السرعة: تحقيق استدلال أسرع من خلال التحسينات المتقدمة.
- التوافق: تتكامل بسلاسة مع أجهزة NVIDIA .
لمعرفة المزيد حول دمج TensorRT ، راجع دليل التكاملTensorRT .
كيف يمكنني تمكين التكميم INT8 عند تصدير نموذجي YOLO11 ؟
يعد التكميم INT8 طريقة ممتازة لضغط النموذج وتسريع الاستدلال، خاصةً على الأجهزة المتطورة. إليك كيفية تمكين التكميم INT8:
مثال على ذلك
يمكن تطبيق التكميم INT8 على تنسيقات مختلفة، مثل TensorRT, OpenVINOو CoreML. للحصول على نتائج تكميم مثالية، قم بتوفير ممثل مجموعة البيانات باستخدام data
المعلمة.
ما أهمية حجم المدخلات الديناميكية عند تصدير النماذج؟
يسمح حجم الإدخال الديناميكي للنموذج المُصدَّر بالتعامل مع أبعاد الصور المختلفة، مما يوفر المرونة وتحسين كفاءة المعالجة لحالات الاستخدام المختلفة. عند التصدير إلى تنسيقات مثل ONNX أو TensorRTفإن تمكين حجم الإدخال الديناميكي يضمن قدرة النموذج على التكيف مع أشكال الإدخال المختلفة بسلاسة.
لتمكين هذه الميزة، استخدم dynamic=True
علامة أثناء التصدير:
مثال على ذلك
يعد تحديد حجم الإدخال الديناميكي مفيدًا بشكل خاص للتطبيقات التي قد تختلف فيها أبعاد الإدخال، مثل معالجة الفيديو أو عند معالجة الصور من مصادر مختلفة.
ما هي حجج التصدير الرئيسية التي يجب مراعاتها لتحسين أداء النموذج؟
يعد فهم وسيطات التصدير وتكوينها أمرًا بالغ الأهمية لتحسين أداء النموذج:
format:
التنسيق المستهدف للنموذج المُصدَّر (على سبيل المثال,onnx
,torchscript
,tensorflow
).imgsz:
حجم الصورة المطلوب لمدخلات النموذج (على سبيل المثال,640
أو(height, width)
).half:
تمكين تكميم FP16، مما يقلل من حجم النموذج وربما يسرّع عملية الاستدلال.optimize:
يطبق تحسينات محددة للبيئات المتنقلة أو المقيدة.int8:
تمكين التكميم INT8، وهو مفيد للغاية ل حافة الذكاء الاصطناعي عمليات النشر.
للنشر على منصات أجهزة معينة، ضع في اعتبارك استخدام تنسيقات تصدير متخصصة مثل TensorRT لوحدات معالجة الرسومات NVIDIA , CoreML لأجهزة Apple، أو Edge TPU لأجهزة Google Coral.