أمن جاهز للمؤسسات: متوافقة مع ISO 27001 و SOC 2 Type I.

Link to this sectionتصدير 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 على وحدات معالجة العصب (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.

Link to this sectionما هو Qualcomm QNN؟#

Qualcomm QNN on-device inference

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

Link to this sectionلماذا يتم التصدير إلى Qualcomm QNN؟#

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

  • تسريع Hexagon NPU: يؤدي تشغيل YOLO على Hexagon Tensor Processor إلى توفير إنتاجية أعلى بشكل كبير واستهلاك طاقة أقل مقارنةً بالاستنتاج على وحدة المعالجة المركزية (CPU) - وهو مثالي لـ real-time inference والرؤية الحاسوبية المستمرة على Snapdragon.
  • على الجهاز ودون اتصال بالإنترنت: يعمل استنتاج QNN بالكامل على جهاز Snapdragon، لذا لا توجد رحلات ذهاب وإياب إلى السحابة، وتبقى زمن الوصول منخفضاً، ولا تغادر البيانات الجهاز أبداً.
  • كفاءة التكميم (Quantization): يقوم تصدير QNN بـ quantizes نماذج 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.

Link to this sectionتنسيق تصدير QNN#

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

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

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

Link to this sectionالميزات الرئيسية لنماذج QNN#

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

Link to this sectionالأداء المقاس#

Link to this sectionهاتف Android#

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

النموذجالمهمةالحجم
(بكسل)
CPU
w8a32 LiteRT
(ms)
وحدة معالجة الرسومات
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، مقاسة باستخدام أداة اختبار الأداء على الجهاز Flutter plugin's للإصدار 0.6.10 والأصول المعيارية v0.6.6. تم تبديل ترتيب الواجهات الخلفية بين المهام في دورة تسلسلية واحدة. أكدت السجلات الأصلية أن كل صف معالج مركزي استخدم LiteRT CPU/XNNPACK، وكل صف وحدة معالجة رسومات قام بتفويض الرسم البياني الكامل إلى LiteRT OpenCL (LITERT_CL)، وكل صف وحدة معالجة عصبية استخدم واجهة QNN Hexagon HTP الخلفية.
  • سجل القياسات المفصل موجود في Flutter performance doc.
  • قارن بين أجهزة Android الأخرى في LiteRT integration وأجهزة Apple في CoreML integration.

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

This historical sweep used pre-standard v73 QNN binaries; semantic and OBB used 1024px inputs. It ran on a Lenovo laptop with 32 GB memory and Windows 11. Its Snapdragon X Elite (X1E78100) has a 12-core Qualcomm Oryon CPU, Adreno GPU, and Hexagon NPU (HTP v73); the exact Lenovo model was not recorded. This Windows-on-Snapdragon comparison runs the native PyTorch FP32 CPU baseline that most desktop developers start from against the ONNX Runtime QNN Hexagon HTP path. Each cell shows the full model.predict() wall time with the reported preprocessing / inference / postprocessing timings beneath it; the total can include framework overhead outside those three stages. CPU numbers are PyTorch FP32 (torch==2.10.0+cpu) and NPU numbers are ONNX Runtime QNN (onnxruntime-qnn==2.2.0, INT8 weights / 16-bit activations).

النموذجالمهمةالحجم
(بكسل)
وحدة المعالجة المركزية
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 بكسل حيث يهيمن الحمل الزائد للمعالجة المسبقة الثابتة على عبء العمل الصغير.

Link to this sectionالمهام المدعومة#

يدعم تصدير QNN مجموعة المهام القياسية المتاحة في كل عائلة نماذج، بما في ذلك التجزئة الدلالية YOLO26.

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

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

Link to this sectionبنيات HTP المدعومة#

مرر البنية المستهدفة عبر name (مثلاً name="73"). القيم الصالحة هي:

nameHexagon HTPمنصة Snapdragon
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
دعم المنصة

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

Link to this sectionالتثبيت#

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

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

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

Link to this sectionالاستخدام#

يدعم تنسيق QNN أوضاع Export و Predict و Validate. يتم تشغيل الاستنتاج والتحقق على أجهزة Qualcomm Snapdragon من خلال ONNX Runtime's QNN Execution Provider (نفس حزمة onnxruntime-qnn المستخدمة للتصدير). قم بتصدير نموذجك، ثم قم بتحميل النموذج المُصدّر على جهاز Snapdragon لتشغيل الاستنتاج أو التحقق من دقته.

التصدير
from ultralytics import YOLO

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

# Export to Qualcomm QNN format (INT8, enforced automatically), targeting an HTP architecture via 'name'
# 'name' can be one of 68, 69, 73, 75, 79, 81 (Snapdragon 888, 8 Gen 1, 8 Gen 2, 8 Gen 3, 8 Elite, 8 Elite Gen 5)
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")

Link to this sectionوسائط التصدير#

الوسيطالنوعالافتراضيالوصف
formatstr'qnn'تنسيق الهدف للنموذج المُصدّر، مما يحدد التوافق مع وقت تشغيل Qualcomm QNN.
imgszint أو tuple640حجم الصورة المطلوب لمدخل النموذج. يمكن أن يكون عدداً صحيحاً للصور المربعة أو صفاً (height, width).
batchint1يحدد حجم دفعة نموذج التصدير، والذي يتم دمجه في ثنائي سياق QNN الذي تم إنشاؤه.
namestr'73'إصدار بنية Hexagon HTP المستهدفة: 68 أو 69 أو 73 أو 75 أو 79 أو 81 (Snapdragon 888, 8 Gen 1, 8 Gen 2, 8 Gen 3, 8 Elite, 8 Elite Gen 5). يتم الانتهاء من ثنائي السياق لهذه البنية.
quantizeint أو str'w8a16'/autoدقة التكميم (Quantization). يتم تكميم تصدير QNN HTP إلى أوزان INT8 مع تنشيطات 16-بت ('w8a16') ويتم تمكينه تلقائيًا إذا لم يتم تحديده. يحل محل علامات half/int8 التي تم إيقاف العمل بها.
simplifyboolTrueيعمل على تبسيط الرسم البياني الوسيط لـ ONNX باستخدام onnxslim.
opsetintNoneيحدد إصدار ONNX opset للرسم البياني الوسيط ONNX. في حال عدم تحديده، يتم استخدام أحدث إصدار مدعوم.
datastr'coco8.yaml'ملف تكوين مجموعة البيانات المستخدم لمعايرة INT8. يحدد مصدر صور المعايرة.
fractionfloat1.0جزء من مجموعة بيانات المعايرة لاستخدامه في تكميم INT8.
devicestrNoneيحدد الجهاز لخطوة تصدير ONNX: GPU (device=0) أو CPU (device=cpu).
الدقة (Precision)

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

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

Link to this sectionهيكل المخرجات#

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

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

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

Link to this sectionنشر نماذج YOLO QNN المُصدّرة#

تعمل نماذج QNN على أجهزة Qualcomm Snapdragon، مما يجعل model deployment على الجهاز أمراً مباشراً. على جهاز Snapdragon مثبت عليه onnxruntime-qnn، قم بتشغيل النموذج المُصدّر مباشرةً باستخدام Ultralytics API (yolo predict/yolo val، انظر Usage أعلاه) - تقوم Ultralytics بتحميل ثنائي السياق من خلال ONNX Runtime QNN Execution Provider وتختار الواجهة الخلفية HTP (NPU) أو GPU أو CPU.

بالنسبة لخطوط أنابيب مخصصة، يمكنك أيضاً تحميل 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 مجمع مسبقاً، يتم تحميل الجلسة بسرعة دون إعادة تجميع الرسم البياني على الجهاز.

Link to this sectionسير العمل الموصى به#

  1. درب نموذجك باستخدام وضع التدريب في Ultralytics Train Mode
  2. التصدير إلى تنسيق QNN باستخدام model.export(format="qnn", imgsz=640) على منصة مدعومة (استخدم imgsz=224 للتصنيف)
  3. نشر ملف *_qnn.onnx المُصدّر إلى جهاز Snapdragon الخاص بك
  4. تشغيل الاستنتاج مع ONNX Runtime و QNN Execution Provider، مع اختيار الواجهة الخلفية HTP أو GPU أو CPU

Link to this sectionتطبيقات العالم الحقيقي#

نماذج YOLO التي تعمل على أجهزة Qualcomm Snapdragon مناسبة تماماً لمجموعة واسعة من تطبيقات edge AI:

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

Link to this sectionملخص#

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

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

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

Link to this sectionالأسئلة الشائعة#

Link to this sectionكيف أقوم بتصدير نموذج Ultralytics YOLO الخاص بي إلى تنسيق QNN؟#

يمكنك تصصدير نموذجك باستخدام export(format="qnn", imgsz=640) (imgsz=224 للتصنيف) أو وسائط واجهة سطر الأوامر المكافئة. ينشئ التصدير أولاً نموذج 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

Link to this sectionهل أحتاج إلى حساب Qualcomm أو وصول إلى السحابة؟#

لا. يتم تشغيل تصدير QNN بالكامل على جهازك المحلي باستخدام حزمة onnxruntime-qnn، التي تجمع مكتبات QAIRT. لا يلزم وجود حساب Qualcomm أو رمز API أو وصول إلى الشبكة.

Link to this sectionكيف يقارن تصدير Ultralytics QNN بـ Qualcomm AI Hub؟#

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

Link to this sectionما هي المنصات التي يمكنني التصدير عليها؟#

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

Link to this sectionكيف أقوم بتشغيل YOLO على Qualcomm Snapdragon NPU؟#

قم بالتصدير باستخدام 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 — راجع Deploying Exported YOLO QNN Models.

Link to this sectionما هو الفرق بين QNN و SNPE؟#

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

Link to this sectionهل يمكنني تشغيل نموذج QNN باستخدام yolo predict و yolo val؟#

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

Link to this sectionما هو مخرج تصدير QNN؟#

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

التعليقات