تصدير ONNX لنماذج YOLO26
استدلال أسرع بنسبة 43% تقريبًا.
- يمكن أن يؤدي تصدير نموذج Ultralytics YOLO26 إلى ONNX إلى تحسين سرعة الاستدلال بنسبة تصل إلى 43%، مما يتيح نشرًا أسرع وأكثر كفاءة.
غالبًا، عند نشر نماذج رؤية الحاسوب، ستحتاج إلى تنسيق نموذج يتسم بالمرونة والتوافق مع منصات متعددة.
يؤدي تصدير نماذج Ultralytics YOLO26 إلى تنسيق ONNX إلى تبسيط عملية النشر وضمان الأداء الأمثل عبر بيئات مختلفة. سيوضح لك هذا الدليل كيفية تحويل نماذج YOLO26 الخاصة بك إلى ONNX بسهولة وتعزيز قابليتها للتوسع وفعاليتها في التطبيقات الواقعية.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
ONNX و ONNX Runtime
ONNX، الذي يرمز إلى Open Neural Network Exchange، هو مشروع مجتمعي طورته في الأصل كل من Facebook و Microsoft. التطوير المستمر لـ ONNX هو جهد تعاوني مدعوم من قبل منظمات مختلفة مثل IBM و Amazon (من خلال AWS) و Google. يهدف المشروع إلى إنشاء تنسيق ملف مفتوح مصمم لتمثيل نماذج تعلم الآلة بطريقة تسمح باستخدامها عبر أطر عمل ذكاء اصطناعي وأجهزة مختلفة.
يمكن استخدام نماذج ONNX للانتقال بين أطر عمل مختلفة بسلاسة. على سبيل المثال، نموذج التعلم العميق تم تدريبه في PyTorch يمكن تصديره إلى تنسيق ONNX ثم استيراده بسهولة إلى TensorFlow.
بدلاً من ذلك، يمكن استخدام نماذج ONNX مع ONNX Runtime. ONNX Runtime هو مسرع متعدد المنصات ومتنوع لنماذج تعلم الآلة، وهو متوافق مع أطر عمل مثل PyTorch و TensorFlow و TFLite و scikit-learn، إلخ.
يعمل ONNX Runtime على تحسين تنفيذ نماذج ONNX من خلال الاستفادة من الإمكانات الخاصة بالأجهزة. يسمح هذا التحسين للنماذج بالعمل بكفاءة وأداء عالٍ على منصات أجهزة مختلفة، بما في ذلك CPUs و GPUs والمسرعات المتخصصة.
سواء تم استخدامه بشكل مستقل أو جنبًا إلى جنب مع ONNX Runtime، يوفر ONNX حلاً مرنًا لتعلم الآلة نشر النموذج والتوافق.
الميزات الرئيسية لنماذج ONNX
يمكن أن تُعزى قدرة ONNX على التعامل مع تنسيقات مختلفة إلى الميزات الرئيسية التالية:
-
تمثيل النماذج المشترك: يحدد ONNX مجموعة مشتركة من العوامل (مثل التلافيف، والطبقات، وما إلى ذلك) وتنسيق بيانات قياسي. عند تحويل نموذج إلى تنسيق ONNX، تتم ترجمة بنيته وأوزانه إلى هذا التمثيل المشترك. تضمن هذه الموحدة إمكانية فهم النموذج من قبل أي إطار عمل يدعم ONNX.
-
إصدارات وتوافق الإصدارات السابقة: يحافظ ONNX على نظام إصدار للعوامل الخاصة به. وهذا يضمن أنه حتى مع تطور المعيار، تظل النماذج التي تم إنشاؤها في الإصدارات الأقدم قابلة للاستخدام. يعد التوافق مع الإصدارات السابقة ميزة حاسمة تمنع النماذج من التقادم بسرعة.
-
تمثيل النماذج القائم على الرسم البياني: يمثل ONNX النماذج كرسوم بيانية حسابية. هذا الهيكل القائم على الرسم البياني هو وسيلة عالمية لتمثيل نماذج تعلم الآلة، حيث تمثل العقد العمليات أو الحسابات، وتمثل الحواف التنسورات التي تتدفق بينها. هذا التنسيق قابل للتكيف بسهولة مع أطر عمل مختلفة تمثل النماذج أيضًا كرسوم بيانية.
-
الأدوات والنظام البيئي: هناك نظام بيئي غني من الأدوات حول ONNX التي تساعد في تحويل النماذج وتصورها وتحسينها. تجعل هذه الأدوات من السهل على المطورين العمل مع نماذج ONNX وتحويل النماذج بين أطر عمل مختلفة بسلاسة.
الاستخدام الشائع لـ ONNX
قبل أن ننتقل إلى كيفية تصدير نماذج YOLO26 إلى تنسيق ONNX، دعنا نلقي نظرة على الأماكن التي تُستخدم فيها نماذج ONNX عادةً.
نشر CPU
غالبًا ما يتم نشر نماذج ONNX على CPUs نظرًا لتوافقها مع ONNX Runtime. تم تحسين وقت التشغيل هذا لتنفيذ CPU. إنه يحسن سرعة الاستدلال بشكل كبير ويجعل عمليات النشر على CPU في الوقت الفعلي ممكنة.
خيارات النشر المدعومة
بينما تُستخدم نماذج ONNX بشكل شائع على CPUs، يمكن أيضًا نشرها على المنصات التالية:
-
تسريع GPU: يدعم ONNX بالكامل تسريع GPU، وخاصة NVIDIA CUDA. يتيح ذلك تنفيذًا فعالاً على NVIDIA GPUs للمهام التي تتطلب قدرة حوسبة عالية.
-
الأجهزة الطرفية والمحمولة: يمتد ONNX إلى الأجهزة الطرفية والمحمولة، وهو مثالي لسيناريوهات الاستدلال على الجهاز وفي الوقت الفعلي. إنه خفيف الوزن ومتوافق مع أجهزة الحافة.
-
متصفحات الويب: يمكن لـ ONNX العمل مباشرة في متصفحات الويب، مما يشغل تطبيقات ذكاء اصطناعي تفاعلية وديناميكية قائمة على الويب.
تصدير نماذج YOLO26 إلى ONNX
يمكنك توسيع توافق النموذج ومرونة النشر عن طريق تحويل نماذج YOLO26 إلى تنسيق ONNX. Ultralytics YOLO26 يوفر عملية تصدير مباشرة يمكن أن تعزز أداء نموذجك بشكل كبير عبر منصات مختلفة.
التثبيت
لتثبيت الحزمة المطلوبة، قم بتشغيل:
# Install the required package for YOLO26
pip install ultralyticsللحصول على تعليمات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل تثبيت YOLO26. أثناء تثبيت الحزم المطلوبة لـ YOLO26، إذا واجهت أي صعوبات، استشر دليل المشكلات الشائعة للحصول على حلول ونصائح.
الاستخدام
قبل الغوص في تعليمات الاستخدام، تأكد من الاطلاع على مجموعة نماذج YOLO26 التي تقدمها Ultralytics. سيساعدك هذا في اختيار النموذج الأكثر ملاءمة لمتطلبات مشروعك.
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")وسائط التصدير
عند تصدير نموذج YOLO26 الخاص بك إلى تنسيق ONNX، يمكنك تخصيص العملية باستخدام وسائط مختلفة لتحسين احتياجات النشر الخاصة بك:
| الوسيط (Argument) | النوع (Type) | الافتراضي (Default) | الوصف (Description) |
|---|---|---|---|
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 | يضيف خاصية Non-Maximum Suppression (NMS)، وهو أمر ضروري للمعالجة اللاحقة للكشف الدقيق والفعال. |
batch | int | 1 | يحدد حجم استنتاج دفعات النموذج المصدر أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المصدر في وقت واحد في وضع predict. |
device | str | None | بالنسبة لتصديرات Edge TPU، يتم ضبط هذا تلقائيًا على 1. يحدد الجهاز للتصدير: GPU (device=0)، CPU (device=cpu)، MPS لشرائح Apple (device=mps). |
لمزيد من التفاصيل حول عملية التصدير، قم بزيارة صفحة توثيق Ultralytics حول التصدير.
نشر نماذج YOLO26 ONNX المصدرة
بمجرد تصدير نماذج Ultralytics YOLO26 الخاصة بك بنجاح إلى تنسيق ONNX، فإن الخطوة التالية هي نشر هذه النماذج في بيئات مختلفة. للحصول على تعليمات مفصلة حول نشر نماذج ONNX الخاصة بك، ألق نظرة على الموارد التالية:
-
توثيق ONNX Runtime Python API: يقدم هذا الدليل معلومات أساسية لتحميل وتشغيل نماذج ONNX باستخدام ONNX Runtime.
-
النشر على الأجهزة الطرفية: تحقق من صفحة التوثيق هذه للحصول على أمثلة مختلفة لنشر نماذج ONNX على الحافة.
-
دروس ONNX على GitHub: مجموعة من البرامج التعليمية الشاملة التي تغطي جوانب مختلفة من استخدام وتنفيذ نماذج ONNX في سيناريوهات مختلفة.
-
Triton Inference Server: تعرف على كيفية نشر نماذج ONNX الخاصة بك باستخدام NVIDIA Triton Inference Server لعمليات نشر قابلة للتوسع وعالية الأداء.
ملخص
في هذا الدليل، تعلمت كيفية تصدير نماذج Ultralytics YOLO26 إلى تنسيق ONNX لزيادة قابليتها للتشغيل البيني والأداء عبر منصات مختلفة. كما تم تعريفك بخيارات ONNX Runtime و ONNX للنشر.
تعد عملية تصدير ONNX واحدة فقط من العديد من تنسيقات التصدير التي تدعمها Ultralytics YOLO26، مما يسمح لك بنشر نماذجك في أي بيئة تقريبًا. اعتمادًا على احتياجاتك الخاصة، قد ترغب أيضًا في استكشاف خيارات تصدير أخرى مثل TensorRT للحصول على أقصى أداء لـ GPU أو CoreML لأجهزة Apple.
لمزيد من التفاصيل حول الاستخدام، قم بزيارة توثيق ONNX الرسمي.
أيضًا، إذا كنت ترغب في معرفة المزيد حول تكاملات Ultralytics YOLO26 الأخرى، قم بزيارة صفحة دليل التكامل. ستجد الكثير من الموارد والرؤى المفيدة هناك.
الأسئلة الشائعة
كيف يمكنني تصدير نماذج YOLO26 إلى تنسيق ONNX باستخدام Ultralytics؟
لتصدير نماذج YOLO26 الخاصة بك إلى تنسيق ONNX باستخدام Ultralytics، اتبع الخطوات التالية:
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")لمزيد من التفاصيل، قم بزيارة توثيق التصدير.
ما هي مزايا استخدام ONNX Runtime لنشر نماذج YOLO26؟
يوفر استخدام ONNX Runtime لنشر نماذج YOLO26 العديد من المزايا:
- التوافق عبر المنصات: يدعم ONNX Runtime منصات مختلفة، مثل Windows و macOS و Linux، مما يضمن تشغيل نماذجك بسلاسة عبر بيئات مختلفة.
- تسريع الأجهزة: يمكن لـ ONNX Runtime الاستفادة من التحسينات الخاصة بالأجهزة لـ CPUs و GPUs والمسرعات المخصصة، مما يوفر استدلالًا عالي الأداء.
- التشغيل البيني لأطر العمل: يمكن تحويل النماذج التي تم تدريبها في أطر عمل شائعة مثل PyTorch أو TensorFlow بسهولة إلى تنسيق ONNX وتشغيلها باستخدام ONNX Runtime.
- تحسين الأداء: يمكن أن يوفر ONNX Runtime تسريعًا لـ CPU يصل إلى 3 مرات مقارنة بنماذج PyTorch الأصلية، مما يجعله مثاليًا لسيناريوهات النشر حيث تكون موارد GPU محدودة.
تعرف على المزيد من خلال التحقق من توثيق ONNX Runtime.
ما هي خيارات النشر المتاحة لنماذج YOLO26 المصدرة إلى ONNX؟
يمكن نشر نماذج YOLO26 المصدرة إلى ONNX على منصات مختلفة بما في ذلك:
- CPUs: استخدام ONNX Runtime لاستدلال CPU محسن.
- GPUs: الاستفادة من NVIDIA CUDA لتسريع GPU عالي الأداء.
- الأجهزة الطرفية: تشغيل نماذج خفيفة الوزن على الأجهزة الطرفية والمحمولة لاستدلال في الوقت الفعلي وعلى الجهاز.
- متصفحات الويب: تنفيذ النماذج مباشرة داخل متصفحات الويب للتطبيقات التفاعلية القائمة على الويب.
- خدمات السحابة: النشر على منصات السحابة التي تدعم تنسيق ONNX لاستدلال قابل للتوسع.
لمزيد من المعلومات، استكشف دليلنا حول خيارات نشر النماذج.
لماذا يجب أن أستخدم تنسيق ONNX لنماذج Ultralytics YOLO26؟
يوفر استخدام تنسيق ONNX لنماذج Ultralytics YOLO26 فوائد عديدة:
- التوافقية: يسمح ONNX بنقل النماذج بين أطر عمل تعلم الآلة المختلفة بسلاسة.
- تحسين الأداء: يمكن لـ ONNX Runtime تعزيز أداء النموذج باستخدام التحسينات الخاصة بالأجهزة.
- المرونة: يدعم ONNX بيئات نشر مختلفة، مما يتيح لك استخدام نفس النموذج على منصات مختلفة دون تعديل.
- التوحيد القياسي: يوفر ONNX تنسيقًا موحدًا مدعومًا على نطاق واسع عبر الصناعة، مما يضمن التوافق على المدى الطويل.
ارجع إلى الدليل الشامل حول تصدير نماذج YOLO26 إلى ONNX.
كيف يمكنني استكشاف الأخطاء وإصلاحها عند تصدير نماذج YOLO26 إلى ONNX؟
عند تصدير نماذج YOLO26 إلى ONNX، قد تواجه مشكلات شائعة مثل عدم توافق الاعتمادات أو عمليات غير مدعومة. لاستكشاف هذه المشكلات وإصلاحها:
- تحقق من تثبيت الإصدار الصحيح من الاعتمادات المطلوبة.
- راجع توثيق ONNX الرسمي لمعرفة العمليات والميزات المدعومة.
- راجع رسائل الخطأ للحصول على تلميحات واستشر دليل المشكلات الشائعة في Ultralytics.
- حاول استخدام وسائط تصدير مختلفة مثل
simplify=Trueأو ضبطopsetالإصدار. - بالنسبة لمشكلات حجم الإدخال الديناميكي، قم بتعيين
dynamic=Trueأثناء التصدير.
إذا استمرت المشكلات، تواصل مع دعم Ultralytics للحصول على مزيد من المساعدة.