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

تصدير النموذج مع 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', '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 لتصدير النماذج.

مثال على ذلك

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 و CoreML. يمكن العثور على مزيد من التفاصيل في قسم التصدير.

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

يسمح حجم الإدخال الديناميكي للنموذج المُصدَّر بالتعامل مع أبعاد الصور المختلفة، مما يوفر المرونة وتحسين كفاءة المعالجة لحالات الاستخدام المختلفة. عند التصدير إلى تنسيقات مثل 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، وهو مفيد للغاية لعمليات النشر على الحواف.

للاطلاع على قائمة مفصلة وشروحات لجميع وسيطات التصدير، قم بزيارة قسم وسيطات التصدير.

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

التعليقات