تصدير ONNX لنماذج YOLO11
في كثير من الأحيان، عند نشر نماذج الرؤية الحاسوبية، ستحتاج إلى تنسيق نموذج يتسم بالمرونة والتوافق مع منصات متعددة.
إن تصدير نماذج Ultralytics YOLO11 إلى تنسيق ONNX يبسط عملية النشر ويضمن الأداء الأمثل عبر البيئات المختلفة. سيوضح لك هذا الدليل كيفية تحويل نماذج YOLO11 الخاصة بك بسهولة إلى ONNX وتعزيز قابليتها للتوسع وفعاليتها في التطبيقات الواقعية.
ONNX ووقت تشغيل ONNX
ONNX، والتي تعني تبادل الشبكة العصبية المفتوحة (Neural Network)، هي مشروع مجتمعي تم تطويره في البداية بواسطة Facebook و Microsoft. التطوير المستمر لـ ONNX هو جهد تعاوني تدعمه العديد من المنظمات مثل IBM و Amazon (من خلال AWS) و Google. يهدف المشروع إلى إنشاء تنسيق ملف مفتوح مصمم لتمثيل نماذج التعلم الآلي بطريقة تسمح باستخدامها عبر أطر عمل الذكاء الاصطناعي والأجهزة المختلفة.
يمكن استخدام نماذج ONNX للانتقال بين الأطر المختلفة بسلاسة. على سبيل المثال، يمكن تصدير نموذج التعلم العميق الذي تم تدريبه في PyTorch إلى تنسيق ONNX ثم استيراده بسهولة إلى TensorFlow.
بدلاً من ذلك، يمكن استخدام نماذج ONNX مع ONNX Runtime. ONNX Runtime هو مسرع متعدد الاستخدامات عبر الأنظمة الأساسية لنماذج التعلم الآلي المتوافقة مع أطر عمل مثل PyTorch و TensorFlow و TFLite و scikit-learn وما إلى ذلك.
يعمل وقت تشغيل ONNX على تحسين تنفيذ نماذج ONNX من خلال الاستفادة من الإمكانات الخاصة بالأجهزة. يتيح هذا التحسين تشغيل النماذج بكفاءة وبأداء عالٍ على العديد من منصات الأجهزة، بما في ذلك وحدات المعالجة المركزية (CPUs) ووحدات معالجة الرسومات (GPUs) والمسرّعات المتخصصة.
سواء تم استخدامه بشكل مستقل أو بالتزامن مع ONNX Runtime، يوفر ONNX حلاً مرنًا لـ نشر نموذج تعلم الآلة والتوافق.
الميزات الرئيسية لنماذج ONNX
يمكن أن تُعزى قدرة ONNX على التعامل مع التنسيقات المختلفة إلى الميزات الرئيسية التالية:
-
تمثيل النموذج الشائع: تحدد ONNX مجموعة شائعة من المعاملات (مثل الالتواءات والطبقات وما إلى ذلك) وتنسيق بيانات قياسي. عند تحويل نموذج إلى تنسيق ONNX، تتم ترجمة بنيته وأوزانه إلى هذا التمثيل الشائع. يضمن هذا التوحيد إمكانية فهم النموذج من خلال أي إطار عمل يدعم ONNX.
-
إصدارات والتوافق مع الإصدارات السابقة: تحتفظ ONNX بنظام إصدار للمشغلين الخاصين بها. وهذا يضمن أنه حتى مع تطور المعيار، تظل النماذج التي تم إنشاؤها في الإصدارات القديمة قابلة للاستخدام. التوافق مع الإصدارات السابقة هو ميزة حاسمة تمنع النماذج من أن تصبح قديمة بسرعة.
-
تمثيل النموذج المستند إلى الرسم البياني: يمثل ONNX النماذج كرسوم بيانية حسابية. هذا الهيكل المستند إلى الرسم البياني هو طريقة عالمية لتمثيل نماذج تعلم الآلة، حيث تمثل العقد عمليات حسابية، وتمثل الحواف الموترات المتدفقة بينها. هذا التنسيق قابل للتكيف بسهولة مع الأطر المختلفة التي تمثل أيضًا النماذج كرسوم بيانية.
-
الأدوات والنظام البيئي: يوجد نظام بيئي غني بالأدوات حول ONNX التي تساعد في تحويل النماذج وتصورها وتحسينها. تسهل هذه الأدوات على المطورين العمل مع نماذج ONNX وتحويل النماذج بين الأطر المختلفة بسلاسة.
الاستخدام الشائع لـ ONNX
قبل أن ننتقل إلى كيفية تصدير نماذج YOLO11 إلى تنسيق ONNX، دعنا نلقي نظرة على الأماكن التي تستخدم فيها نماذج ONNX عادةً.
نشر وحدة المعالجة المركزية (CPU)
غالبًا ما يتم نشر نماذج ONNX على وحدات المعالجة المركزية (CPUs) نظرًا لتوافقها مع وقت تشغيل ONNX. تم تحسين وقت التشغيل هذا لتنفيذ وحدة المعالجة المركزية (CPU). إنه يحسن بشكل كبير من سرعة الاستدلال ويجعل عمليات نشر وحدة المعالجة المركزية (CPU) في الوقت الفعلي ممكنة.
خيارات النشر المدعومة
في حين أن نماذج ONNX تستخدم بشكل شائع على وحدات المعالجة المركزية CPUs، إلا أنه يمكن نشرها أيضًا على الأنظمة الأساسية التالية:
-
تسريع GPU: يدعم ONNX بشكل كامل تسريع GPU، وخاصة NVIDIA CUDA. يتيح ذلك التنفيذ الفعال على وحدات معالجة الرسومات NVIDIA للمهام التي تتطلب قوة حسابية عالية.
-
الأجهزة الطرفية والمحمولة: يمتد ONNX إلى الأجهزة الطرفية والمحمولة، وهو مثالي لسيناريوهات الاستدلال في الوقت الفعلي وعلى الجهاز. إنه خفيف الوزن ومتوافق مع الأجهزة الطرفية.
-
متصفحات الويب: يمكن لـ ONNX التشغيل مباشرة في متصفحات الويب، مما يدعم تطبيقات الذكاء الاصطناعي التفاعلية والديناميكية المستندة إلى الويب.
تصدير نماذج YOLO11 إلى ONNX
يمكنك توسيع توافق النموذج ومرونة النشر عن طريق تحويل نماذج YOLO11 إلى تنسيق ONNX. توفر Ultralytics YOLO11 عملية تصدير مباشرة يمكن أن تعزز أداء النموذج الخاص بك بشكل كبير عبر منصات مختلفة.
التثبيت
لتثبيت الحزمة المطلوبة، قم بتشغيل:
التثبيت
# Install the required package for YOLO11
pip install ultralytics
للحصول على إرشادات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت، تحقق من دليل تثبيت YOLO11. أثناء تثبيت الحزم المطلوبة لـ YOLO11، إذا واجهت أي صعوبات، فراجع دليل المشكلات الشائعة للحصول على الحلول والنصائح.
الاستخدام
قبل الغوص في إرشادات الاستخدام، تأكد من مراجعة مجموعة نماذج YOLO11 التي تقدمها Ultralytics. سيساعدك هذا في اختيار النموذج الأنسب لمتطلبات مشروعك.
الاستخدام
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo11n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'
# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'
وسائط التصدير
عند تصدير نموذج YOLO11 الخاص بك إلى تنسيق ONNX، يمكنك تخصيص العملية باستخدام وسيطات مختلفة لتحسينها لتلبية احتياجات النشر المحددة الخاصة بك:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
format |
str |
'onnx' |
تنسيق الهدف للنموذج الذي تم تصديره، والذي يحدد التوافق مع بيئات النشر المختلفة. |
imgsz |
int أو tuple |
640 |
حجم الصورة المطلوب لإدخال النموذج. يمكن أن يكون عددًا صحيحًا للصور المربعة أو صفًا. (height, width) لأبعاد محددة. |
half |
bool |
False |
يتيح تكميم FP16 (نصف الدقة)، مما يقلل من حجم النموذج وربما يسرع الاستدلال على الأجهزة المدعومة. |
dynamic |
bool |
False |
يسمح بأحجام إدخال ديناميكية، مما يعزز المرونة في التعامل مع أبعاد الصور المتغيرة. |
simplify |
bool |
True |
يبسط الرسم البياني للنموذج باستخدام onnxslim ، مما قد يحسن الأداء والتوافق. |
opset |
int |
None |
يحدد إصدار ONNX opset للتوافق مع مختلف محللات ONNX وأوقات التشغيل. إذا لم يتم تعيينه، فسيستخدم أحدث إصدار مدعوم. |
nms |
bool |
False |
يضيف قمع غير الأقصى (NMS)، وهو ضروري للمعالجة اللاحقة للكشف الدقيقة والفعالة. |
batch |
int |
1 |
يحدد حجم الاستدلال الدفعي لنموذج التصدير أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المصدر في وقت واحد في predict الوضع. |
device |
str |
None |
يحدد الجهاز للتصدير: GPU (device=0 )، وحدة معالجة مركزية (CPU) (device=cpu )، MPS لـ Apple silicon (device=mps ). |
لمزيد من التفاصيل حول عملية التصدير، قم بزيارة صفحة وثائق Ultralytics حول التصدير.
نشر نماذج YOLO11 ONNX المصدرة
بمجرد تصدير نماذج Ultralytics YOLO11 الخاصة بك بنجاح إلى تنسيق ONNX، فإن الخطوة التالية هي نشر هذه النماذج في بيئات مختلفة. للحصول على إرشادات مفصلة حول نشر نماذج ONNX الخاصة بك، ألق نظرة على الموارد التالية:
-
توثيق واجهة برمجة تطبيقات python لوقت التشغيل ONNX: يوفر هذا الدليل معلومات أساسية لتحميل وتشغيل نماذج ONNX باستخدام ONNX Runtime.
-
النشر على الأجهزة الطرفية: تحقق من صفحة المستندات هذه للحصول على أمثلة مختلفة لنشر نماذج ONNX على الحافة.
-
دروس ONNX التعليمية على GitHub: مجموعة من الدروس التعليمية الشاملة التي تغطي جوانب مختلفة لاستخدام وتنفيذ نماذج ONNX في سيناريوهات مختلفة.
-
خادم استنتاج Triton: تعرف على كيفية نشر نماذج ONNX الخاصة بك باستخدام خادم استنتاج NVIDIA Triton لعمليات نشر عالية الأداء وقابلة للتطوير.
ملخص
في هذا الدليل، تعلمت كيفية تصدير نماذج Ultralytics YOLO11 إلى تنسيق ONNX لزيادة قابليتها للتشغيل البيني والأداء عبر مختلف الأنظمة الأساسية. تم تقديمك أيضًا إلى ONNX Runtime وخيارات نشر ONNX.
يعد تصدير ONNX مجرد واحد من العديد من تنسيقات التصدير التي تدعمها Ultralytics YOLO11، مما يسمح لك بنشر نماذجك في أي بيئة تقريبًا. اعتمادًا على احتياجاتك الخاصة، قد ترغب أيضًا في استكشاف خيارات تصدير أخرى مثل TensorRT لتحقيق أقصى قدر من أداء وحدة معالجة الرسومات (GPU) أو CoreML لأجهزة Apple.
لمزيد من التفاصيل حول الاستخدام، تفضل بزيارة وثائق ONNX الرسمية.
أيضًا، إذا كنت ترغب في معرفة المزيد حول تكاملات Ultralytics YOLO11 الأخرى، فقم بزيارة صفحة دليل التكامل الخاصة بنا. ستجد الكثير من الموارد والأفكار المفيدة هناك.
الأسئلة الشائعة
كيف يمكنني تصدير نماذج YOLO11 إلى صيغة ONNX باستخدام Ultralytics؟
لتصدير نماذج YOLO11 الخاصة بك إلى تنسيق ONNX باستخدام Ultralytics، اتبع الخطوات التالية:
الاستخدام
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo11n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'
# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'
لمزيد من التفاصيل، قم بزيارة وثائق التصدير.
ما هي مزايا استخدام ONNX Runtime لنشر نماذج YOLO11؟
يوفر استخدام ONNX Runtime لنشر نماذج YOLO11 العديد من المزايا:
- التوافق عبر الأنظمة الأساسية: يدعم ONNX Runtime أنظمة أساسية متنوعة، مثل Windows و macOS و Linux، مما يضمن تشغيل النماذج الخاصة بك بسلاسة عبر بيئات مختلفة.
- تسريع الأجهزة: يمكن لـ ONNX Runtime الاستفادة من التحسينات الخاصة بالأجهزة لوحدات المعالجة المركزية ووحدات معالجة الرسوميات والمسرّعات المخصصة، مما يوفر استدلالًا عالي الأداء.
- التوافق التشغيلي للإطارات: يمكن بسهولة تحويل النماذج التي تم تدريبها في أطر عمل شائعة مثل PyTorch أو TensorFlow إلى تنسيق ONNX وتشغيلها باستخدام ONNX Runtime.
- تحسين الأداء: يمكن أن يوفر ONNX Runtime تسريعًا لوحدة المعالجة المركزية يصل إلى 3x مقارنة بنماذج PyTorch الأصلية، مما يجعله مثاليًا لسيناريوهات النشر حيث تكون موارد GPU محدودة.
تعرف على المزيد من خلال الاطلاع على وثائق ONNX Runtime.
ما هي خيارات النشر المتاحة لنماذج YOLO11 المصدرة إلى ONNX؟
يمكن نشر نماذج YOLO11 التي تم تصديرها إلى ONNX على منصات مختلفة بما في ذلك:
- وحدات المعالجة المركزية CPUs: استخدام ONNX Runtime للاستدلال الأمثل لوحدة المعالجة المركزية.
- وحدات معالجة الرسوميات (GPUs): الاستفادة من NVIDIA CUDA لتسريع وحدة معالجة الرسوميات عالية الأداء.
- الأجهزة الطرفية: تشغيل نماذج خفيفة الوزن على الأجهزة الطرفية والمحمولة للاستدلال في الوقت الفعلي وعلى الجهاز.
- متصفحات الويب: تنفيذ النماذج مباشرة داخل متصفحات الويب لتطبيقات الويب التفاعلية.
- الخدمات السحابية: النشر على المنصات السحابية التي تدعم تنسيق ONNX للاستدلال القابل للتطوير.
لمزيد من المعلومات، استكشف دليلنا حول خيارات نشر النموذج.
لماذا يجب عليّ استخدام تنسيق ONNX لنماذج Ultralytics YOLO11؟
يوفر استخدام تنسيق ONNX لنماذج Ultralytics YOLO11 العديد من المزايا:
- إمكانية التشغيل البيني: يسمح ONNX بنقل النماذج بين أطر عمل تعلم الآلة المختلفة بسلاسة.
- تحسين الأداء: يمكن لـ ONNX Runtime تحسين أداء النموذج باستخدام التحسينات الخاصة بالأجهزة.
- المرونة: يدعم ONNX بيئات نشر متنوعة، مما يتيح لك استخدام نفس النموذج على منصات مختلفة دون تعديل.
- التوحيد القياسي: يوفر ONNX تنسيقًا موحدًا مدعومًا على نطاق واسع في جميع أنحاء الصناعة، مما يضمن التوافق على المدى الطويل.
راجع الدليل الشامل حول تصدير نماذج YOLO11 إلى ONNX.
كيف يمكنني استكشاف المشكلات وإصلاحها عند تصدير نماذج YOLO11 إلى ONNX؟
عند تصدير نماذج YOLO11 إلى ONNX، قد تواجه مشكلات شائعة مثل التبعيات غير المتطابقة أو العمليات غير المدعومة. لاستكشاف هذه المشكلات وإصلاحها:
- تحقق من أن لديك الإصدار الصحيح من التبعيات المطلوبة المثبتة.
- تحقق من وثائق ONNX الرسمية لمعرفة المشغلين والميزات المدعومة.
- راجع رسائل الخطأ للحصول على أدلة واستشر دليل المشكلات الشائعة في Ultralytics.
- حاول استخدام وسائط تصدير مختلفة مثل
simplify=True
أو تعديل الـopset
الإصدار. - بالنسبة لمشكلات حجم الإدخال الديناميكي، قم بتعيين
dynamic=True
أثناء التصدير.
إذا استمرت المشكلات، فاتصل بدعم Ultralytics للحصول على مزيد من المساعدة.