تصدير 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، مشروعًا مجتمعيًا طورته في الأصل شركتا فيسبوك ومايكروسوفت. يُعد التطوير المستمر لـ ONNX جهدًا تعاونيًا تدعمه مؤسسات متنوعة مثل IBM وAmazon (عبر AWS) وGoogle. يهدف المشروع إلى إنشاء تنسيق ملفات مفتوح مصمم لتنفيذ نماذج التعلم الآلي بطريقة تسمح باستخدامها عبر أطر عمل ذكاء اصطناعي وأجهزة مختلفة.
يمكن استخدام نماذج ONNX للانتقال بسلاسة بين أطر العمل المختلفة. على سبيل المثال، يمكن تصدير نموذج تعلم عميق مُدرب في PyTorch إلى تنسيق ONNX ثم استيراده بسهولة إلى TensorFlow.
بدلاً من ذلك، يمكن استخدام نماذج ONNX مع ONNX Runtime. يُعد ONNX Runtime محرك تسريع متعدد الاستخدامات ومنصات متعددة لنماذج التعلم الآلي ومتوافق مع أطر العمل مثل PyTorch، وTensorFlow، و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. هذا المحرك مُحسَّن للتنفيذ على وحدة المعالجة المركزية. إنه يحسن سرعة الاستدلال بشكل كبير ويجعل عمليات النشر في الوقت الفعلي على وحدات المعالجة المركزية ممكنة.
خيارات النشر المدعومة#
بينما تُستخدم نماذج ONNX بشكل شائع على وحدات المعالجة المركزية، يمكن أيضًا نشرها على المنصات التالية:
-
تسريع وحدة معالجة الرسومات (GPU Acceleration): تدعم ONNX تسريع وحدة معالجة الرسومات بالكامل، لا سيما NVIDIA CUDA. للتدريب والاستدلال الأصليين على وحدات معالجة الرسومات من AMD، استخدم PyTorch ROCm؛ حيث يتطلب ملف ONNX مع ذلك وقت تشغيل متوافقاً مع AMD.
-
الأجهزة الطرفية والمحمولة (Edge and Mobile Devices): تمتد ONNX لتشمل الأجهزة الطرفية والمحمولة، وهي مثالية لسيناريوهات الاستدلال على الجهاز وفي الوقت الفعلي. إنها خفيفة الوزن ومتوافقة مع الأجهزة الطرفية، وتعمل كأساس لتنسيقات وحدات NPU التابعة للبائعين مثل Huawei Ascend وQualcomm QNN لأجهزة Snapdragon، وRKNN لوحدات Rockchip NPU.
-
متصفحات الويب: يمكن لـ ONNX العمل مباشرة في متصفحات الويب، مما يدعم تطبيقات الذكاء الاصطناعي التفاعلية والديناميكية القائمة على الويب.
المهام المدعومة#
يدعم تصدير ONNX جميع مهام Ultralytics السبع. التجزئة الدلالية وتقدير العمق متوفران فقط مع YOLO26، وهي العائلة الوحيدة التي توفر تلك الرؤوس.
تصدير نماذج YOLO26 إلى ONNX#
يمكنك توسيع نطاق توافق النماذج ومرونة النشر عن طريق تحويل نماذج YOLO26 إلى تنسيق ONNX. توفر Ultralytics YOLO26 عملية تصدير مباشرة يمكنها تحسين أداء نموذجك بشكل كبير عبر مختلف المنصات.
التثبيت#
لتثبيت الحزمة المطلوبة، قم بتشغيل:
# Install the required package for YOLO26
pip install ultralyticsللحصول على إرشادات تفصيلية وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل تثبيت YOLO26. أثناء تثبيت الحزم المطلوبة لـ YOLO26، إذا واجهت أي صعوبات، فاستشر دليل المشكلات الشائعة للحصول على الحلول والنصائح.
الاستخدام#
قبل الغوص في إرشادات الاستخدام، تأكد من الاطلاع على مجموعة نماذج YOLO26 التي توفرها Ultralytics. سيساعدك هذا في اختيار النموذج الأنسب لمتطلبات مشروعك.
يدعم تنسيق ONNX أوضاع التصدير (Export)، والتنبؤ (Predict)، والتحقق (Validate). قم بتصدير نموذجك، ثم تحميل النموذج المُصَدَّر لتشغيل الاستدلال أو التحقق من دقته.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml") # creates 'yolo26n_int8.onnx'from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")وسائط التصدير#
عند تصدير نموذج YOLO26 الخاص بك إلى تنسيق ONNX، يمكنك تخصيص العملية باستخدام وسائط مختلفة لتحسينها وفقًا لاحتياجات النشر المحددة الخاصة بك:
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'onnx' | التنسيق المستهدف للنموذج المصدر، والذي يحدد التوافق مع بيئات النشر المختلفة. |
imgsz | int أو tuple | 640 | حجم الصورة المطلوب لإدخال النموذج. يمكن أن يكون رقماً صحيحاً للصور المربعة أو صفاً (tuple) (height, width) لأبعاد محددة. |
quantize | int أو str | None | دقة التكميم: 16 (FP16) أو 8 (التكميم الثابت INT8 باستخدام ONNX Runtime باستخدام صور المعايرة من data، مما ينتج عنه نموذج _int8.onnx)؛ 32/غير المعين هو FP32. يحل محل علامات half/int8 المُهملة. |
data | str | None | ملف Dataset YAML المستخدم لمعايرة INT8؛ يأخذ التصنيف بدلاً من ذلك دليل مجموعة بيانات أو اسم مجموعة بيانات مدمجة. إذا تم حذفه مع quantize=8, تحدد Ultralytics مجموعة بيانات المعايرة الافتراضية لمهمة النموذج. |
fraction | float أو int أو list | 1.0 | مجموعة فرعية للمعايرة كنسبة، أو عدد صور، أو نسب/أعداد [train, val, test]. قوائم العنصرين تترك test بالكامل، بينما 0 تتخطاها. |
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 حول التصدير.
نشر نماذج YOLO26 ONNX المصدرة#
بمجرد تصدير نماذج Ultralytics YOLO26 بنجاح إلى تنسيق ONNX، فإن الخطوة التالية هي نشر هذه النماذج في بيئات مختلفة. للحصول على تعليمات مفصلة حول نشر نماذج ONNX الخاصة بك، ألقِ نظرة على الموارد التالية:
-
توثيق واجهة برمجة تطبيقات ONNX Runtime Python API Documentation: يوفر هذا الدليل معلومات أساسية لتحميل وتشغيل نماذج ONNX باستخدام ONNX Runtime.
-
النشر على الأجهزة الطرفية (Deploying on Edge Devices): تحقق من صفحة المستندات هذه للاطلاع على أمثلة مختلفة لنشر نماذج ONNX على الأجهزة الطرفية.
-
دروس تعليمية لـ ONNX على GitHub: مجموعة من البرامج التعليمية الشاملة التي تغطي جوانب مختلفة من استخدام وتنفيذ نماذج ONNX في سيناريوهات مختلفة.
-
خادم الاستدلال Triton Inference Server: تعرف على كيفية نشر نماذج ONNX الخاصة بك باستخدام خادم Triton Inference Server من NVIDIA لعمليات نشر عالية الأداء وقابلة للتوسع.
ملخص#
في هذا الدليل، تعلمت كيفية تصدير نماذج Ultralytics YOLO26 إلى تنسيق ONNX لزيادة قابليتها للتشغيل البيني وأدائها عبر منصات مختلفة. كما تم تعريفك بـ ONNX Runtime وخيارات نشر ONNX.
يُعد تصدير ONNX واحداً فقط من العديد من تنسيقات التصدير التي تدعمها Ultralytics YOLO26، مما يتيح لك نشر نماذجك في أي بيئة تقريباً. اعتماداً على احتياجاتك الخاصة، قد ترغب أيضاً في استكشاف خيارات تصدير أخرى مثل TensorRT لتحقيق أقصى أداء لوحدة معالجة الرسومات أو CoreML لأجهزة Apple.
لمزيد من التفاصيل حول الاستخدام، تفضل بزيارة الوثائق الرسمية لـ ONNX.
أيضاً، إذا كنت ترغب في معرفة المزيد حول تكاملات Ultralytics YOLO26 الأخرى، تفضل بزيارة صفحة دليل التكامل. ستجد هناك الكثير من الموارد والرؤى المفيدة.
الأسئلة الشائعة#
لتصدير نماذج YOLO26 إلى تنسيق ONNX باستخدام Ultralytics، اتبع الخطوات التالية:
الاستخدامfrom ultralytics import YOLO # Load a 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 منصات مختلفة، مثل Windows و macOS و Linux، مما يضمن تشغيل نماذجك بسلاسة عبر بيئات مختلفة.
- تسريع الأجهزة: يمكن لـ ONNX Runtime الاستفادة من التحسينات الخاصة بالأجهزة لوحدات المعالجة المركزية (CPUs) ووحدات معالجة الرسومات (GPUs) والمسرعات المخصصة، مما يوفر استدلالًا عالي الأداء.
- قابلية التشغيل البيني لإطار العمل: يمكن تحويل النماذج المُدربة في أطر العمل الشائعة مثل PyTorch أو TensorFlow بسهولة إلى تنسيق ONNX وتشغيلها باستخدام ONNX Runtime.
- تحسين الأداء: يمكن أن يوفر ONNX Runtime تسريعًا يصل إلى 3 أضعاف لوحدة المعالجة المركزية مقارنة بنماذج PyTorch الأصلية، مما يجعله مثاليًا لسيناريوهات النشر حيث تكون موارد GPU محدودة.
تعرف على المزيد من خلال مراجعة توثيق ONNX Runtime.
يمكن نشر نماذج YOLO26 المصدرة إلى ONNX على منصات مختلفة بما في ذلك:
- وحدات المعالجة المركزية (CPUs): استخدام ONNX Runtime للاستدلال الأمثل على وحدة المعالجة المركزية.
- وحدات معالجة الرسومات (GPUs): الاستفادة من NVIDIA CUDA لتسريع GPU عالي الأداء.
- الأجهزة الطرفية: تشغيل نماذج خفيفة الوزن على الأجهزة الطرفية والمحمولة للاستدلال في الوقت الفعلي وعلى الجهاز.
- متصفحات الويب: تنفيذ النماذج مباشرة داخل متصفحات الويب للتطبيقات التفاعلية القائمة على الويب.
- الخدمات السحابية: النشر على منصات سحابية تدعم تنسيق ONNX للاستدلال القابل للتوسع.
لمزيد من المعلومات، استكشف دليلنا حول خيارات نشر النماذج.
يوفر استخدام تنسيق ONNX لنماذج Ultralytics YOLO26 فوائد عديدة:
- التوافق: يسمح ONNX بنقل النماذج بين أطر عمل تعلم الآلة المختلفة بسلاسة.
- تحسين الأداء: يمكن لـ ONNX Runtime تحسين أداء النموذج من خلال الاستفادة من التحسينات الخاصة بالأجهزة.
- المرونة: يدعم ONNX بيئات نشر مختلفة، مما يتيح لك استخدام نفس النموذج على منصات مختلفة دون تعديل.
- التوحيد القياسي: يوفر ONNX تنسيقًا موحدًا مدعومًا على نطاق واسع في جميع أنحاء الصناعة، مما يضمن التوافق على المدى الطويل.
ارجع إلى الدليل الشامل حول تصدير نماذج YOLO26 إلى ONNX.
عند تصدير نماذج YOLO26 إلى ONNX، قد تواجه مشكلات شائعة مثل عدم تطابق التبعيات أو العمليات غير المدعومة. لاستكشاف هذه المشكلات وإصلاحها:
- تحقق من أنك قمت بتثبيت الإصدار الصحيح من التبعيات المطلوبة.
- تحقق من توثيق ONNX الرسمي لمعرفة المشغلين والميزات المدعومة.
- راجع رسائل الخطأ للبحث عن أدلة واستشر دليل المشكلات الشائعة لـ Ultralytics.
- جرب استخدام وسائط تصدير مختلفة مثل
simplify=Trueأو ضبط إصدارopset. - لمشكلات حجم الإدخال الديناميكي، قم بتعيين
dynamic=Trueأثناء التصدير.
إذا استمرت المشكلات، فاتصل بدعم Ultralytics للحصول على مزيد من المساعدة.