التصدير إلى 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، مستفيدًا من وحدات التسريع المخصصة لتوفير استدلال سريع وفعّال. - استهلاك منخفض للطاقة: باعتماد نماذج DEEPX على NPU لتنفيذ الاستدلال، يكون استهلاكها للطاقة أقل بكثير من الاستدلال المكافئ على 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 SDK عند إجراء التصدير لأول مرة. يستخدم مسار التصدير الحالي DX-COM 2.3.0، الذي يوفر حزم wheels لإصدارات Python من 3.8 إلى 3.12 على Linux ذي بنية x86-64 مع glibc 2.31 أو أحدث.
أُزيلت إصدارات المُجمّع من PyPI. لتثبيت تبعيات التصدير مسبقًا، زوّد صفحة حزم SDK wheel بـ --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. وهي تثبّت المُجمّع من مصدر SDK وتطبّق تلقائيًا قيود التبعيات التي خضعت للاختبار.
الاستخدام#
يدعم تنسيق 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")وسيطات التصدير#
| المعامل | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
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 | يحدد إصدار opset في ONNX لمخطط 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 وبيئة التشغيل 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 (التجميع) مضيف 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) من إصدارات DEEPX-AI على GitHub، ثم ثبّت حزمة Python wheel المرفقةdx_engine. راجع قسم تثبيت بيئة التشغيل أعلاه للاطلاع على أوامر التثبيت خطوة بخطوة.