تصدير DEEPX لنماذج Ultralytics YOLO#
يتطلب نشر نماذج الرؤية الحاسوبية على أجهزة NPU المتخصصة تنسيقًا متوافقًا ومحسّنًا للنموذج. يتيح تصدير نماذج Ultralytics YOLO إلى تنسيق DEEPX إجراء استدلال فعال ومكمّم بدقة INT8 على مسرّعات DEEPX NPU. يوضح لك هذا الدليل كيفية تحويل نماذج YOLO إلى تنسيق DEEPX ونشرها على الأجهزة المدعومة من DEEPX.
ما هو DEEPX؟#
DEEPX شركة متخصصة في أشباه موصلات الذكاء الاصطناعي، وتركّز على وحدات المعالجة العصبية (NPUs) المصممة لإجراء استدلال موفّر للطاقة لنماذج التعلّم العميق على الحافة. صُممت وحدات DEEPX NPU للتطبيقات المضمّنة والصناعية للذكاء الاصطناعي التي تتطلب أداءً عاليًا، إذ توفر معدل معالجة مرتفعًا مع استهلاك منخفض للطاقة. وتناسب أجهزتها جيدًا سيناريوهات النشر التي يكون فيها الاتصال بالسحابة غير موثوق أو غير مرغوب فيه، مثل الروبوتات والكاميرات الذكية وأنظمة الأتمتة الصناعية.
تنسيق تصدير DEEPX#
ينتج تصدير DEEPX ملفًا ثنائيًا مترجمًا للنموذج .dxnn ومحسّنًا للتنفيذ على أجهزة DEEPX NPU. يستخدم مسار الترجمة مجموعة الأدوات dx_com لإجراء التكميم بدقة INT8 والتحسين الخاص بالأجهزة، وإنشاء مجلد نموذج مستقل جاهز للنشر.
الميزات الأساسية لنماذج DEEPX#
تقدم نماذج DEEPX عدة مزايا للنشر على الحافة:
- التكميم بدقة INT8: تُكمَّم النماذج إلى دقة INT8 أثناء التصدير، ما يقلل حجم النموذج بدرجة كبيرة ويزيد معدل معالجة NPU إلى أقصى حد. تعرّف على المزيد حول تكميم النماذج.
- محسّنة لـ NPU: يُترجم تنسيق
.dxnnخصيصًا لأجهزة DEEPX NPU، مستفيدًا من وحدات التسريع المخصصة لإجراء استدلال سريع وفعال. - استهلاك منخفض للطاقة: من خلال إسناد الاستدلال إلى 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 تلقائياً من مستودع حزمة تطوير البرمجيات DEEPX عند التصدير لأول مرة. تستخدم سير عمل التصدير الحالية DX-COM 2.3.0، والتي توفر حزم ويل لـ Python 3.8–3.12 على أنظمة x86-64 Linux المزودة بـ glibc 2.31 أو أحدث.
إصدارات محول في PyPI مسحوبة. لتثبيت تبعيات التصدير مسبقاً، قم بتوفير صفحة حزمة ويل الخاصة بحزمة تطوير البرمجيات مع --find-links؛ وهذا يعمل مع كل من pip و uv pip:
pip install "ultralytics[export-deepx]" --find-links https://sdk.deepx.ai/release/dxcom/v2.3.0/index.htmlلتثبيت مستودع قابل للتعديل، استبدل "ultralytics[export-deepx]" بـ -e ".[export-base,export-deepx]". لإعادة إنتاج بيئة Python 3.12 واختبار التصدير المستخدم بواسطة 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
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to DEEPX format (quantize=8 is enforced automatically)
model.export(format="deepx") # creates 'yolo26n_deepx_model/'from ultralytics import YOLO
# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")وسائط التصدير#
| الوسيطة | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'deepx' | التنسيق المستهدف للنموذج المُصدَّر، والذي يحدد التوافق مع أجهزة DEEPX NPU. |
imgsz | int أو tuple | 640 | حجم الصورة المطلوب لإدخال النموذج. يتطلب تصدير DEEPX إدخالًا مربعًا — مرّر عددًا صحيحًا (مثل 640) أو صفًا تكون فيه قيمة الارتفاع مساوية لقيمة العرض. |
quantize | int أو str | 8/auto | دقة التكميم. 8 (INT8) مطلوبة لتصدير DEEPX وتُفعَّل تلقائيًا إذا لم تُحدَّد. وتحل محل العلامتين المهجورتين half/int8. |
simplify | bool | True | يبسّط الرسم البياني الوسيط لـ ONNX باستخدام onnxslim. |
opset | int | None | يحدد إصدار مجموعة عمليات ONNX للرسم البياني الوسيط لـ ONNX. وإذا لم يُحدَّد، فسيُستخدم أحدث إصدار مدعوم. |
data | str | None | ملف YAML لمجموعة البيانات يُستخدم لمعايرة INT8؛ أما التصنيف فيتطلب بدلًا من ذلك مجلد مجموعة بيانات أو اسم مجموعة بيانات مضمّنة. إذا حُذف مع quantize=8، فستحدد Ultralytics مجموعة بيانات المعايرة الافتراضية لمهمة النموذج. |
device | str | None | يحدد الجهاز المُستخدَم للتصدير: GPU (device=0) أو CPU (device=cpu). |
optimize | bool | False | يمكّن تحسينًا أعلى للمترجم، ما يقلل زمن استجابة الاستدلال ويزيد زمن الترجمة. |
شغّل تصدير DEEPX دائمًا على مضيف x86-64 Linux. لا يدعم المترجم 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.
| النموذج | التنسيق | الحالة | الحجم (MB) | metrics/mAP50-95(B) | زمن الاستدلال (مللي ثانية/صورة) |
|---|---|---|---|---|---|
| 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) | الدقة (top1) | الدقة (top5) | زمن الاستدلال (مللي ثانية/صورة) |
|---|---|---|---|---|---|---|
| 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 للتجزئة، و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"سير العمل الموصى به#
- درّب نموذجك باستخدام وضع التدريب في 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 وتقنية 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 — وإذا طلبت دقة مختلفة، فسيُستعاض عنها بتحذير.يتطلب تصدير نموذج DEEPX (الترجمة) مضيف x86-64 Linux. ولا تُدعَم خطوة التصدير على 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 كل صورة في مجموعة بيانات المعايرة مع طريقة المعايرة EMA. ويكون استخدام بضع مئات من الصور كافيًا عادةً لتحقيق دقة تكميم جيدة. وجّه
dataإلى مجموعة بيانات أصغر إذا أصبح وقت الترجمة مصدر قلق في مجموعات البيانات الكبيرة.لا يأتي وقت تشغيل DEEPX مضمّنًا مع
ultralytics، ويجب تثبيته بشكل منفصل قبل تشغيل الاستدلال. على أجهزة Linux x86-64 وأجهزة Linux ARM64 (مثل Raspberry Pi 5)، ثبّت برنامج تشغيل NPU (dxrt-driver-dkms) ووقت التشغيل (libdxrt) من إصدارات DEEPX-AI على GitHub، ثم ثبّت حزمة Python ذات الامتدادdx_engineالمضمّنة. راجع قسم تثبيت وقت التشغيل أعلاه للاطلاع على الأوامر خطوة بخطوة.