تصدير نماذج Ultralytics YOLO إلى DEEPX#
يتطلب نشر نماذج الرؤية الحاسوبية على أجهزة NPU متخصصة تنسيقًا متوافقًا ومحسّنًا للنموذج. يتيح تصدير نماذج Ultralytics YOLO إلى تنسيق DEEPX إجراء استدلال فعّال ومكمّم بدقة INT8 على مسرّعات NPU من DEEPX. يشرح هذا الدليل خطوات تحويل نماذج YOLO إلى تنسيق DEEPX ونشرها على الأجهزة المدعومة من DEEPX.
ما هي DEEPX؟#
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، وهي العائلة الوحيدة التي تتضمن هذه الرؤوس.
التصدير إلى 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")وسيطات التصدير#
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
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) | وقت الاستدلال (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 للتقسيم، و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 — وإذا طلبت دقة مختلفة، فسيُستعاض عنها بـ 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) من إصدارات DEEPX-AI على GitHub، ثم ثبّت حزمة Python wheel المضمّنةdx_engine. راجع قسم تثبيت وقت التشغيل أعلاه للاطلاع على الأوامر خطوة بخطوة.