رؤية YOLO لعام 2026:

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

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

قم بتشغيل YOLO على وحدات معالجة العصب (NPU) من Snapdragon اليوم باستخدام تطبيقات الجوال الرسمية

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

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

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

ما هو Qualcomm QNN؟#

Qualcomm QNN on-device inference

Qualcomm AI Engine Direct - المُشار إليها غالباً باسم QNN والموزعة كجزء من حزمة أدوات تطوير Qualcomm AI Runtime (QAIRT) SDK - هي حزمة استدلال منخفضة المستوى من Qualcomm لمعالجات Snapdragon. وهي توفر واجهة برمجة تطبيقات (API) موحدة مع مكتبات خاصة بالخلفية تستهدف وحدة معالجة المركز Snapdragon CPU، ووحدة معالجة الرسوميات Adreno GPU، ومعالج موتر Hexagon Tensor Processor (HTP)، وهو وحدة معالجة الشبكات العصبية (NPU) المخصصة داخل وحدات System-on-Chip (SoC) الحديثة من Snapdragon. تمنح QNN المطورين وصولاً كاملاً إلى مسرعات الذكاء الاصطناعي هذه في Snapdragon وهي الخلف الحديث لحزمة أدوات 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 جاهز للإنتاج: يعد QNN (Qualcomm AI Engine Direct / QAIRT) هو وقت تشغيل الذكاء الاصطناعي الحالي من Qualcomm الذي يتم صيانته بنشاط والبديل الموصى به لـ SNPE.

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

تقوم Ultralytics بتجميع نماذج YOLO لـ QNN محلياً باستخدام موفر تنفيذ ONNX Runtime QNN (حزمة onnxruntime-qnn القابلة للتثبيت عبر pip، والتي تضم مكتبات QAIRT). يقوم المُصدِّر بتحويل نموذجك إلى ONNX، وتقييسه باستخدام بيانات المعايرة إلى تنشيطات بـ 16 بت وأوزان INT8 (التوازن الموصى به لوحدة Hexagon NPU)، ثم يتهيئة جلسة ONNX Runtime مع تمكين التخزين المؤقت للثنائيات السياقية (context-binary caching) - وهذا يجمع الرسم البياني المُقايس في ملف سياق ثنائي لـ 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 على Snapdragon)، والسيارات، ومنتجات XR، والمنتجات المدمجة.
  • ثنائي سياق مجمع مسبقاً (Precompiled Context Binary): يقلل شحن ثنائي السياق من تجميع الرسم البياني على الجهاز، مما يقلل من زمن تحميل النموذج على الهدف.
  • مخرج مكتفٍ ذاتياً: يحتوي ملف ONNX المُصدّر على ثنائي سياق QNN المجمع مسبقاً والبيانات الوصفية للنشر المباشر.

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

هاتف Android#

العتاد: Xiaomi 17 بذاكرة LPDDR5X سعة 12 جيجابايت ونظام Android 16 / API 36. معالجها بحجم 3 نانومتر Snapdragon 8 Elite Gen 5 (SM8850) يضم وحدة معالجة مركزية Qualcomm Oryon ذات 8 أنوية (نواتان أساسيتان حتى 4.6 جيجاهرتز و6 أنوية أداء حتى 3.62 جيجاهرتز)، ووحدة معالجة رسوميات Adreno GPU، ووحدة معالجة عصبية Hexagon NPU (HTP v81).

النموذجالمهمةالحجم
(بكسل)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
وحدة المعالجة العصبية
QNN W8A16
(ms)
YOLO26nاكتشاف64052.2
1.8 / 48.1 / 2.4
15.8
2.3 / 8.9 / 4.6
10.7
1.8 / 6.7 / 2.2
YOLO26n-segتجزئة64073.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دلالي (Semantic)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العمق (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 plugin وأصول v0.6.6 القياسية. تم تناوب ترتيب الخلفيات بين المهام في جولة متسلسلة واحدة. أكدت السجلات المحلية أن كل صف من صفوف وحدة معالجة المركز استخدم LiteRT CPU/XNNPACK، وأن كل صف من صفوف وحدة معالجة الرسوميات قام بتفويض الرسم البياني الكامل إلى LiteRT OpenCL (LITERT_CL)، واستخدم كل صف من صفوف NPU خلفية QNN Hexagon HTP.
  • سجل قياس الأداء المفصل موجود في مستند أداء Flutter.
  • قارن بين أجهزة Android الأخرى في تكامل LiteRT وأجهزة Apple في تكامل CoreML.

حاسوب محمول يعمل بنظام Windows على معالج Snapdragon#

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

النموذجالمهمةالحجم
(بكسل)
وحدة المعالجة المركزية
PT FP32
(مللي ثانية)
NPU Hexagon
QNN W8A16
(ms)
YOLO26nاكتشاف64091.4
4.3 / 75.2 / 0.1
27.2
4.9 / 19.4 / 0.9
YOLO26n-segتجزئة640138.8
4.5 / 127.1 / 2.8
34.3
5.0 / 24.0 / 5.1
YOLO26n-semدلالي (Semantic)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
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

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

قم بتصدير نموذج Ultralytics YOLO إلى تنسيق QNN للنشر على أجهزة Qualcomm. يتم إنهاء الملف الثنائي السياقي لهندسة معالجة موتر Hexagon (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 (طراز 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 والأحدث حزم wheels مُجهزة مسبقاً لنظامي 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 (التي توفر موفر تنفيذ ONNX Runtime QNN وتضم مكتبات QAIRT) تلقائياً عند التصدير الأول. للحصول على إرشادات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل تثبيت Ultralytics. أثناء تثبيت الحزم المطلوبة لـ YOLO، إذا واجهت أي صعوبات، فراجع دليل المشكلات الشائعة للحلول والنصائح.

الاستخدام#

يدعم تنسيق QNN أوضاع التصدير Export، والتنبؤ Predict، والتحقق Validate. يتم تشغيل الاستدلال والتحقق على عتاد 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 opset للرسم البياني الوسيط ONNX. في حال عدم تحديده، يتم استخدام أحدث إصدار مدعوم.
datastrNoneمجموعة بيانات YAML المستخدمة لتقييس INT8؛ بينما يأخذ التصنيف بدلاً من ذلك مجلد مجموعة بيانات أو اسم مجموعة بيانات مدمجة. إذا تم حذفه، تقوم Ultralytics بتحديد مجموعة بيانات المعايرة الافتراضية لمهمة النموذج.
fractionfloat1.0جزء من مجموعة بيانات المعايرة لاستخدامه في تكميم INT8.
devicestrNoneيحدد الجهاز لخطوة تصدير ONNX: وحدة معالجة الرسوميات (device=0) أو وحدة معالجة المركز (device=cpu).
الدقة (Precision)

يقوم تصدير 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، انظر الاستخدام Usage أعلاه) - تقوم Ultralytics بتحميل الثنائي السياقي لـ HTP من خلال موفر تنفيذ ONNX Runtime QNN.

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

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، يتضمن ذلك موفر تنفيذ ONNX Runtime QNN، وlibQnnSystem.so، وlibQnnHtp.so، ومكتبات جذع وهيكل HTP v75 لـ IQ-8275، ودعم مساحة المستخدم لـ FastRPC مثل libcdsprpc.so، والبرامج الثابتة لـ DSP، وبرامج FastRPC/النواة المقابلة. يجب أن تكون مكتبة الهيكل قابلة للاكتشاف من خلال مسار مكتبة DSP الخاص بـ BSP.

تأتي هذه المكونات الموجودة على جانب الهدف من BSP الممكن لـ QAIRT/QNN الخاص ببائع اللوحة؛ فهي غير مدمجة في النموذج المُصدَّر. يتطلب تنفيذ وحدة معالجة الرسوميات بدلاً من ذلك libQnnGpu.so ومكدس برامج تشغيل مساحة المستخدم Adreno المطابق. إن إخراج Ultralytics format=qnn هو ثنائي سياقي خاص بـ HTP، لذا يجب أن يبدأ نشر وحدة معالجة الرسوميات أو وحدة معالجة المركز من تصدير 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 مناسبة تماماً لمجموعة واسعة من تطبيقات الحوسبة الطرفية للذكاء الاصطناعي (edge AI):

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

ملخص#

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

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

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

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

  • يمكنك تصدير نموذجك باستخدام export(format="qnn", imgsz=640) (imgsz=224 للتصنيف) أو وسائط سطر الأوامر (CLI) المكافئة. ينشئ التصدير أولاً نموذج ONNX، ثم يجمعه محلياً في ثنائي سياق QNN باستخدام موفر تنفيذ ONNX Runtime QNN. يتم تثبيت حزمة 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. يستهدف تصدير Ultralytics QNN نفس مشغل QNN/QAIRT (وحدة معالجة المركز Snapdragon CPU، ووحدة معالجة الرسوميات Adreno GPU، ووحدة المعالجة العصبية Hexagon NPU) ولكنه يجمع الثنائي السياقي محلياً باستخدام موفر تنفيذ ONNX Runtime QNN - بدون حساب، وبدون تحميل، وبدون قائمة انتظار. إنها أسرع طريقة الانتقال من نموذج .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 بتحميل الثنائي السياقي من خلال موفر تنفيذ ONNX Runtime QNN وتشغيله على Hexagon NPU - انظر نشر نماذج YOLO QNN المُصدَّرة (Deploying Exported YOLO QNN Models).

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

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

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

التعليقات