YOLO Vision 2026:

تصدير Qualcomm QNN لنماذج Ultralytics YOLO#

يتطلب نشر نماذج الرؤية الحاسوبية على أجهزة Qualcomm Snapdragon تنسيقَ نموذج مُحسَّناً لوقت تشغيل Qualcomm AI Engine Direct (QNN). يتيح تصدير نماذج Ultralytics YOLO إلى تنسيق QNN تشغيل الاستدلال المُسرَّع على الجهاز عبر عتاد Snapdragon CPU وAdreno GPU وHexagon NPU الموجود في مليارات الهواتف المحمولة وأجهزة الكمبيوتر المحمولة وأنظمة السيارات وأجهزة إنترنت الأشياء. يوضّح هذا الدليل كيفية تصدير YOLO إلى Qualcomm QNN ونشره لإجراء استدلال سريع ومنخفض استهلاك الطاقة على عتاد Snapdragon.

شغّل YOLO على وحدات Snapdragon NPU اليوم باستخدام تطبيقات الهاتف الرسمية

يوفّر مكوّن Ultralytics الإضافي لـ Flutter دعماً اختيارياً لـ QNN لإجراء استدلال الكاميرا في الوقت الفعلي والتنبؤ بصورة واحدة عبر جميع مهام YOLO26 السبع. فعّل وقت تشغيل QNN وأضف تبعية ONNX Runtime كما هو موضّح في README الخاص بالمكوّن الإضافي. لنشر iOS، راجع Ultralytics YOLO iOS SDK وتكامل CoreML.

أحجام الإدخال الرسمية للهاتف

صدّر نماذج التصنيف في imgsz=224. وصدّر نماذج الكشف والتقسيم والتقسيم الدلالي والعمق والوضعية وOBB في imgsz=640. ويُستخدم معيار 224/640 هذا في أصول الأجهزة المحمولة الرسمية لـ QNN وLiteRT وCoreML. تُنشر الأصول v73 وv81 الجاهزة للتشغيل لجميع المهام النانوية السبع في إصدار yolo-flutter-app v0.6.6.

ما هو Qualcomm QNN؟#

Qualcomm QNN on-device inference

إن Qualcomm AI Engine Direct — المعروف عادةً باسم QNN والموزَّع كجزء من SDK الخاص بوقت تشغيل Qualcomm AI Runtime (QAIRT) — هو حزمة الاستدلال منخفضة المستوى من Qualcomm لمعالجات Snapdragon. ويوفّر واجهة API موحّدة مع مكتبات خاصة بكل واجهة خلفية تستهدف Snapdragon CPU وAdreno GPU وHexagon Tensor Processor (HTP)، وهي وحدة معالجة الشبكات العصبية (NPU) المخصصة داخل شرائح Snapdragon SoC الحديثة. ويمنح QNN المطورين وصولاً كاملاً إلى مسرّعات Snapdragon للذكاء الاصطناعي على مستوى الحزمة البرمجية بأكملها، وهو الخلف الحديث لـ SDK Snapdragon Neural Processing Engine (SNPE) الأقدم. ويشغّل الذكاء الاصطناعي على الجهاز عبر منصات Snapdragon 8 Gen 2 و8 Gen 3 و8 Elite المحمولة، وأجهزة الكمبيوتر المحمولة Snapdragon X، ومنتجات السيارات وXR.

لماذا التصدير إلى Qualcomm QNN؟#

Snapdragon هي منصة الحوسبة المحمولة الأكثر انتشاراً في العالم. يتيح تصدير Ultralytics YOLO إلى تنسيق Qualcomm QNN الاستفادة من عتاد الذكاء الاصطناعي المخصص في هذه الأجهزة:

  • تسريع Hexagon NPU: يؤدي تشغيل YOLO على Hexagon Tensor Processor إلى إنتاجية أعلى بكثير واستهلاك طاقة أقل من الاستدلال عبر CPU، ما يجعله مثالياً لـالاستدلال في الوقت الفعلي والرؤية الحاسوبية الدائمة التشغيل على Snapdragon.
  • على الجهاز ودون اتصال: يعمل استدلال QNN بالكامل على جهاز Snapdragon، لذلك لا توجد عمليات ذهاب وإياب إلى السحابة، وتظل مدة الاستجابة منخفضة، ولا تغادر البيانات الجهاز.
  • الكفاءة بعد التكميم: تُكمِّم عملية التصدير إلى QNN YOLO إلى أوزان INT8 مع تنشيطات 16 بت، وهو توازن الدقة/الأداء المفضّل لوحدة Hexagon NPU، ما يقلّص حجم النموذج ويزيد عدد الإطارات في الثانية إلى أقصى حد على الأجهزة العاملة بالبطارية.
  • تنسيق واحد، وأجهزة متعددة: يستهدف تصدير Qualcomm QNN واحد Snapdragon CPU وAdreno GPU وHexagon NPU عبر عائلات Snapdragon 8 Gen 2 و8 Gen 3 و8 Elite وما بعدها.
  • حزمة Qualcomm AI جاهزة للإنتاج: يُعد QNN (Qualcomm AI Engine Direct / QAIRT) وقت تشغيل Qualcomm الحالي للذكاء الاصطناعي على الجهاز، والمدعوم بنشاط، والبديل الموصى به لـ SNPE.

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

تُجمّع Ultralytics نماذج YOLO إلى QNN محلياً باستخدام موفّر تنفيذ QNN في ONNX Runtime (الحزمة القابلة للتثبيت عبر pip onnxruntime-qnn، التي تتضمن مكتبات QAIRT). يحوّل المصدّر نموذجك إلى ONNX، ثم يكمّمه باستخدام بيانات المعايرة إلى عمليات تنشيط 16 بت وأوزان INT8 (التوازن الموصى به لـ Hexagon NPU)، ثم يهيّئ جلسة ONNX Runtime مع تفعيل التخزين المؤقت للثنائي السياقي — ما يجمّع الرسم البياني المكمّم في ثنائي سياق QNN مضمن في <model>_qnn.onnx. ولا يلزم حساب Qualcomm أو رفع إلى السحابة أو تنزيل SDK منفصل.

بخلاف Qualcomm AI Hub القائم على السحابة، الذي يجمّع النماذج ويقيس أداءها على أجهزة Snapdragon المستضافة لدى Qualcomm ويتطلب حساب Qualcomm، يعمل تصدير Ultralytics QNN بالكامل على جهازك باستخدام استدعاء واحد export(format="qnn", imgsz=640) (imgsz=224 للتصنيف). وتحصل على هدف وقت تشغيل QNN/QAIRT نفسه — Snapdragon CPU وAdreno GPU وHexagon NPU — من دون تسجيل أو حدود للرفع أو أوقات انتظار في الطوابير، ويندمج مباشرةً في سير عمل تصدير YOLO القياسي.

ملف *_qnn.onnx المُصدَّر مكتفٍ ذاتياً؛ إذ يتضمن ثنائي سياق QNN وبيانات ONNX الوصفية، مثل أسماء الفئات وحجم الصورة والمهمة.

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

  • التكميم: يُكمَّم النموذج إلى عمليات تنشيط 16 بت وأوزان INT8 باستخدام مسار ONNX Runtime QNN QDQ ومجموعة بيانات معايرة، وهو توازن الدقة/الأداء الموصى به لدى Hexagon NPU. تعرّف على المزيد حول تكميم النماذج.
  • التجميع المحلي بالكامل: يُنشأ ثنائي السياق بالكامل على جهازك المضيف، من دون حساب Qualcomm أو رمز API أو رفع إلى السحابة.
  • تسريع Snapdragon الكامل: شغّل الاستدلال على Hexagon NPU (HTP) أو Adreno GPU أو CPU عبر وقت تشغيل موحّد واحد.
  • نطاق واسع من الأجهزة: استهدف مجموعة Snapdragon الواسعة المستخدمة في الهواتف وأجهزة الكمبيوتر (Windows on Snapdragon) والسيارات وXR والمنتجات المضمّنة.
  • ثنائي سياق مُجمَّع مسبقاً: يقلّل شحن ثنائي السياق من تجميع الرسم البياني على الجهاز، ما يخفض زمن تحميل النموذج على الجهاز المستهدف.
  • مخرجات مكتفية ذاتياً: يتضمن ملف ONNX المُصدَّر ثنائي سياق QNN المُجمَّع مسبقاً والبيانات الوصفية، بما يسهّل النشر.

الأداء المُقاس#

هاتف Android#

العتاد: Xiaomi 17 مع ذاكرة LPDDR5X بسعة 12 GB وAndroid 16 / API 36. وتحتوي شريحة Snapdragon 8 Elite Gen 5 بدقة تصنيع 3 nm (SM8850) على Qualcomm Oryon CPU بثماني نوى (نواتان Prime بتردد يصل إلى 4.6 GHz و6 نوى Performance بتردد يصل إلى 3.62 GHz)، وAdreno GPU وHexagon NPU (HTP v81).

النموذجالمهمةالحجم
(بكسل)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
NPU
QNN W8A16
(ms)
YOLO26nDetect64052.2
1.8 / 48.1 / 2.4
15.8
2.3 / 8.9 / 4.6
10.7
1.8 / 6.7 / 2.2
YOLO26n-segSegment64073.4
1.8 / 65.6 / 6.0
33.2
1.8 / 23.8 / 7.6
17.4
1.8 / 9.9 / 5.7
YOLO26n-semدلالي64061.2
1.8 / 51.1 / 8.3
34.2
1.8 / 24.0 / 8.3
11.5
1.8 / 7.1 / 2.6
YOLO26n-depthالعمق640124.4
1.9 / 115.1 / 7.4
23.0
1.8 / 13.5 / 7.7
35.2
1.8 / 26.1 / 7.3
YOLO26n-clsالتصنيف2244.4
0.4 / 4.0 / 0.0
3.1
0.8 / 2.1 / 0.2
1.2
0.6 / 0.6 / 0.0
YOLO26n-poseالوضعية64057.4
1.8 / 53.8 / 1.8
16.6
2.7 / 10.1 / 3.9
10.9
1.8 / 7.0 / 2.0
YOLO26n-obbOBB64050.3
1.8 / 47.2 / 1.4
11.7
1.8 / 7.8 / 2.0
8.6
1.8 / 5.7 / 1.1
  • قيم السرعة هي أزمنة استجابة لدفعات من الصور المفردة — متوسط 15 تشغيلاً بعد 3 تشغيلات إحماء على bus.jpg، وقيسَت باستخدام أداة الاختبار المعيارية على الجهاز 0.6.10 الخاصة بـمكوّن Flutter الإضافي، والأصول المعيارية v0.6.6. وقد تناوب ترتيب الواجهات الخلفية بين المهام في عملية مسح تسلسلية واحدة. وأكدت السجلات الأصلية أن كل صف CPU استخدم LiteRT CPU/XNNPACK، وأن كل صف GPU فوّض الرسم البياني كاملاً إلى LiteRT OpenCL (LITERT_CL)، وأن كل صف NPU استخدم الواجهة الخلفية QNN Hexagon HTP.
  • يوجد السجل التفصيلي للاختبار المعياري في وثيقة أداء Flutter.
  • قارن أجهزة Android الأخرى في تكامل LiteRT وأجهزة Apple في تكامل CoreML.

حاسوب محمول Windows on Snapdragon#

استخدم هذا المسح التاريخي ثنائيات QNN v73 السابقة للمعيار؛ كما استخدم التقسيم الدلالي وOBB مدخلات بدقة 1024 بكسل. وأُجري الاختبار على حاسوب محمول من Lenovo بذاكرة 32 GB ونظام Windows 11. ويحتوي Snapdragon X Elite (X1E78100) على Qualcomm Oryon CPU بـ12 نواة وAdreno GPU وHexagon NPU (HTP v73)؛ ولم يُسجَّل طراز Lenovo الدقيق. وتقارن هذه المقارنة الخاصة بـWindows-on-Snapdragon خط أساس CPU الأصلي PyTorch FP32 الذي يبدأ منه معظم مطوري أجهزة الكمبيوتر المكتبية بمسار ONNX Runtime QNN Hexagon HTP. وتعرض كل خلية الزمن الكامل المنقضي لاستدعاء model.predict() مع أزمنة المعالجة المسبقة/الاستدلال/المعالجة اللاحقة المُبلَّغ عنها أسفلها؛ وقد يتضمن الإجمالي عبء إطار العمل خارج هذه المراحل الثلاث. أرقام CPU هي PyTorch FP32 (torch==2.10.0+cpu)، وأرقام NPU هي ONNX Runtime QNN (onnxruntime-qnn==2.2.0، أوزان INT8/عمليات تنشيط 16 بت).

النموذجالمهمةالحجم
(بكسل)
CPU
PT FP32
(ms)
NPU Hexagon
QNN W8A16
(ms)
YOLO26nDetect64091.4
4.3 / 75.2 / 0.1
27.2
4.9 / 19.4 / 0.9
YOLO26n-segSegment640138.8
4.5 / 127.1 / 2.8
34.3
5.0 / 24.0 / 5.1
YOLO26n-semدلالي1024295.8
9.1 / 189.2 / 94.8
133.0
8.8 / 37.4 / 83.9
YOLO26n-clsالتصنيف22415.4
3.0 / 9.8 / 0.0
11.7
2.7 / 5.5 / 0.0
YOLO26n-poseالوضعية640109.6
4.6 / 102.9 / 0.2
28.9
5.3 / 23.3 / 0.6
YOLO26n-obbOBB1024267.8
8.1 / 254.6 / 0.1
64.8
8.9 / 54.7 / 0.6
  • قيم السرعة هي أزمنة استجابة لدفعات من الصور المفردة — متوسط 100 تشغيل بعد 10 تشغيلات إحماء على bus.jpg، وقيسَت باستخدام time.perf_counter() حول استدعاء model.predict() الكامل على جهاز مستقر حرارياً (ultralytics==8.4.67، Python 3.12.10).
  • تعمل Hexagon NPU بسرعة أكبر بنحو 2-4 مرات من خط أساس PyTorch CPU عبر مهام 640-1024 بكسل (نحو 3.4 مرات للكشف)، وتضيق الفجوة إلى نحو 1.3 مرة في المصنّف ذي الدقة 224 بكسل، حيث يهيمن عبء المعالجة المسبقة الثابت على الحمل الصغير.

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

يدعم تصدير Qualcomm QNN مهام Ultralytics السبع جميعها. ولا يتوفر التقسيم الدلالي وتقدير العمق إلا مع YOLO26، وهي العائلة الوحيدة التي توفر رأسي الإخراج هذين.

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

التصدير إلى QNN: تحويل نموذج YOLO الخاص بك#

صدّر نموذج Ultralytics YOLO إلى تنسيق QNN لنشره على عتاد Qualcomm. ويُنهى إعداد ثنائي السياق لمعمارية Hexagon Tensor Processor (HTP) مستهدفة أو SoC مدعوم، تحددها باستخدام الوسيطة name — وهي الوسيطة نفسها المستخدمة لاستهداف شريحة في تصدير RKNN.

أهداف HTP المدعومة#

مرّر المعمارية المستهدفة أو SoC عبر name (مثل name="73" أو name="iq-8275"). ويتحدد الدعم وفق هدف HTP، لذلك تمثل صفوف Snapdragon أدناه منصات نموذجية وليست قائمة شاملة بكل SoC. وتُدرج أجهزة Dragonwing صراحةً.

الحالةnameHexagon HTPالجهاز أو المنصة النموذجية
✅ مدعوم68v68Snapdragon 888
✅ مدعوم69v69Snapdragon 8 Gen 1 / 8+ Gen 1
✅ مدعوم73v73Snapdragon 8 Gen 2، X Elite (الافتراضي)
✅ مدعوم75v75Snapdragon 8 Gen 3
✅ مدعوم79v79Snapdragon 8 Elite
✅ مدعوم81v81Snapdragon 8 Elite Gen 5
✅ مدعومiq-8275 أو qcs8275v75Dragonwing IQ-8275 / QCS8275 (طراز Qualcomm QNN SoC 82)
❌ غير مدعومv66Dragonwing IQ-615 / QCS615

لا يمكن لجهاز Dragonwing IQ-615 استخدام تصدير ثنائي سياق Ultralytics QNN، لأن ONNX Runtime لا يعرّض DSP v66 الخاص به كهدف HTP غير متصل. ومع ذلك، يمكن دمج تصدير ONNX القياسي بشكل منفصل باستخدام موفّر تنفيذ CPU أو GPU يدعمه BSP الخاص باللوحة.

التصدير إلى Dragonwing IQ-8275
from ultralytics import YOLO

model = YOLO("best.pt")
model.export(format="qnn", name="iq-8275", imgsz=640)
دعم المنصات

يستخدم تصدير QNN حزمة onnxruntime-qnn. ويوفر الإصدار 2.4.0 والإصدارات الأحدث عجلات مُنشأة مسبقاً لـ Windows (x64 وARM64) وLinux (x86-64 وARM64) على Python 3.11 أو أحدث؛ ولا يُعد macOS مضيف QNN مدعوماً. ويُجرى إنشاء ثنائي سياق QNN على مضيف x64 ولا يتطلب جهاز Snapdragon في خطوة التصدير.

التثبيت#

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

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

تُثبَّت حزمة onnxruntime-qnn (التي توفر موفّر تنفيذ QNN في ONNX Runtime وتتضمن مكتبات QAIRT) تلقائياً عند أول تصدير. للحصول على تعليمات تفصيلية وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل تثبيت Ultralytics. وإذا واجهت أي صعوبات أثناء تثبيت الحزم المطلوبة لـ YOLO، فاستشر دليل المشكلات الشائعة للاطلاع على الحلول والنصائح.

الاستخدام#

يدعم تنسيق QNN أوضاع التصدير والتنبؤ والتحقق. ويُجرى الاستدلال والتحقق على عتاد Qualcomm Snapdragon عبر موفّر تنفيذ QNN في ONNX Runtime (الحزمة نفسها onnxruntime-qnn المستخدمة للتصدير). صدّر نموذجك، ثم حمّل النموذج المُصدَّر على جهاز Snapdragon لإجراء الاستدلال أو التحقق من دقته.

التصدير
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export to Qualcomm QNN format (INT8, enforced automatically) for the default v73 HTP target
model.export(format="qnn", name="73", imgsz=640)  # use imgsz=224 for classification
التنبؤ
from ultralytics import YOLO

# Load the exported QNN model (on a Snapdragon device with onnxruntime-qnn)
model = YOLO("yolo26n_qnn.onnx")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
التحقق
from ultralytics import YOLO

# Load the exported QNN model (on a Snapdragon device with onnxruntime-qnn)
model = YOLO("yolo26n_qnn.onnx")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

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

الوسيطةالنوعالافتراضيالوصف
formatstr'qnn'التنسيق المستهدف للنموذج المُصدَّر، والذي يحدد التوافق مع وقت تشغيل Qualcomm QNN.
imgszint أو tuple640حجم الصورة المطلوب لمدخل النموذج. ويمكن أن يكون عدداً صحيحاً للصور المربعة أو صفاً (height, width).
batchint1يحدد حجم دفعة نموذج التصدير، الذي يُضمَّن في ثنائي سياق QNN المُنشأ.
namestr'73'معمارية Hexagon HTP المستهدفة (68 أو 69 أو 73 أو 75 أو 79 أو 81) أو SoC المدعوم (iq-8275 أو qcs8275). ويُنهى إعداد ثنائي السياق لهذا الهدف.
quantizeint أو str'w8a16'/autoدقة التكميم. يُكمَّم تصدير QNN HTP إلى أوزان INT8 مع عمليات تنشيط 16 بت ('w8a16') ويُفعَّل تلقائياً إذا لم يُحدَّد. ويستبدل الرايتين المهجورتين half/int8.
simplifyboolTrueيبسّط الرسم البياني الوسيط لـ ONNX باستخدام onnxslim.
opsetintNoneيحدد إصدار مجموعة عمليات ONNX للرسم البياني الوسيط لـ ONNX. وإذا لم يُحدَّد، فسيُستخدم أحدث إصدار مدعوم.
datastrNoneملف YAML لمجموعة البيانات المستخدم لمعايرة INT8؛ أما التصنيف فيتطلب بدلاً من ذلك دليلاً لمجموعة البيانات أو اسماً لمجموعة بيانات مضمّنة. وإذا لم يُحدَّد، تختار Ultralytics مجموعة بيانات المعايرة الافتراضية لمهمة النموذج.
fractionfloat أو int أو list1.0مجموعة المعايرة الجزئية كنسبة أو عدد صور أو نسب/أعداد [train, val, test]. تترك القوائم ذات العنصرين test ممتلئًا، بينما تتخطى 0.
devicestrNoneيحدد الجهاز لخطوة تصدير ONNX: GPU (device=0) أو CPU (device=cpu).
الدقة

يكمّم تصدير QNN النموذج إلى عمليات تنشيط 16 بت وأوزان INT8 — وهو توازن الدقة/الأداء الموصى به لـ Hexagon NPU — باستخدام مسار تكميم ONNX Runtime QDQ مع صور المعايرة من data. ويُفرض quantize='w8a16' تلقائياً.

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

بنية المخرجات#

بعد نجاح التصدير، يُنشأ ملف ONNX مكتفٍ ذاتياً:

yolo26n_qnn.onnx # ONNX wrapping the precompiled QNN context binary and metadata

يُضمّن الملف yolo26n_qnn.onnx ثنائي سياق QNN، ويُحمّله ONNX Runtime باستخدام موفّر تنفيذ QNN على جهاز Snapdragon. كما يتضمن بيانات وصفية للنموذج مثل أسماء الفئات وحجم الصورة والمهمة في ONNX metadata_props.

نشر نماذج YOLO المصدَّرة بتنسيق QNN#

تعمل نماذج QNN على أجهزة Qualcomm المدعومة، مما يجعل نشر النماذج على الجهاز أمرًا سهلًا. على جهاز متوافق مثبّت عليه onnxruntime-qnn، شغّل النموذج المصدَّر مباشرةً باستخدام واجهة Ultralytics البرمجية (yolo predict/yolo val، راجع الاستخدام أعلاه) — إذ تحمّل Ultralytics ثنائي سياق HTP عبر موفّر تنفيذ QNN في ONNX Runtime.

بالنسبة إلى مسارات المعالجة المخصصة، يمكنك أيضًا تحميل ثنائي السياق ONNX مباشرةً باستخدام ONNX Runtime. إن onnxruntime-qnn موفّر تنفيذ إضافي، لذا سجّله أثناء وقت التشغيل:

import onnxruntime as ort
import onnxruntime_qnn as qnn_ep

# On the Snapdragon device, register the QNN plugin EP and select its device(s)
ort.register_execution_provider_library("QNNExecutionProvider", qnn_ep.get_library_path())
devices = [d for d in ort.get_ep_devices() if d.ep_name == "QNNExecutionProvider"]

options = ort.SessionOptions()
options.add_provider_for_devices(devices, {"backend_path": qnn_ep.get_qnn_htp_path()})
session = ort.InferenceSession("yolo26n_qnn.onnx", sess_options=options)
input_info = session.get_inputs()[0]
outputs = session.run(None, {input_info.name: input_tensor})  # input_tensor: float32 NHWC

نظرًا إلى أن ثنائي سياق QNN مُجمَّع مسبقًا، تُحمَّل الجلسة بسرعة من دون إعادة تجميع الرسم البياني على الجهاز.

متطلبات Linux وYocto BSP#

يجب أن توفّر اللوحة المستهدفة بيئة تشغيل Qualcomm وBSP متوافقين معًا. ويتضمن ذلك لاستدلال HTP موفّر تنفيذ QNN في ONNX Runtime، وlibQnnSystem.so، وlibQnnHtp.so، ومكتبتي stub وskeleton لـ HTP v75 الخاص بـ IQ-8275، ودعم FastRPC في مساحة المستخدم مثل libcdsprpc.so، والبرامج الثابتة لـ DSP، وبرامج التشغيل المناظرة لـ FastRPC/kernel. ويجب أن تكون مكتبة skeleton قابلة للاكتشاف عبر مسار مكتبات DSP في BSP.

تأتي مكوّنات جهة الهدف هذه من BSP المزوّد من الشركة المصنّعة للوحة والمفعّل به QAIRT/QNN؛ وهي ليست مضمنة في النموذج المصدَّر. ويتطلب التنفيذ على GPU بدلًا من ذلك libQnnGpu.so ومكدس برنامج تشغيل Adreno المطابق في مساحة المستخدم. ويُنتج Ultralytics format=qnn ثنائي سياق خاصًا بـ HTP، لذا ينبغي أن يبدأ النشر على GPU أو CPU من تصدير ONNX قياسي بدلًا من الملف المجمَّع مسبقًا *_qnn.onnx.

سير العمل الموصى به#

  1. درّب نموذجك باستخدام وضع التدريب في Ultralytics
  2. صدِّر إلى تنسيق QNN باستخدام model.export(format="qnn", name="iq-8275", imgsz=640) على منصة مدعومة (استخدم imgsz=224 للتصنيف)
  3. انشر الملف المصدَّر *_qnn.onnx على جهاز Qualcomm لديك
  4. شغِّل الاستدلال باستخدام ONNX Runtime وموفّر تنفيذ QNN مع استخدام الواجهة الخلفية HTP

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

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

  • الهواتف الذكية: اكتشاف الكائنات وفهم المشاهد في الوقت الفعلي ضمن تطبيقات الكاميرا والصور، مع تسريع بواسطة NPU.
  • Windows على Snapdragon: رؤية حاسوبية على الجهاز في حواسيب Copilot+ PC من دون تفريغ المعالجة إلى السحابة.
  • السيارات: مراقبة السائق، واكتشاف الركاب، وميزات ADAS على منصات Snapdragon Digital Chassis.
  • الواقع الممتد والأجهزة القابلة للارتداء: إدراك منخفض الطاقة وزمن استجابة منخفض لسماعات الواقع المعزز/الواقع الافتراضي والنظارات الذكية.
  • إنترنت الأشياء والروبوتات: استدلال بصري فعّال على الكاميرات والطائرات المسيّرة والأنظمة المضمنة المدعومة بـ Snapdragon.

الملخص#

في هذا الدليل، تعلّمت كيفية تصدير نماذج Ultralytics YOLO إلى تنسيق Qualcomm QNN محليًا باستخدام موفّر تنفيذ QNN في ONNX Runtime. يحوّل مسار التصدير النموذج إلى ONNX، ثم يجمّعه في ثنائي سياق QNN على جهازك المضيف — من دون الحاجة إلى حساب Qualcomm أو السحابة — وينتج ملف *_qnn.onnx محسّنًا لأجهزة CPU وAdreno GPU وHexagon NPU من Snapdragon عبر بيئة تشغيل QNN/QAIRT.

يوفّر الجمع بين Ultralytics YOLO ومكدس Qualcomm للذكاء الاصطناعي على الجهاز حلًا فعّالًا لتشغيل أعباء عمل الرؤية الحاسوبية المتقدمة عبر منظومة Snapdragon الواسعة.

بالنسبة إلى أهداف النشر الأخرى على الجهاز والهواتف المحمولة، راجع أدلة التصدير ذات الصلة الخاصة بـ ONNX وCoreML وNCNN وLiteRT وExecuTorch وRKNN وSony IMX500 وTensorRT. ولمقارنة التنسيقات قبل الشحن، استخدم وضع قياس الأداء. وللاطلاع على القائمة الكاملة للتنسيقات والخيارات، انتقل إلى وثائق وضع التصدير وصفحة دليل عمليات التكامل.

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

  • يمكنك تصدير النموذج باستخدام export(format="qnn", imgsz=640) (imgsz=224 للتصنيف) أو باستخدام وسيطات CLI المكافئة. ينشئ التصدير أولًا نموذج ONNX، ثم يجمّعه محليًا في ثنائي سياق QNN باستخدام موفّر تنفيذ QNN في ONNX Runtime. وتُثبَّت حزمة onnxruntime-qnn تلقائيًا عند إجراء التصدير للمرة الأولى.

    مثال
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="qnn", imgsz=640)  # use imgsz=224 for classification
  • لا. يعمل تصدير QNN بالكامل على جهازك المحلي باستخدام حزمة onnxruntime-qnn، التي تتضمن مكتبات QAIRT. ولا يلزم حساب Qualcomm أو رمز API أو الوصول إلى الشبكة.

  • Qualcomm AI Hub هي خدمة Qualcomm السحابية لتجميع النماذج وتنميطها وقياس أدائها على أجهزة Snapdragon مستضافة، وتتطلب حساب Qualcomm. يستهدف تصدير QNN من Ultralytics بيئة تشغيل QNN/QAIRT نفسها (وهي CPU وAdreno GPU وHexagon NPU من Snapdragon)، لكنه يجمّع ثنائي السياق محليًا باستخدام موفّر تنفيذ QNN في ONNX Runtime — من دون حساب أو رفع أو انتظار في قائمة. وهي أسرع طريقة للانتقال من نموذج .pt إلى إصدار جاهز لـ Snapdragon مباشرةً ضمن سير عمل تصدير YOLO القياسي.

  • توفر onnxruntime-qnn بإصدار 2.4.0 والإصدارات الأحدث حزم wheels مُنشأة مسبقًا لـ Windows (x64 وARM64) وLinux (x86-64 وARM64) على Python 3.11 أو أحدث؛ ولا يُعد macOS مضيف QNN مدعومًا. ويُجرى إنشاء ثنائي السياق على مضيف x64 ولا يتطلب جهاز Snapdragon فعليًا.

  • صدِّر باستخدام model.export(format="qnn", imgsz=640) (imgsz=224 للتصنيف)، وانسخ الملف الناتج yolo26n_qnn.onnx إلى جهاز Snapdragon، ثم شغّل yolo predict model=yolo26n_qnn.onnx source=image.jpg (أو yolo val). تحمّل Ultralytics ثنائي السياق عبر موفّر تنفيذ QNN في ONNX Runtime وتشغّله على NPU في Hexagon — راجع نشر نماذج YOLO المصدَّرة بتنسيق QNN.

  • إن QNN (Qualcomm AI Engine Direct، وهو جزء من SDK الخاص بـ QAIRT) هو مكدس الاستدلال الحالي من Qualcomm والبديل الموصى به لـ Snapdragon Neural Processing Engine (SNPE) SDK الأقدم. وينبغي أن تستهدف عمليات النشر الجديدة QNN.

  • نعم، على جهاز Qualcomm Snapdragon مثبّت عليه onnxruntime-qnn — إذ يحمّل YOLO("yolo26n_qnn.onnx") ثنائي السياق عبر موفّر تنفيذ QNN ويشغّل predict/val مثل أي تنسيق آخر. أما على مضيف x86 من دون أجهزة QNN، فلا يمكن تنفيذ النموذج، لأن ثنائي السياق يستهدف NPU في Snapdragon.

  • ينشئ التصدير ملف ONNX مستقلًا بذاتيًا يحتوي على ثنائي السياق (مثل yolo26n_qnn.onnx)، مع تضمين أسماء الفئات وحجم الصورة والمهمة وبيانات وصفية أخرى للنموذج في ONNX metadata_props.

التعليقات