Ultralytics YOLO27: انضم إلى قائمة الانتظار.
ابدأ

تصدير NXP i.MX95 باستخدام Neutron

صدّر Ultralytics YOLO باستخدام format="nxp" لإنتاج نموذج .tflite بدقة INT8، مُترجم لـ NXP i.MX95 Neutron NPU. يعيد المُصدِّر استخدام مسار التحويل والمعايرة في LiteRT، ثم يشغّل مترجم NXP Neutron SDK 3.3.0 من أجل نشر الذكاء الاصطناعي على الأجهزة الطرفية.

يختلف هذا الهدف عن Sony IMX500 (format="imx"). تستخدم معالجات NXP i.MX8M Plus وi.MX93 ومعالجات NXP الأخرى مجموعات مسرّعات مختلفة؛ لذا لا يمكن استخدام مُخرَج i.MX95 بالتبادل مع تلك الأهداف.

التصدير#

صدّر على Linux x86_64 باستخدام Python 3.10 أو إصدار أحدث. تم التحقق من صحة الترجمة باستخدام Python 3.13 و3.14. يثبّت Ultralytics تبعيات التحويل عند الحاجة. يتوفر Neutron SDK من مستودع حزم NXP.

pip install -U ultralytics
pip install eiq-neutron-sdk==3.3.0 --extra-index-url https://eiq.nxp.com/repository
التصدير إلى NXP i.MX95
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
path = model.export(format="nxp", imgsz=640, data="coco128.yaml")
# Creates yolo26n_nxp.tflite

استخدم صور معايرة تمثّل بيئة النشر، بما في ذلك الكاميرا والإضاءة وأحجام الأجسام فيها. قد يؤدي تكميم INT8 إلى خفض الدقة؛ لذا قارن yolo26n_int8.tflite الوسيط بنموذج PyTorch على الجهاز المضيف. يُعد coco128.yaml مثالًا ملائمًا، لكنه لا يغني عن المعايرة الخاصة بالتطبيق ومجموعة بيانات تحقق مستقلة.

المعاملالوصف
imgszحجم صورة إدخال ثابت، مثل 640 أو (480, 640).
quantizeINT8 (8)؛ يُفعّل تلقائيًا. الدقات الأخرى غير مدعومة.
dataملف YAML لمجموعة بيانات المعايرة، أو مجموعة بيانات للتصنيف.
fractionنسبة صور المعايرة أو عددها.
deviceالجهاز المستخدم أثناء التصدير والمعايرة. يظل الهدف المُترجم هو i.MX95.

حجم الدفعة ثابت عند 1. تستخدم عمليات تصدير الكشف التنبؤات الأولية لإجراء NMS خارجي؛ ويطبّق Ultralytics هذه المعالجة اللاحقة أثناء التنبؤ والتحقق. لا يدعم هذا التصدير NMS المضمن ولا مخرجات top-k الخالية من NMS في YOLO26.

المنصة#

في منصة Ultralytics، افتح علامة التبويب Export لأحد النماذج واختر NXP. حدد حجم الصورة ونزّل مُخرَج _nxp.tflite المُترجم عند اكتمال التصدير. تشغّل المنصة المترجم على وحدات CPU لديها؛ ولا يلزم وجود لوحة NXP إلا للنشر وقياس الأداء. راجع شرح تصدير النماذج على المنصة للاطلاع على سير العمل العام.

تعرض المنصة INT8 كإعداد ثابت، وتستخدم مجموعة بيانات المعايرة الافتراضية للمُصدِّر والمناسبة لمهمة النموذج. ولا تعرض حاليًا عناصر التحكم data أو fraction الخاصة بالمعايرة. استخدم أمثلة التصدير باستخدام Python أو CLI أعلاه لمعايرة النموذج بصور تمثيلية من اختيارك.

النشر على i.MX95#

ثبّت بيئة تشغيل TensorFlow Lite وlibneutron_delegate.so وبرنامج تشغيل Neutron والبرامج الثابتة التي توفرها NXP لنظام BSP المتوافق مع Neutron SDK 3.3.0. اتبع دليل النشر من NXP لإعداد اللوحة والتحقق من توافق بيئة التشغيل.

تُحمّل بيئة تشغيل Ultralytics tflite_runtime الخاص باللوحة ومفوِّض Neutron. أبقِ اللاحقة _nxp.tflite كي يحدد Ultralytics بيئة تشغيل NXP. شغّل الأمثلة التالية الخاصة بـ التنبؤ والتحقق على اللوحة:

إجراء التنبؤ باستخدام نموذج NXP
from ultralytics import YOLO

model = YOLO("yolo26n_nxp.tflite")
results = model.predict("https://ultralytics.com/images/bus.jpg", imgsz=640)
التحقق من نموذج NXP
from ultralytics import YOLO

model = YOLO("yolo26n_nxp.tflite")
metrics = model.val(data="coco128.yaml", imgsz=640, batch=1)

لقياس أداء TensorFlow Lite مباشرةً، استخدم الملف التنفيذي لقياس الأداء على اللوحة:

benchmark_model --graph=yolo26n_nxp.tflite --external_delegate_path=/usr/lib/libneutron_delegate.so

تغطية العمليات والأداء#

يستبدل التجميع المخططات الفرعية المدعومة بعمليات NeutronGraph. وتبقى العمليات غير المدعومة على CPU. لا يعني نجاح التصدير أن كل عملية تعمل على NPU أو أن عبء التبديل بين CPU وNPU قد أُزيل. وقد يظل تنفيذ الانتباه وتغييرات تخطيط الموتر والمعالجة اللاحقة يتطلب CPU.

يتضمن سجل التصدير إحصاءات مترجم NXP: العمليات المحوّلة، وأقسام NPU، وتقديرات الذاكرة، ودورات NPU المقدّرة. ولا تشمل هذه التقديرات عمليات CPU أو المعالجة المسبقة أو اللاحقة أو عبء بيئة التشغيل. قِس زمن استجابة الإطار الكامل وذروة RAM ومساحة التخزين اللازمة للنشر على اللوحة المستهدفة؛ فلا يمكن لـ TOPS النظري وحجم الملف المُترجم تحديد هذه القيم.

تحقّق من الوسيط المُعاير بمقارنته بنموذج PyTorch، ثم تحقّق من النموذج المُترجم على اللوحة باستخدام مجموعة البيانات وحجم الصورة نفسيهما. لا يثبت التجميع على الجهاز المضيف ولا فحوصات دقة الوسيط التكافؤ العددي أو زمن الاستجابة على NPU. راجع أفضل ممارسات نشر النماذج لتخطيط عملية التحقق على مستوى التطبيق.

الأسئلة الشائعة#

  • استخدم model.export(format="nxp", data="your_dataset.yaml") في Python أو yolo export model=best.pt format=nxp data=your_dataset.yaml في CLI على Linux x86_64. يعاير المُصدِّر النموذج إلى INT8 ويترجمه باستخدام Neutron SDK 3.3.0، لينتج best_nxp.tflite. اتبع أمثلة التصدير لنموذج YOLO26n مُدرّب مسبقًا.

  • نعم. حمّل YOLO("best_nxp.tflite") واستدعِ predict() أو val()، أو استخدم yolo predict وyolo val. يستخدم المساران بيئة تشغيل TensorFlow Lite ومفوِّض Neutron الموجودين على اللوحة. حافظ على لاحقة اسم الملف _nxp.tflite وثبّت بيئة تشغيل NXP المتوافقة الموضحة في النشر على i.MX95.

  • يستهدف هذا التصدير i.MX95 فقط. تستخدم معالجات NXP الأخرى مسرّعات وسلاسل أدوات نشر مختلفة، لذا لا يمكن إعادة استخدام مُخرَج i.MX95 Neutron على i.MX8M Plus أو i.MX93. يستهدف الخيار المنفصل format="imx" جهاز Sony IMX500، وليس معالجات NXP i.MX.

  • يترجم Neutron المخططات الفرعية المدعومة لـ NPU، ويُبقي العمليات غير المدعومة في TensorFlow Lite لتنفيذها على CPU. وقد يؤدي الانتباه وتغييرات التخطيط والمعالجة اللاحقة إلى إنشاء أقسام متعددة وعبء نقل إضافي. افحص إحصاءات العمليات المحوّلة في المترجم، ثم حلّل أداء التطبيق كاملًا على اللوحة؛ فنجاح الترجمة لا يضمن التنفيذ الكامل على NPU.

  • عاير باستخدام صور تمثيلية، وقارن PyTorch والوسيط INT8 والنموذج المُترجم على مجموعة تحقق مستقلة. استخدم وضع التحقق لقياس الدقة، وقِس زمن استجابة الإطار وذروة RAM للعملية ومساحة التخزين اللازمة للنشر على لوحة i.MX95. لا تكفي تقديرات ذاكرة المترجم وحجم ملف النموذج وتصنيف TOPS لتحديد أداء التطبيق.

المساهمون

التعليقات

اطرح سؤالًا، وشارك نتائجك، أو ساعد شخصًا آخر.