تصدير Qualcomm QNN لنماذج Ultralytics YOLO
يتطلب نشر نماذج رؤية الحاسوب على أجهزة Qualcomm Snapdragon تنسيق نموذج مضبوط لوقت تشغيل Qualcomm AI Engine Direct (QNN). يتيح لك تصدير نماذج Ultralytics YOLO إلى تنسيق QNN تشغيل الاستدلال المسرّع على الجهاز عبر وحدة المعالجة المركزية (CPU) في Snapdragon، ووحدة معالجة الرسوميات (GPU) من Adreno، ووحدة معالجة الشبكات العصبية (NPU) من Hexagon الموجودة في مليارات الهواتف المحمولة، والحواسيب المحمولة، وأنظمة السيارات، وأجهزة إنترنت الأشياء (IoT). يوضح هذا الدليل كيفية تصدير YOLO إلى Qualcomm QNN ونشره لإجراء استدلال سريع ومنخفض الطاقة على أجهزة Snapdragon.
ما هو Qualcomm QNN؟
Qualcomm AI Engine Direct — الذي يشار إليه عادةً باسم QNN ويتم توزيعه كجزء من مجموعة أدوات التطوير (SDK) لـ Qualcomm AI Runtime (QAIRT) — هو مكدس الاستدلال منخفض المستوى الخاص بـ Qualcomm لمعالجات Snapdragon. وهو يوفر واجهة برمجة تطبيقات (API) موحدة مع مكتبات خاصة بكل وحدة معالجة خلفية تستهدف وحدة المعالجة المركزية في Snapdragon، ووحدة معالجة الرسوميات (GPU) من Adreno، ومعالج Hexagon Tensor Processor (HTP)، وهو وحدة معالجة الشبكات العصبية (NPU) المخصصة داخل أنظمة Snapdragon المتطورة على شريحة (SoCs). يمنح 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 إلى تقديم إنتاجية أعلى بشكل كبير واستهلاك طاقة أقل مقارنة باستدلال وحدة المعالجة المركزية (CPU) — وهو مثالي للاستدلال في الوقت الفعلي ورؤية الحاسوب الدائمة على Snapdragon.
- على الجهاز ودون اتصال بالإنترنت: يعمل استدلال QNN بالكامل على جهاز Snapdragon، لذا لا توجد رحلات ذهاب وإياب إلى السحابة، ويظل وقت الاستجابة منخفضاً، ولا تغادر البيانات الجهاز أبداً.
- كفاءة INT8: يقوم تصدير QNN بضبط YOLO كمياً إلى INT8، وهي الدقة الأصلية لـ Hexagon NPU، مما يقلل من حجم النموذج ويزيد من عدد الإطارات في الثانية على الأجهزة التي تعمل بالبطارية.
- تنسيق واحد، أجهزة عديدة: يستهدف تصدير Qualcomm QNN واحد وحدة المعالجة المركزية في Snapdragon، ووحدة معالجة الرسوميات (GPU) من Adreno، ووحدة معالجة الشبكات العصبية (NPU) من Hexagon عبر عائلات Snapdragon 8 Gen 2 و8 Gen 3 و8 Elite وما بعدها.
- مكدس الذكاء الاصطناعي من Qualcomm الجاهز للإنتاج: يعد QNN (Qualcomm AI Engine Direct / QAIRT) وقت تشغيل الذكاء الاصطناعي الحالي والمُدار بنشاط من Qualcomm على الجهاز والبديل الموصى به لـ SNPE.
تنسيق تصدير QNN
تقوم Ultralytics بتجميع نماذج YOLO إلى QNN محلياً باستخدام موفر تنفيذ QNN الخاص بـ ONNX Runtime (حزمة onnxruntime-qnn التي يمكن تثبيتها عبر pip، والتي تجمع مكتبات QAIRT). يقوم المُصدر بتحويل نموذجك إلى ONNX، ويقوم بضبطه كمياً إلى INT8 باستخدام بيانات المعايرة (Hexagon NPU هو مسرع int8)، ثم يقوم بتهيئة جلسة ONNX Runtime مع تمكين التخزين المؤقت للثنائي السياقي — وهذا يجمع الرسم البياني المُكمَّم في ثنائي سياق QNN مضمن في <model>_qnn.onnx. لا يلزم وجود حساب Qualcomm أو تحميل سحابي أو تنزيل منفصل لمجموعة أدوات التطوير (SDK).
على عكس Qualcomm AI Hub المستند إلى السحابة، والذي يقوم بتجميع وتوصيف النماذج على أجهزة Snapdragon المستضافة من قبل Qualcomm ويتطلب حساباً في Qualcomm، يعمل تصدير Ultralytics QNN بالكامل على جهازك الخاص عبر استدعاء واحد export(format="qnn"). تحصل على نفس وقت تشغيل QNN/QAIRT المستهدف — وحدة المعالجة المركزية في Snapdragon، ووحدة معالجة الرسوميات (GPU) من Adreno، ووحدة معالجة الشبكات العصبية (NPU) من Hexagon — دون تسجيل، أو حدود تحميل، أو أوقات انتظار، ويندمج مباشرة في سير عمل تصدير YOLO القياسي.
تجمع حزمة الدليل _qnn_model/ المصدّرة ثنائي سياق ONNX وملف metadata.yaml الذي يصف أسماء الفئات، وحجم الصورة، والمهمة.
الميزات الرئيسية لنماذج QNN
- تكميم INT8: يتم تكميم النموذج إلى INT8 باستخدام تدفق QDQ الخاص بـ ONNX Runtime QNN ومجموعة بيانات معايرة، مما يطابق الدقة الأصلية لـ Hexagon NPU لتحقيق أقصى قدر من الإنتاجية والحد الأدنى من الحجم. تعرف على المزيد حول تكميم النموذج.
- تجميع محلي بالكامل: يتم إنشاء ثنائي السياق بالكامل على جهازك المضيف — لا يلزم وجود حساب Qualcomm أو رمز واجهة برمجة تطبيقات (API) أو تحميل سحابي.
- تسريع Snapdragon الكامل: قم بتشغيل الاستدلال على Hexagon NPU (HTP)، أو Adreno GPU، أو وحدة المعالجة المركزية (CPU) من خلال وقت تشغيل موحد واحد.
- وصول واسع للجهاز: استهدف مجموعة واسعة من منصات Snapdragon التي يتم شحنها في الهواتف، وأجهزة الكمبيوتر الشخصية (Windows على Snapdragon)، والسيارات، وXR، والمنتجات المدمجة.
- ثنائي سياق مجمّع مسبقاً: يقلل شحن ثنائي السياق من تجميع الرسم البياني على الجهاز، مما يقلل من زمن تحميل النموذج على الهدف.
- مخرجات مستقلة بذاتها: يتضمن الدليل المصدّر ثنائي سياق ONNX والبيانات الوصفية للنشر المباشر.
المهام المدعومة
يدعم تصدير QNN مجموعة المهام القياسية المتاحة في كل عائلة نماذج، بما في ذلك التجزئة الدلالية لـ YOLO26.
التصدير إلى QNN: تحويل نموذج YOLO الخاص بك
قم بتصدير نموذج Ultralytics YOLO إلى تنسيق QNN للنشر على أجهزة Snapdragon. يتم الانتهاء من ثنائي السياق لهندسة Hexagon Tensor Processor (HTP) مستهدفة، والتي تختارها باستخدام وسيطة name — وهي نفس الوسيطة المستخدمة لاستهداف شريحة في تصدير RKNN.
بنيات HTP المدعومة
قم بتمرير البنية المستهدفة عبر name (على سبيل المثال name="73"). القيم الصالحة:
name | Hexagon HTP | منصة Snapdragon |
|---|---|---|
68 | v68 | Snapdragon 865 |
69 | v69 | Snapdragon 888 / 8 Gen 1 |
73 | v73 | Snapdragon 8 Gen 2 (افتراضي) |
75 | v75 | Snapdragon 8 Gen 3 |
79 | v79 | Snapdragon 8 Elite |
يستخدم تصدير QNN حزمة onnxruntime-qnn. يتم نشر إصدارات مستقرة لـ Windows (x64 وARM64) و Linux ARM64 (aarch64)؛ يتوفر إصدار Linux x86-64 على خلاصة ONNX Runtime الليلية. لا يوجد إصدار لنظام macOS — على macOS، قم ببناء ONNX Runtime من المصدر باستخدام --use_qnn، أو قم بتشغيل التصدير على منصة مدعومة. يعمل توليد ثنائي سياق QNN على مضيف x64 (لا يلزم وجود جهاز Snapdragon لخطوة التصدير).
التثبيت
لتثبيت الحزم المطلوبة، قم بتشغيل:
# Install the required package for YOLO
pip install ultralyticsيتم تثبيت حزمة onnxruntime-qnn (التي توفر موفر تنفيذ ONNX Runtime QNN وتجمع مكتبات 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), targeting an HTP architecture via 'name'
# 'name' can be one of 68, 69, 73, 75, 79 (Snapdragon 865, 888/8 Gen 1, 8 Gen 2, 8 Gen 3, 8 Elite)
model.export(format="qnn", name="73") # creates 'yolo26n_qnn_model/'from ultralytics import YOLO
# Load the exported QNN model (on a Snapdragon device with onnxruntime-qnn)
model = YOLO("yolo26n_qnn_model")
# 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_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")وسائط التصدير
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'qnn' | تنسيق مستهدف للنموذج المصدّر، يحدد التوافق مع وقت تشغيل Qualcomm QNN. |
imgsz | int أو tuple | 640 | Desired image size for the model input. Can be an integer for square images or a tuple (height, width). |
batch | int | 1 | يحدد حجم دفعة نموذج التصدير، والذي يتم تضمينه في ثنائي سياق QNN الذي تم إنشاؤه. |
name | str | '73' | إصدار بنية Hexagon HTP المستهدفة: 68، 69، 73، 75، أو 79 (Snapdragon 865، 888/8 Gen 1، 8 Gen 2، 8 Gen 3، 8 Elite). يتم الانتهاء من ثنائي السياق لهذه البنية. |
int8 | bool | True | تمكين تكميم INT8. مطلوب لتصدير QNN HTP — يتم ضبطه تلقائياً على True إذا لم يتم تحديده. |
data | str | 'coco8.yaml' | ملف تكوين مجموعة البيانات المستخدم لمعايرة INT8. يحدد مصدر صور المعايرة. |
fraction | float | 1.0 | جزء من مجموعة بيانات المعايرة المراد استخدامها لتكميم INT8. |
device | str | None | يحدد الجهاز لخطوة تصدير ONNX: GPU (device=0) أو CPU (device=cpu). |
معالج Hexagon NPU (HTP) هو مسرع int8، لذا يقوم تصدير QNN بتكميم النموذج إلى INT8 باستخدام تدفق تكميم QDQ الخاص بـ ONNX Runtime مع صور معايرة من data. يتم فرض int8=True تلقائياً.
لمزيد من التفاصيل حول عملية التصدير، قم بزيارة صفحة وثائق Ultralytics حول التصدير.
هيكل المخرجات
بعد تصدير ناجح، يتم إنشاء دليل نموذج بالتخطيط التالي:
yolo26n_qnn_model/
├── yolo26n_qnn.onnx # ONNX wrapping the precompiled QNN context binary
└── metadata.yaml # Model metadata (classes, image size, task, etc.)يقوم ملف yolo26n_qnn.onnx بتضمين ثنائي سياق QNN ويتم تحميله بواسطة ONNX Runtime مع موفر تنفيذ QNN على جهاز Snapdragon. يحتوي ملف metadata.yaml على أسماء الفئات، وحجم الصورة، ومعلومات أخرى تستخدمها خط أنابيب Ultralytics.
نشر نماذج YOLO QNN المصدّرة
تعمل نماذج QNN على أجهزة Qualcomm Snapdragon، مما يجعل نشر النموذج على الجهاز أمراً مباشراً. على جهاز Snapdragon مثبت عليه onnxruntime-qnn، قم بتشغيل النموذج المصدّر مباشرة باستخدام Ultralytics API (yolo predict/yolo val، راجع الاستخدام أعلاه) — تقوم Ultralytics بتحميل ثنائي السياق من خلال موفر تنفيذ ONNX Runtime QNN وتحدد وحدة معالجة 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_model/yolo26n_qnn.onnx", sess_options=options)
outputs = session.run(None, {"images": input_tensor}) # input_tensor: float32 NCHWنظراً لأن ثنائي سياق QNN مجمّع مسبقاً، يتم تحميل الجلسة بسرعة دون إعادة تجميع الرسم البياني على الجهاز.
سير العمل الموصى به
- تدريب نموذجك باستخدام وضع التدريب من Ultralytics
- تصدير إلى تنسيق QNN باستخدام
model.export(format="qnn")على منصة مدعومة (Windows أو Linux ARM64) - نشر الدليل
_qnn_model/المصدّر إلى جهاز Snapdragon الخاص بك - تشغيل الاستدلال باستخدام ONNX Runtime وموفر تنفيذ QNN، مع اختيار خلفية HTP أو GPU أو CPU
تطبيقات العالم الحقيقي
تعد نماذج YOLO التي تعمل على أجهزة Qualcomm Snapdragon مناسبة تماماً لمجموعة واسعة من تطبيقات الذكاء الاصطناعي للحافة:
- الهواتف الذكية: كشف الأشياء وفهم المشهد في الوقت الفعلي في تطبيقات الكاميرا والصور مع تسريع 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 البيئي الواسع.
For other on-device and mobile deployment targets, see the related ONNX, CoreML, NCNN, TFLite, ExecuTorch, RKNN, Sony IMX500, and TensorRT export guides. To compare formats before shipping, use Benchmark mode. For the full list of formats and options, visit the Export mode documentation and the integrations guide page.
الأسئلة الشائعة (FAQ)
كيف يمكنني تصدير نموذج Ultralytics YOLO الخاص بي إلى تنسيق QNN؟
يمكنك تصدير نموذجك باستخدام طريقة export() في Python أو عبر CLI باستخدام format="qnn". يقوم التصدير أولاً بإنشاء نموذج ONNX، ثم تجميعه محلياً في ثنائي سياق QNN باستخدام موفر تنفيذ ONNX Runtime QNN. يتم تثبيت حزمة onnxruntime-qnn تلقائياً عند التصدير الأول.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="qnn")هل أحتاج إلى حساب Qualcomm أو وصول إلى السحابة؟
لا. يتم تشغيل تصدير QNN بالكامل على جهازك المحلي باستخدام حزمة onnxruntime-qnn التي تجمع مكتبات QAIRT. لا يلزم وجود حساب Qualcomm أو رمز واجهة برمجة تطبيقات (API) أو وصول إلى الشبكة.
كيف يقارن تصدير Ultralytics QNN بـ Qualcomm AI Hub؟
Qualcomm AI Hub هو خدمة سحابية من Qualcomm لتجميع وتوصيف وقياس النماذج على أجهزة Snapdragon المستضافة، ويتطلب حساباً في Qualcomm. يستهدف تصدير Ultralytics QNN نفس وقت تشغيل QNN/QAIRT (Snapdragon CPU، Adreno GPU، وHexagon NPU) ولكنه يقوم بتجميع ثنائي السياق محلياً باستخدام موفر تنفيذ ONNX Runtime QNN — لا حساب، لا تحميل، ولا طوابير. إنها أسرع طريقة للانتقال من نموذج .pt إلى بناء جاهز لـ Snapdragon مباشرة داخل سير عمل تصدير YOLO القياسي.
ما هي المنصات التي يمكنني التصدير عليها؟
توفر onnxruntime-qnn إصدارات مستقرة لـ Windows (x64 وARM64) و Linux ARM64 (aarch64)، بالإضافة إلى إصدار Linux x86-64 على خلاصة ONNX Runtime الليلية. لا يحتوي macOS على إصدار — قم ببناء ONNX Runtime من المصدر باستخدام --use_qnn أو قم بالتصدير على منصة مدعومة. يعمل توليد ثنائي السياق على مضيف x64 ولا يتطلب جهاز Snapdragon فعلي.
كيف يمكنني تشغيل YOLO على معالج Qualcomm Snapdragon NPU؟
قم بالتصدير باستخدام model.export(format="qnn")، وانسخ دليل yolo26n_qnn_model الناتج إلى جهاز Snapdragon الخاص بك، ثم قم بتشغيل yolo predict model=yolo26n_qnn_model source=image.jpg (أو yolo val). تقوم Ultralytics بتحميل ثنائي السياق من خلال موفر تنفيذ ONNX Runtime QNN وتشغيله على Hexagon NPU — راجع نشر نماذج YOLO QNN المصدّرة.
ما الفرق بين QNN وSNPE؟
QNN (Qualcomm AI Engine Direct، جزء من مجموعة أدوات QAIRT SDK) هو مكدس الاستدلال الحالي لـ Qualcomm والبديل الموصى به لمجموعة أدوات Snapdragon Neural Processing Engine (SNPE) الأقدم. يجب أن تستهدف عمليات النشر الجديدة QNN.
هل يمكنني تشغيل نموذج QNN باستخدام yolo predict و yolo val؟
نعم، على جهاز Qualcomm Snapdragon مثبت عليه onnxruntime-qnn — تقوم YOLO("yolo26n_qnn_model") بتحميل ثنائي السياق من خلال موفر تنفيذ QNN وتشغيل predict/val مثل أي تنسيق آخر. على مضيف x86 بدون أجهزة QNN، لا يمكن تنفيذ النموذج، لأن ثنائي السياق يستهدف Snapdragon NPU.
ما هو ناتج تصدير QNN؟
يقوم التصدير بإنشاء دليل (مثل yolo26n_qnn_model/) يحتوي على ثنائي سياق ONNX (yolo26n_qnn.onnx) وملف metadata.yaml يحتوي على أسماء الفئات، وحجم الصورة، ومعلومات المهمة.