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

تصدير نماذج Ultralytics YOLO إلى DEEPX#

يتطلب نشر نماذج الرؤية الحاسوبية على أجهزة NPU متخصصة تنسيقًا متوافقًا ومحسّنًا للنموذج. يتيح تصدير نماذج Ultralytics YOLO إلى تنسيق DEEPX إجراء استدلال فعّال ومكمّم بدقة INT8 على مسرّعات NPU من DEEPX. يشرح هذا الدليل خطوات تحويل نماذج YOLO إلى تنسيق DEEPX ونشرها على الأجهزة المدعومة من DEEPX.

ما هي DEEPX؟#

DEEPX NPU Inference

DEEPX شركة أشباه موصلات للذكاء الاصطناعي متخصصة في وحدات المعالجة العصبية (NPUs) المصممة لإجراء استدلال التعلم العميق بكفاءة في استهلاك الطاقة عند الحافة. صُممت وحدات NPU من DEEPX للتطبيقات المضمنة والصناعية الصعبة في مجال الذكاء الاصطناعي، إذ توفر معدل نقل عالٍ مع استهلاك منخفض للطاقة. وتناسب أجهزتها سيناريوهات النشر التي يكون فيها الاتصال بالسحابة غير موثوق أو غير مرغوب فيه، مثل الروبوتات والكاميرات الذكية وأنظمة الأتمتة الصناعية.

تنسيق تصدير DEEPX#

ينتج عن التصدير إلى DEEPX ملف نموذج مترجم .dxnn محسّن للتشغيل على أجهزة NPU من DEEPX. يستخدم مسار الترجمة مجموعة الأدوات dx_com لإجراء تكميم INT8 والتحسين الخاص بالأجهزة، وينشئ مجلد نموذج مستقلًا جاهزًا للنشر.

الميزات الرئيسية لنماذج DEEPX#

تقدم نماذج DEEPX عدة مزايا للنشر على الحافة:

  • تكميم INT8: تُكمَّم النماذج إلى دقة INT8 أثناء التصدير، ما يقلل حجم النموذج بدرجة كبيرة ويعزز معدل نقل NPU إلى أقصى حد. تعرّف على المزيد حول تكميم النماذج.
  • محسّن لـ NPU: يُترجم تنسيق .dxnn خصيصًا لأجهزة NPU من DEEPX، مع الاستفادة من وحدات التسريع المخصصة لإجراء استدلال سريع وفعّال.
  • استهلاك منخفض للطاقة: من خلال نقل الاستدلال إلى NPU، تستهلك نماذج DEEPX طاقة أقل بكثير من الاستدلال المكافئ على CPU أو GPU.
  • الدقة المعتمدة على المعايرة: يستخدم التصدير معايرةً قائمة على EMA باستخدام صور حقيقية من مجموعة البيانات لتقليل فقدان الدقة أثناء التكميم.
  • مخرجات مكتفية ذاتيًا: يجمع مجلد النموذج المُصدَّر الملف الثنائي المُترجَم، وإعدادات المعايرة، والبيانات الوصفية لتسهيل النشر.

المهام المدعومة#

يدعم التصدير إلى DEEPX مهام Ultralytics السبع جميعها. لا يتوفر التقسيم الدلالي وتقدير العمق إلا في YOLO26، وهي العائلة الوحيدة التي تتضمن هذه الرؤوس.

المهمةYOLOv8YOLO11YOLO26
كشف✅✅✅
تجزئة✅✅✅
دلالي❌❌✅
العمق❌❌✅
تصنيف✅✅✅
الوضعية✅✅✅
OBB✅✅✅

التصدير إلى DEEPX: تحويل نموذج YOLO#

صدّر نموذج Ultralytics YOLO إلى تنسيق DEEPX وشغّل الاستدلال باستخدام النموذج المُصدَّر.

ملاحظة

لا يُدعَم التصدير إلى DEEPX إلا على أجهزة Linux بمعمارية x86-64. ولا يُدعَم التصدير على ARM64 (aarch64). ومع ذلك، فإن نماذج dxnn المُصدَّرة متوافقة بالكامل وقابلة للتنفيذ على منصات ARM64.

التثبيت#

لتثبيت الحزم المطلوبة، شغّل:

التثبيت
# Install the required package for YOLO
pip install ultralytics

يُثبَّت المصرّف dx_com تلقائيًا من PyPI عند أول عملية تصدير. يوفر DX-COM 2.4.1 حزم wheel لإصدارات Python من 3.8 إلى 3.14 على Linux بمعمارية x86-64 وبإصدار glibc 2.31 أو أحدث. لتثبيت تبعيات التصدير مسبقًا:

pip install "ultralytics[export-deepx]"

لتثبيت المستودع بوضع قابل للتحرير، استبدل "ultralytics[export-deepx]" بـ -e ".[export-base,export-deepx]". لإعادة إنشاء بيئة Python 3.14 واختبار التصدير السريع المستخدمين في CI، شغّل أداة إنشاء البيئة الحالية من جذر المستودع:

ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepx

تتطلب أداة إنشاء البيئة uv ونسخة Ultralytics مستنسخة ومثبّتة. وتطبّق الأداة قيود التبعيات التي خضعت للاختبار تلقائيًا.

الاستخدام#

يدعم تنسيق DEEPX أوضاع التصدير والتنبؤ والتحقق. يُجرى الاستدلال والتحقق على أجهزة DEEPX NPU. صدّر نموذجك، ثم حمّل النموذج المُصدَّر لإجراء الاستدلال أو التحقق من دقته.

التصدير
from ultralytics import YOLO

# ⁨تحميل نموذج YOLO26⁩
model = YOLO("yolo26n.pt")

# ⁨صدّر النموذج إلى تنسيق DEEPX (يُفرض quantize=8 تلقائيًا)⁩
model.export(format="deepx")  # creates 'yolo26n_deepx_model/'
التنبؤ
from ultralytics import YOLO

# ⁨حمّل نموذج DEEPX المُصدَّر⁩
model = YOLO("yolo26n_deepx_model")

# ⁨تنفيذ الاستدلال⁩
results = model("https://ultralytics.com/images/bus.jpg")
تحقّق
from ultralytics import YOLO

# ⁨حمّل نموذج DEEPX المُصدَّر⁩
model = YOLO("yolo26n_deepx_model")

# ⁨# التحقق من الدقة على مجموعة بيانات COCO8⁩
metrics = model.val(data="coco8.yaml")

وسيطات التصدير#

المعاملالنوعالافتراضيالوصف
formatstr'deepx'التنسيق المستهدف للنموذج المُصدَّر، والذي يحدد التوافق مع أجهزة DEEPX NPU.
imgszint أو tuple640حجم الصورة المطلوب لإدخال النموذج. يتطلب التصدير إلى DEEPX إدخالًا مربعًا — مرّر عددًا صحيحًا (مثل 640) أو صفًا تكون فيه قيمة الارتفاع مساوية لقيمة العرض.
quantizeint أو str8/تلقائيدقة التكميم. يلزم 8 (INT8) للتصدير إلى DEEPX، ويُفعَّل تلقائيًا إذا لم يُحدَّد. ويحل محل العَلَمين المهملين half/int8.
simplifyboolTrueيبسّط رسم ONNX الوسيط باستخدام onnxslim.
opsetintNoneيحدد إصدار opset الخاص بـ ONNX لرسم ONNX الوسيط. وإذا لم يُحدَّد، فسيُستخدم أحدث إصدار مدعوم.
datastrNoneملف YAML لمجموعة البيانات المستخدم لمعايرة INT8؛ أما التصنيف فيتطلب دليلًا لمجموعة بيانات أو اسم مجموعة بيانات مدمجة. إذا لم يُحدَّد مع quantize=8، فستختار Ultralytics مجموعة بيانات المعايرة الافتراضية لمهمة النموذج.
devicestrNoneيحدد الجهاز المستخدم للتصدير: GPU (device=0) أو CPU (device=cpu).
optimizeboolFalseيتيح تحسينًا أعلى للمترجم، ما يقلل زمن استجابة الاستدلال ويزيد زمن الترجمة.
نصيحة

أجرِ التصدير إلى DEEPX دائمًا على مضيف Linux بمعمارية x86-64. لا يدعم المترجم dx_com معمارية ARM64.

لمزيد من التفاصيل حول عملية التصدير، تفضّل بزيارة صفحة وثائق Ultralytics حول التصدير.

بنية الإخراج#

بعد نجاح التصدير، يُنشأ مجلد للنموذج بالتخطيط التالي:

yolo26n_deepx_model/
├── yolo26n.dxnn     # Compiled DEEPX model binary (NPU executable)
├── config.json      # Calibration and preprocessing configuration
└── metadata.yaml    # Model metadata (classes, image size, task, etc.)

الملف .dxnn هو الملف الثنائي للنموذج المُترجَم، ويحمّله وقت التشغيل dx_engine مباشرةً على NPU. ويحتوي metadata.yaml على أسماء الفئات وحجم الصورة ومعلومات أخرى تستخدمها منظومة الاستدلال في Ultralytics.

نشر نماذج YOLO المُصدَّرة إلى DEEPX#

بعد تصدير نموذج Ultralytics YOLO بنجاح إلى تنسيق DEEPX، تتمثل الخطوة التالية في نشر هذه النماذج على أجهزة DEEPX NPU.

تثبيت وقت التشغيل#

يتطلب الاستدلال برنامج تشغيل DEEPX NPU ووقت التشغيل libdxrt وحزمة Python dx_engine.

ملاحظة

يدعم وقت تشغيل DEEPX كلاً من Linux بمعمارية x86-64 وARM64 (مثل Raspberry Pi 5).

# Install the NPU driver and libdxrt runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.4.1/dxrt-driver-dkms_2.4.1-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.4.1-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.3.2/libdxrt_3.3.2_all.deb
sudo apt install ./libdxrt_3.3.2_all.deb

# Create dx-engine wheel
cd /usr/share/libdxrt/python_package && sudo ./make_whl.sh

# Install the bundled dx_engine Python wheel
pip install dx_engine-*.whl

تحقق من تثبيت وقت التشغيل على نحو صحيح باستخدام dxrt-cli --version. من المفترض أن ترى مخرجات مشابهة لما يلي:

DXRT v3.3.2
Minimum Driver Versions
Device Driver: v2.4.0
PCIe Driver: v2.2.0
Firmware: v2.5.2
Minimum Compiler Versions
Compiler: v1.18.1
.dxnn File Format: v6

بعد تثبيت وقت التشغيل، أجرِ الاستدلال والتحقق على جهاز DEEPX كما هو موضح تمامًا في قسم الاستخدام أعلاه — إذ يُحمَّل _deepx_model المُصدَّر مباشرةً باستخدام YOLO(...).

التصور باستخدام dxtron#

إن dxtron أداة DEEPX لتصوير الرسوم البيانية، تُستخدم لفحص نموذج .dxnn المُترجَم.

ثبّت dxtron على Linux بمعمارية x86-64 بتنزيل الحزمة .deb من DEEPX SDK وتثبيتها عبر dpkg:

wget https://sdk.deepx.ai/release/dxtron/v2.0.1/dxtron_2.0.1_amd64.deb
sudo dpkg -i dxtron_2.0.1_amd64.deb

ثم افتح النموذج الذي صدّرته:

dxtron yolo26n_deepx_model/yolo26n.dxnn
ملاحظة

يتوفر dxtron لمنصات x86-64 وaarch64.

المعايير المرجعية#

أجرى فريق Ultralytics اختبارات معيارية لنماذج YOLO26، وقارن السرعة والدقة بين PyTorch وDEEPX.

الأداء
Raspberry Pi 5 DEEPX M1 NPU vs PyTorch benchmarks
النموذجالتنسيقالحالةالحجم (MB)metrics/mAP50-95(B)وقت الاستدلال (ms/im)
YOLO26nPyTorch✅5.30.4760315.2
YOLO26nDEEPX✅6.60.466034.6
YOLO26n-segPyTorch✅6.50.4080485.4
YOLO26n-segDEEPX✅7.90.392053.8
YOLO26n-posePyTorch✅7.60.4230506.3
YOLO26n-poseDEEPX✅8.80.459037.6
YOLO26n-obbPyTorch✅5.70.8171094.4
YOLO26n-obbDEEPX✅7.30.78356.4
النموذجالتنسيقالحالةالحجم (MB)acc (top1)acc (top5)وقت الاستدلال (ms/im)
YOLO26n-clsPyTorch✅5.60.4310.71623.8
YOLO26n-clsDEEPX✅5.90.3330.6862.7
ملاحظة

أُجري التحقق للاختبارات المعيارية أعلاه باستخدام COCO128 للكشف، وCOCO128-seg للتقسيم، وCOCO8-pose لتقدير الوضعيات، وImageNet100 للتصنيف، وDOTA128 لنماذج OBB. لا يشمل زمن الاستدلال المعالجة المسبقة أو اللاحقة.

نصائح لتحسين الأداء

لتحقيق أفضل معدل إنتاجية للاستدلال من DX-M1 NPU المتصل بـ Raspberry Pi 5، افتح ملف إعدادات الإقلاع وفعّل دعم PCIe Gen 3.

sudo nano /boot/firmware/config.txt

أضف الأسطر التالية في نهاية الملف:

dtparam=pciex1
dtparam=pciex1_gen=3

احفظ واخرج (Ctrl+X، ثم Y، ثم Enter)، وبعدها أعد التشغيل:

sudo reboot

تحقق من جيل PCIe. السرعة المتوقعة هي 8GT/s لـ PCIe Gen3.

sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"
  1. درّب نموذجك باستخدام وضع التدريب من Ultralytics
  2. صدّر إلى تنسيق DEEPX باستخدام model.export(format="deepx")
  3. تحقّق من الدقة باستخدام yolo val للتأكد من الحد الأدنى لفقدان التكميم
  4. استدلّ باستخدام yolo predict للتحقق النوعي
  5. انشر دليل _deepx_model/ المُصدَّر على أجهزة DEEPX NPU باستخدام وقت التشغيل dx_engine

تطبيقات واقعية#

تُعد نماذج YOLO المنشورة على أجهزة DEEPX NPU ملائمة لمجموعة واسعة من تطبيقات الذكاء الاصطناعي الطرفي:

  • المراقبة الذكية: كشف الأجسام في الوقت الفعلي لأنظمة الأمن والمراقبة، مع استهلاك منخفض للطاقة ومن دون الاعتماد على السحابة.
  • الأتمتة الصناعية: مراقبة الجودة على الجهاز، واكتشاف العيوب، ومراقبة العمليات في بيئات المصانع.
  • الروبوتات: الملاحة القائمة على الرؤية، وتجنب العوائق، والتعرف على الأجسام في الروبوتات والطائرات المسيّرة ذاتية التشغيل.
  • الزراعة الذكية: مراقبة صحة المحاصيل، واكتشاف الآفات، وتقدير الإنتاجية باستخدام الرؤية الحاسوبية في الزراعة.
  • تحليلات البيع بالتجزئة: تحليل حركة العملاء، ومراقبة الأرفف، وتتبع المخزون باستخدام الاستدلال الطرفي في الوقت الفعلي.

الملخص#

في هذا الدليل، تعلّمت كيفية تصدير نماذج Ultralytics YOLO إلى تنسيق DEEPX ونشرها على أجهزة DEEPX NPU. يستخدم مسار التصدير معايرة INT8 والمترجم dx_com لإنتاج ملف ثنائي .dxnn محسّن للأجهزة، بينما يتولى وقت التشغيل dx_engine الاستدلال على الجهاز.

يوفر الجمع بين Ultralytics YOLO وتقنية NPU من DEEPX حلًا فعالًا لتشغيل أحمال عمل الرؤية الحاسوبية المتقدمة على الأجهزة المضمّنة والطرفية — محققًا معدل إنتاجية مرتفعًا مع استهلاك منخفض للطاقة للتطبيقات الآنية.

لمزيد من التفاصيل حول الاستخدام، تفضّل بزيارة الموقع الرسمي لـ DEEPX.

كذلك، إذا كنت ترغب في معرفة المزيد عن تكاملات Ultralytics YOLO الأخرى، فتفضّل بزيارة صفحة دليل التكامل. ستجد هناك الكثير من الموارد والرؤى المفيدة.

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

  • يمكنك تصدير نموذجك باستخدام الطريقة export() في Python أو عبر CLI. يفعّل التصدير تكميم INT8 تلقائيًا ويستخدم مجموعة بيانات للمعايرة لتقليل فقدان الدقة. وتُثبَّت حزمة المترجم dx_com تلقائيًا إن لم تكن موجودة مسبقًا.

    مثال
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="deepx")
  • صُممت وحدات DEEPX NPU لتنفيذ عمليات INT8 بأقصى كفاءة. يكمّم المترجم dx_com النموذج أثناء التصدير باستخدام معايرة قائمة على EMA مع صور حقيقية من مجموعة البيانات، ما يتيح لوحدة NPU تقديم كامل أدائها. يُفرض INT8 دائمًا عند التصدير إلى DEEPX — وإذا طلبت دقة مختلفة، فسيُستعاض عنها بـ INT8 مع إصدار تحذير.

  • يتطلب تصدير نماذج DEEPX (ترجمتها) مضيفًا يعمل بنظام Linux بمعمارية x86-64. ولا يُدعَم التصدير على أجهزة ARM64 (aarch64) أو Windows. ويمكن إجراء الاستدلال باستخدام نموذج .dxnn المُصدَّر على أي منصة Linux (x86-64 وARM64) يدعمها وقت التشغيل dx_engine.

  • ينشئ التصدير دليلًا (مثل yolo26n_deepx_model/) يحتوي على:

    • yolo26n.dxnn — الملف الثنائي المُترجَم لوحدة NPU
    • config.json — إعدادات المعايرة والمعالجة المسبقة
    • metadata.yaml — البيانات الوصفية للنموذج، بما فيها أسماء الفئات وحجم الصورة
  • نعم. يمكن نشر أي نموذج دُرّب باستخدام وضع التدريب في Ultralytics وصُدّر باستخدام format="deepx" على أجهزة DEEPX NPU، شريطة أن يستخدم عمليات طبقات مدعومة. يدعم التصدير مهام Ultralytics السبع جميعها: الكشف، وتقسيم النماذج، والتقسيم الدلالي، وتقدير العمق، والتصنيف، وتقدير الوضعيات، ومربع الإحاطة الموجّه (OBB).

  • يضبط مسار التصدير إلى DEEPX المترجم dx_com لتنفيذ 100 خطوة معايرة باستخدام EMA على صور من مجموعة بيانات المعايرة. ويكفي عادةً استخدام بضع مئات من الصور لتحقيق دقة جيدة في التكميم. وجّه data إلى مجموعة بيانات أصغر إذا كان زمن الترجمة مصدر قلق مع مجموعات البيانات الكبيرة.

  • لا يأتي وقت تشغيل DEEPX مضمّنًا مع ultralytics، ويجب تثبيته بصورة منفصلة قبل إجراء الاستدلال. على أجهزة Linux بمعمارية x86-64 وLinux بمعمارية ARM64 (مثل Raspberry Pi 5)، ثبّت برنامج تشغيل NPU (dxrt-driver-dkms) ووقت التشغيل (libdxrt) من إصدارات DEEPX-AI على GitHub، ثم ثبّت حزمة Python wheel المضمّنة dx_engine. راجع قسم تثبيت وقت التشغيل أعلاه للاطلاع على الأوامر خطوة بخطوة.

التعليقات