تصدير نماذج Ultralytics YOLO إلى DEEPX
يتطلب نشر نماذج الرؤية الحاسوبية على عتاد NPU متخصص تنسيق نموذج متوافقًا ومحسّنًا. يتيح تصدير نماذج Ultralytics YOLO إلى تنسيق DEEPX استدلالًا فعالًا بتكميم INT8 على مسرّعات DEEPX NPU. يرشدك هذا الدليل خلال تحويل نماذج YOLO إلى تنسيق DEEPX ونشرها على عتاد يعمل بتقنية DEEPX.
ما هي DEEPX؟#
DEEPX شركة أشباه موصلات للذكاء الاصطناعي وشريك لـUltralytics، متخصصة في وحدات المعالجة العصبية (NPUs) المصممة لاستدلال التعلّم العميق على الحافة بكفاءة في استهلاك الطاقة. صُممت وحدات DEEPX NPU للتطبيقات المضمنة والصناعية المتطلبة في مجال الذكاء الاصطناعي، وتوفر إنتاجية عالية مع استهلاك ضئيل للطاقة. ويلائم عتادها سيناريوهات النشر التي يكون فيها الاتصال بالسحابة غير موثوق أو غير مرغوب فيه، مثل الروبوتات والكاميرات الذكية وأنظمة الأتمتة الصناعية.
تنسيق تصدير 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، وهي العائلة الوحيدة التي تتضمن هذه الرؤوس.
التصدير إلى 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.5.0 حزم wheel لـ Python 3.8–3.14 على Linux بنظام x86-64 مع glibc 2.31 أو أحدث، ويتطلب ذاكرة RAM بسعة 16 GB على الأقل. لتثبيت تبعيات التصدير مسبقًا:
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 مستنسخة ومثبّتة. وتطبّق الأداة قيود التبعيات التي خضعت للاختبار تلقائيًا.
ينتج DX-COM 2.5.0 تنسيق الملفات .dxnn بالإصدار v9، الذي لا يُحمَّل إلا على DX-RT 3.5.0 أو أحدث. ثبّت بيئة تشغيل DEEPX المطابقة الموضحة في تثبيت بيئة التشغيل، وراجع مصفوفة توافق إصدارات DEEPX قبل ترقية المكونات الفردية.
الاستخدام#
يدعم تنسيق DEEPX أوضاع التصدير والتنبؤ والتحقق. يُجرى الاستدلال والتحقق على أجهزة DEEPX NPU. صدّر نموذجك، ثم حمّل النموذج المُصدَّر لإجراء الاستدلال أو التحقق من دقته.
يتطلب كلٌّ من التنبؤ والتحقق جهاز DEEPX NPU مع تثبيت بيئة تشغيل DEEPX (راجع تثبيت بيئة التشغيل). يُجرى التصدير على مضيف Linux بنظام x86-64 من دون NPU؛ انسخ المجلد _deepx_model/ المُصدَّر إلى جهاز 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")وسيطات التصدير#
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'deepx' | التنسيق المستهدف للنموذج المُصدَّر، والذي يحدد التوافق مع أجهزة DEEPX NPU. |
imgsz | int أو tuple | 640 | حجم الصورة المطلوب لإدخال النموذج. يتطلب التصدير إلى DEEPX إدخالًا مربعًا — مرّر عددًا صحيحًا (مثل 640) أو صفًا تكون فيه قيمة الارتفاع مساوية لقيمة العرض. |
quantize | int أو str | 8/تلقائي | دقة التكميم. يلزم 8 (INT8) للتصدير إلى DEEPX، ويُفعَّل تلقائيًا إذا لم يُحدَّد. ويحل محل العَلَمين المهملين half/int8. |
simplify | bool | True | يبسّط رسم ONNX الوسيط باستخدام onnxslim. |
opset | int | None | يحدد إصدار مجموعة عمليات ONNX للرسم البياني الوسيط لـ ONNX. إذا لم يُحدَّد، يُستخدم الإصدار 18 من مجموعة العمليات (أقل في PyTorch < 2.4)، على ألا يتجاوز الإصدار المثبّت onnx. |
data | str | None | ملف YAML لمجموعة البيانات المستخدم لمعايرة INT8؛ أما التصنيف فيتطلب دليلًا لمجموعة بيانات أو اسم مجموعة بيانات مدمجة. إذا لم يُحدَّد مع quantize=8، فستختار Ultralytics مجموعة بيانات المعايرة الافتراضية لمهمة النموذج. |
device | str | None | يحدد الجهاز المستخدم للتصدير: GPU (device=0) أو CPU (device=cpu). |
optimize | bool | False | يتيح تحسينًا أعلى للمترجم، ما يقلل زمن استجابة الاستدلال ويزيد زمن الترجمة. |
أجرِ التصدير إلى 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 (الإصدار v2.7.0 أو أحدث)، وبيئة تشغيل DX-RT (الإصدار v3.5.0 أو أحدث)، وبرنامج NPU الثابت v2.7.6 أو أحدث، وحزمة Python المسماة dx_engine. هذه هي الإصدارات المطلوبة لتشغيل النماذج المُجمَّعة باستخدام DX-COM 2.5.0.
يدعم وقت تشغيل DEEPX كلاً من Linux بمعمارية x86-64 وARM64 (مثل Raspberry Pi 5).
ثبّت برنامج تشغيل NPU وحزمة بيئة التشغيل libdxrt-bin باستخدام أحد الخيارين التاليين.
الخيار A: التثبيت من حزم إصدارات GitHub#
نزّل حزمتَي برنامج التشغيل وبيئة التشغيل .deb من مستودعات DEEPX-AI على GitHub وثبّتهما. تُوفَّر حزمة بيئة التشغيل لكل معمارية CPU (amd64 أو arm64):
# Install the NPU driver and DX-RT runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.7.0/dxrt-driver-dkms_2.7.0-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.7.0-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.5.0/libdxrt-bin_3.5.0_$(dpkg --print-architecture).deb
sudo apt install ./libdxrt-bin_3.5.0_$(dpkg --print-architecture).debالخيار B: التثبيت من مستودع DEEPX apt#
سجّل مستودع DEEPX apt مرة واحدة، ثم ثبّت برنامج التشغيل وبيئة التشغيل وحدّثهما باستخدام apt:
# Add the DEEPX apt repository
wget -O - https://apt.releases.deepx.ai/gpg | sudo gpg --dearmor -o /usr/share/keyrings/deepx-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/deepx-archive-keyring.gpg] https://apt.releases.deepx.ai $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") main" | sudo tee /etc/apt/sources.list.d/deepx.list
# Install the NPU driver and DX-RT runtime
sudo apt update
sudo apt install dxrt-driver-dkms libdxrt-binأعِد تشغيل المضيف بعد تثبيت برنامج التشغيل حتى تُحمَّل وحدة النواة الجديدة قبل تشغيل dxcli.
حزمة Python والبرنامج الثابت#
تضمّن libdxrt-bin حزم wheel لـ dx_engine مخصصة لـ Python 3.8–3.14 في /usr/share/libdxrt-bin/python/، لكنها لا تثبّتها. ثبّت حزمة wheel المطابقة لإصدار Python لديك في البيئة التي ثُبّت فيها Ultralytics وNumPy:
python -m pip install --upgrade --no-index --find-links /usr/share/libdxrt-bin/python dx_engineيتطلب DX-RT 3.5.0 برنامج NPU ثابتًا بالإصدار v2.7.6 أو أحدث. تحقّق من إصدار البرنامج الثابت ومعرّف الجهاز باستخدام dxcli -s، وإذا كان الإصدار أقدم، فحدّثه باستخدام صورة البرنامج الثابت الخاصة بوحدتك. تستخدم وحدتا DX-M1 وDX-M1M M.2 صورتَي برنامج ثابت مختلفتين؛ لذا نزّل الصورة المطابقة لوحدتك فقط. تعرض dxcli -s الوحدة باسم M1 أو M1M ضمن معلومات الجهاز:
# Download the firmware image matching your module (DX-M1 shown)
wget -O dx-m1-2.7.6.bin https://github.com/DEEPX-AI/dx_fw/raw/main/m1/2.7.6/mdot2/fw.bin
# wget -O dx-m1m-2.7.6.bin https://github.com/DEEPX-AI/dx_fw/raw/main/m1m/2.7.6/mdot2/fw.bin # DX-M1M
# Update the selected device; replace DEVICE_ID with its ID from dxcli -s
sudo systemctl stop dxrt.service
dxcli -d DEVICE_ID -u dx-m1-2.7.6.bin # for DX-M1M use dx-m1m-2.7.6.bin insteadبعد تثبيت البرنامج الثابت، أوقف تشغيل المضيف بالكامل ثم شغّله مجددًا قبل التحقق من إصدار البرنامج الثابت. إذا تعذّر فصل الطاقة فعليًا، فأعِد تشغيل المضيف كما هو موضح في دليل استكشاف أخطاء DEEPX وإصلاحها.
تحقّق من التثبيت باستخدام dxcli -s، الذي يعرض إصدارات بيئة التشغيل وبرنامج التشغيل والبرنامج الثابت لكل جهاز. يرفع import dx_engine استثناءً من النوع RuntimeError إذا اختلف إصدارا حزمة wheel dx_engine وبيئة التشغيل libdxrt المثبّتة؛ لذا أعد تثبيت حزمة wheel من /usr/share/libdxrt-bin/python/ بعد ترقية بيئة التشغيل.
بعد تثبيت وقت التشغيل، أجرِ الاستدلال والتحقق على جهاز DEEPX كما هو موضح تمامًا في قسم الاستخدام أعلاه — إذ يُحمَّل _deepx_model المُصدَّر مباشرةً باستخدام YOLO(...).
فحص النموذج المُجمَّع#
يستبدل DX-COM 2.5.0 عارض المخططات DX-TRON بتقرير ملخص تجميع تفاعلي بصيغة HTML يعرض بنية النموذج المُجمَّع وتوزيع عبء العمل بين CPU وNPU. عند الحاجة، أنشئ التقرير بإعادة تجميع نموذج ONNX الوسيط الذي أنشأه التصدير باستخدام CLI الخاص بـ dxcom على مضيف التصدير x86-64:
dxcom -m yolo26n.onnx -c yolo26n_deepx_model/config.json -o yolo26n_deepx_report --export_htmlافتح yolo26n_deepx_report/yolo26n_summary.html في متصفح لعرض التقرير.
المعايير المرجعية#
أجرى فريق Ultralytics اختبارات معيارية لنماذج YOLO26، وقارن السرعة والدقة بين PyTorch وDEEPX.
| النموذج | التنسيق | الحالة | الحجم (MB) | metrics/mAP50-95(B) | وقت الاستدلال (ms/im) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4760 | 315.2 |
| YOLO26n | DEEPX | ✅ | 6.6 | 0.4660 | 34.6 |
| YOLO26n-seg | PyTorch | ✅ | 6.5 | 0.4080 | 485.4 |
| YOLO26n-seg | DEEPX | ✅ | 7.9 | 0.3920 | 53.8 |
| YOLO26n-pose | PyTorch | ✅ | 7.6 | 0.4230 | 506.3 |
| YOLO26n-pose | DEEPX | ✅ | 8.8 | 0.4590 | 37.6 |
| YOLO26n-obb | PyTorch | ✅ | 5.7 | 0.817 | 1094.4 |
| YOLO26n-obb | DEEPX | ✅ | 7.3 | 0.783 | 56.4 |
| النموذج | التنسيق | الحالة | الحجم (MB) | acc (top1) | acc (top5) | وقت الاستدلال (ms/im) |
|---|---|---|---|---|---|---|
| YOLO26n-cls | PyTorch | ✅ | 5.6 | 0.431 | 0.716 | 23.8 |
| YOLO26n-cls | DEEPX | ✅ | 5.9 | 0.333 | 0.686 | 2.7 |
أُجري التحقق من صحة المعايير المذكورة أعلاه باستخدام COCO128 للكشف، وCOCO128-seg للتقسيم، وImageNet100 للتصنيف، وCOCO8-pose لتقدير الوضعيات، و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"سير العمل الموصى به#
- درّب نموذجك باستخدام وضع التدريب من Ultralytics
- صدّر إلى تنسيق DEEPX باستخدام
model.export(format="deepx") - تحقّق من الدقة باستخدام
yolo valللتأكد من الحد الأدنى لفقدان التكميم - استدلّ باستخدام
yolo predictللتحقق النوعي - انشر دليل
_deepx_model/المُصدَّر على أجهزة DEEPX NPU باستخدام وقت التشغيلdx_engine
تطبيقات واقعية#
تُعد نماذج YOLO المنشورة على أجهزة DEEPX NPU ملائمة لمجموعة واسعة من تطبيقات الذكاء الاصطناعي الطرفي:
- المراقبة الذكية: كشف الأجسام في الوقت الفعلي لأنظمة الأمن والمراقبة، مع استهلاك منخفض للطاقة ومن دون الاعتماد على السحابة.
- الأتمتة الصناعية: مراقبة الجودة على الجهاز، واكتشاف العيوب، ومراقبة العمليات في بيئات المصانع.
- الروبوتات: الملاحة القائمة على الرؤية، وتجنب العوائق، والتعرف على الأجسام في الروبوتات والطائرات المسيّرة ذاتية التشغيل.
- الزراعة الذكية: مراقبة صحة المحاصيل، واكتشاف الآفات، وتقدير الإنتاجية باستخدام الرؤية الحاسوبية في الزراعة.
- تحليلات البيع بالتجزئة: تحليل حركة العملاء، ومراقبة الأرفف، وتتبع المخزون باستخدام الاستدلال الطرفي في الوقت الفعلي.
الملخص#
في هذا الدليل، تعلّمت كيفية تصدير نماذج Ultralytics YOLO إلى تنسيق DEEPX ونشرها على أجهزة DEEPX NPU. يستخدم مسار التصدير معايرة INT8 والمترجم dx_com لإنتاج ملف ثنائي .dxnn محسّن للأجهزة، بينما يتولى وقت التشغيل dx_engine الاستدلال على الجهاز.
تتيح Ultralytics YOLO ووحدات DEEPX NPU معًا تشغيل أحمال عمل الرؤية الحاسوبية على الأجهزة المضمنة وأجهزة الحافة بإنتاجية عالية واستهلاك منخفض للطاقة للتطبيقات الفورية.
لمزيد من التفاصيل حول الاستخدام، تفضّل بزيارة الموقع الرسمي لـ DEEPX.
الأسئلة الشائعة#
يمكنك تصدير نموذجك باستخدام الطريقة
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— الملف الثنائي المُترجَم لوحدة NPUconfig.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-bin) من حزم إصدارات DEEPX-AI على GitHub أو من مستودع DEEPX apt، وحدّث البرنامج الثابت لـ NPU إلى الإصدار v2.7.6 أو أحدث عند الحاجة، وثبّت حزمة Python المضمّنةdx_engineفي بيئتك. تتطلب النماذج المُصدَّرة باستخدام DX-COM 2.5.0 إصدار DX-RT 3.5.0 أو أحدث. راجع قسم تثبيت بيئة التشغيل أعلاه للاطلاع على الأوامر خطوة بخطوة.
التعليقات
اطرح سؤالًا، وشارك نتائجك، أو ساعد شخصًا آخر.
