Экспорт 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.
Официальный плагин 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 AI Engine Direct, обычно называемый QNN и распространяемый как часть SDK Qualcomm AI Runtime (QAIRT), — это низкоуровневый стек вывода Qualcomm для процессоров Snapdragon. Он предоставляет унифицированный API со специализированными библиотеками для различных бэкендов, рассчитанными на CPU Snapdragon, GPU Adreno и тензорный процессор Hexagon (HTP) — выделенный нейронный процессор (NPU) внутри современных SoC Snapdragon. QNN предоставляет разработчикам полноуровневый доступ к этим AI-ускорителям Snapdragon и является современным преемником устаревшего SDK Snapdragon Neural Processing Engine (SNPE). Он обеспечивает работу AI непосредственно на устройствах мобильных платформ Snapdragon 8 Gen 2, 8 Gen 3 и 8 Elite, ноутбуков Snapdragon X, а также автомобильных продуктов и устройств XR.
Зачем экспортировать в Qualcomm QNN?#
Snapdragon — самая распространенная в мире мобильная вычислительная платформа. Экспорт Ultralytics YOLO в формат Qualcomm QNN открывает доступ к выделенному AI-оборудованию этих устройств:
- Ускорение на NPU Hexagon: запуск YOLO на тензорном процессоре Hexagon обеспечивает значительно более высокую пропускную способность и меньшее энергопотребление по сравнению с выводом на CPU — это идеально подходит для вывода в реальном времени и постоянно работающего компьютерного зрения на Snapdragon.
- Непосредственно на устройстве и офлайн: вывод QNN полностью выполняется на устройстве Snapdragon, поэтому обращения к облаку не требуются, задержка остается низкой, а данные никогда не покидают устройство.
- Эффективность квантования: экспорт QNN квантует YOLO до весов INT8 с активациями 16-bit — это предпочтительный баланс точности и производительности для NPU Hexagon, позволяющий уменьшить размер модели и максимизировать количество кадров в секунду на оборудовании с питанием от аккумулятора.
- Один формат для множества устройств: один экспорт Qualcomm QNN поддерживает CPU Snapdragon, GPU Adreno и NPU Hexagon во всех семействах Snapdragon 8 Gen 2, 8 Gen 3 и 8 Elite, а также в последующих платформах.
- Готовый к промышленной эксплуатации стек Qualcomm AI: QNN (Qualcomm AI Engine Direct / QAIRT) — это текущая активно поддерживаемая среда выполнения AI непосредственно на устройстве от Qualcomm и рекомендуемая замена SNPE.
Формат экспорта QNN#
Ultralytics компилирует модели YOLO в QNN локально, используя QNN Execution Provider для ONNX Runtime (устанавливаемый через pip пакет onnxruntime-qnn, включающий библиотеки QAIRT). Экспортер преобразует модель в ONNX, квантует ее с помощью калибровочных данных до активаций 16-bit и весов INT8 (рекомендуемый баланс для NPU Hexagon), а затем инициализирует сессию ONNX Runtime с включенным кэшированием контекстного бинарного файла — так квантизированный граф компилируется в контекстный бинарный файл QNN, встроенный в <model>_qnn.onnx. Учетная запись Qualcomm, загрузка в облако или отдельная загрузка SDK не требуются.
В отличие от облачного Qualcomm AI Hub, который компилирует и профилирует модели на размещенных Qualcomm устройствах Snapdragon и требует учетную запись Qualcomm, экспорт QNN от Ultralytics полностью выполняется на твоем компьютере одним вызовом export(format="qnn", imgsz=640) (imgsz=224 для классификации). Ты получаешь ту же целевую среду выполнения QNN/QAIRT — CPU Snapdragon, GPU Adreno и NPU Hexagon — без регистрации, ограничений на загрузку и времени ожидания в очереди, а результат сразу включается в стандартный рабочий процесс экспорта YOLO.
Экспортированный файл *_qnn.onnx является автономным: он содержит контекстный бинарный файл QNN и метаданные ONNX, например названия классов, размер изображения и задачу.
Ключевые особенности моделей QNN#
- Квантование: модель квантуется до активаций 16-bit и весов INT8 с помощью процесса QNN QDQ в ONNX Runtime и набора данных для калибровки — рекомендуемого баланса точности и производительности для NPU Hexagon. Подробнее см. в разделе о квантовании моделей.
- Полностью локальная компиляция: контекстный бинарный файл полностью создается на твоем компьютере — учетная запись Qualcomm, API-токен и загрузка в облако не требуются.
- Полное ускорение Snapdragon: запускай вывод на NPU Hexagon (HTP), GPU Adreno или CPU через единую унифицированную среду выполнения.
- Широкий охват устройств: поддерживаются многочисленные платформы Snapdragon, используемые в телефонах, ПК (Windows on Snapdragon), автомобильных, XR- и встраиваемых продуктах.
- Предварительно скомпилированный контекстный бинарный файл: поставка контекстного бинарного файла сводит к минимуму компиляцию графа на устройстве и уменьшает задержку загрузки модели на целевом устройстве.
- Автономный результат: экспортированный файл ONNX содержит предварительно скомпилированный контекстный бинарный файл QNN и метаданные для простого развертывания.
Измеренная производительность#
Телефон на Android#
Оборудование: Xiaomi 17 с 12 ГБ памяти LPDDR5X и Android 16 / API 36. Его 3-нм Snapdragon 8 Elite Gen 5 (SM8850) оснащен 8-ядерным CPU Qualcomm Oryon (2 производительных ядра до 4,6 ГГц и 6 ядер Performance до 3,62 ГГц), GPU Adreno и NPU Hexagon (HTP v81).
| Модель | Задача | размер (пиксели) | CPU w8a32 LiteRT (мс) | GPU w8a32 LiteRT (мс) | NPU QNN W8A16 (мс) |
|---|---|---|---|---|---|
| YOLO26n | Detect | 640 | 52.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 | Segment | 640 | 73.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 | Семантическая сегментация | 640 | 61.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 | Глубина | 640 | 124.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 | Классификация | 224 | 4.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 | Позы | 640 | 57.4 1.8 / 53.8 / 1.8 | 16.6 2.7 / 10.1 / 3.9 | 10.9 1.8 / 7.0 / 2.0 |
| YOLO26n-obb | OBB | 640 | 50.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 ГБ памяти под управлением Windows 11. Его
Snapdragon X Elite
(X1E78100) оснащен 12-ядерным CPU Qualcomm Oryon, GPU Adreno и NPU Hexagon (HTP v73); точная модель Lenovo не была зафиксирована. В этом сравнении Windows-on-Snapdragon сопоставляется базовый вариант на нативном PyTorch FP32 CPU, с которого обычно начинают разработчики настольных приложений, с путем 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-bit).
| Модель | Задача | размер (пиксели) | CPU PT FP32 (мс) | NPU Hexagon QNN W8A16 (мс) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 91.4 4.3 / 75.2 / 0.1 | 27.2 4.9 / 19.4 / 0.9 |
| YOLO26n-seg | Segment | 640 | 138.8 4.5 / 127.1 / 2.8 | 34.3 5.0 / 24.0 / 5.1 |
| YOLO26n-sem | Семантическая сегментация | 1024 | 295.8 9.1 / 189.2 / 94.8 | 133.0 8.8 / 37.4 / 83.9 |
| YOLO26n-cls | Классификация | 224 | 15.4 3.0 / 9.8 / 0.0 | 11.7 2.7 / 5.5 / 0.0 |
| YOLO26n-pose | Позы | 640 | 109.6 4.6 / 102.9 / 0.2 | 28.9 5.3 / 23.3 / 0.6 |
| YOLO26n-obb | OBB | 1024 | 267.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). - NPU Hexagon работает примерно в 2–4 раза быстрее, чем базовый вариант PyTorch на CPU, для задач с размером 640–1024 пикселя (для обнаружения — примерно в 3,4 раза), а для классификатора с входом 224 пикселя преимущество сокращается примерно до 1,3 раза, поскольку фиксированные накладные расходы предобработки доминируют над небольшой рабочей нагрузкой.
Поддерживаемые задачи#
Экспорт Qualcomm QNN поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе, в котором есть такие головы.
| Задача | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Детекция | ✅ | ✅ | ✅ |
| Сегментация | ✅ | ✅ | ✅ |
| Семантическая сегментация | ❌ | ❌ | ✅ |
| Оценка глубины | ❌ | ❌ | ✅ |
| Классификация | ✅ | ✅ | ✅ |
| Поза | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Экспорт в QNN: преобразование твоей модели YOLO#
Экспортируй модель Ultralytics YOLO в формат QNN для развертывания на оборудовании Qualcomm. Контекстный бинарный файл создается для целевой архитектуры тензорного процессора Hexagon (HTP) или поддерживаемого SoC, который ты выбираешь с помощью аргумента name — того же аргумента, который используется для выбора чипа при экспорте RKNN.
Поддерживаемые цели HTP#
Передай целевую архитектуру или SoC через name (например, name="73" или name="iq-8275"). Поддержка определяется
целевым HTP, поэтому строки Snapdragon ниже представляют платформы, а не исчерпывающий список всех SoC.
Устройства Dragonwing перечислены явно.
| Статус | name | Hexagon HTP | Пример устройства или платформы |
|---|---|---|---|
| ✅ Поддерживается | 68 | v68 | Snapdragon 888 |
| ✅ Поддерживается | 69 | v69 | Snapdragon 8 Gen 1 / 8+ Gen 1 |
| ✅ Поддерживается | 73 | v73 | Snapdragon 8 Gen 2, X Elite (по умолчанию) |
| ✅ Поддерживается | 75 | v75 | Snapdragon 8 Gen 3 |
| ✅ Поддерживается | 79 | v79 | Snapdragon 8 Elite |
| ✅ Поддерживается | 81 | v81 | Snapdragon 8 Elite Gen 5 |
| ✅ Поддерживается | iq-8275 или qcs8275 | v75 | Dragonwing IQ-8275 / QCS8275 (модель SoC QNN 82) |
| ❌ Не поддерживается | — | v66 | Dragonwing IQ-615 / QCS615 |
Dragonwing IQ-615 нельзя использовать с экспортом контекстного бинарного файла Ultralytics QNN, поскольку ONNX Runtime не предоставляет его DSP v66 в качестве автономной цели HTP. Стандартный экспорт ONNX по-прежнему можно отдельно интегрировать с провайдером выполнения на CPU или GPU, поддерживаемым BSP платы.
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 Execution Provider для ONNX Runtime и включающий библиотеки QAIRT) устанавливается автоматически при первом экспорте. Подробные инструкции и рекомендации по установке см. в нашем руководстве по установке Ultralytics. Если при установке необходимых для YOLO пакетов возникнут сложности, обратись к нашему руководству по распространенным проблемам, где приведены решения и советы.
Использование#
Формат QNN поддерживает режимы Export, Predict и Validate. Вывод и валидация выполняются на оборудовании Qualcomm Snapdragon через QNN Execution Provider в 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 classificationfrom 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")Аргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'qnn' | Целевой формат экспортируемой модели, определяющий совместимость со средой выполнения Qualcomm QNN. |
imgsz | int или tuple | 640 | Желаемый размер входного изображения модели. Может быть целым числом для квадратных изображений или кортежем (height, width). |
batch | int | 1 | Задает размер пакета экспортируемой модели, который встраивается в созданный контекстный бинарный файл QNN. |
name | str | '73' | Целевая архитектура Hexagon HTP (68, 69, 73, 75, 79 или 81) либо поддерживаемый SoC (iq-8275 или qcs8275). Контекстный бинарный файл создается для этой цели. |
quantize | int или str | 'w8a16'/auto | Точность квантования. Экспорт QNN HTP квантуется до весов INT8 с активациями 16-bit ('w8a16') и включается автоматически, если параметр не указан. Заменяет устаревшие флаги half/int8. |
simplify | bool | True | Упрощает промежуточный граф ONNX с помощью onnxslim. |
opset | int | None | Задает версию opset для промежуточного графа ONNX. Если параметр не задан, используется последняя поддерживаемая версия. |
data | str | None | YAML-файл набора данных, используемый для калибровки INT8; для классификации вместо него указываются каталог набора данных или встроенное имя набора данных. Если параметр не указан, Ultralytics выбирает набор данных для калибровки по умолчанию для задачи модели. |
fraction | float, int или list | 1.0 | Подмножество для калибровки в виде доли, количества изображений или значений [train, val, test] — долей/количеств. В списках из двух элементов test оставляет полный набор, а 0 пропускает его. |
device | str | None | Указывает устройство для этапа экспорта ONNX: GPU (device=0) или CPU (device=cpu). |
Экспорт QNN квантует модель до активаций 16-bit и весов INT8 — рекомендуемого баланса точности и производительности для NPU Hexagon — с помощью процесса квантования QDQ в ONNX Runtime, используя калибровочные изображения из 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 запусти экспортированную модель напрямую через API 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, библиотеки заглушки и скелета v75 HTP для IQ-8275, пользовательскую поддержку FastRPC, например libcdsprpc.so, прошивку DSP и соответствующие драйверы FastRPC/ядра. Библиотека скелета должна находиться через путь к библиотекам DSP в BSP.
Эти компоненты для целевой системы предоставляет поставщик платы в составе BSP с поддержкой QAIRT/QNN; в экспортированную модель они не встраиваются. Для выполнения на GPU требуются libQnnGpu.so и соответствующий стек пользовательских драйверов Adreno. Результат Ultralytics format=qnn представляет собой бинарный файл контекста, специфичный для HTP, поэтому для развертывания на GPU или CPU следует начать со стандартного экспорта ONNX, а не с предварительно скомпилированного файла *_qnn.onnx.
Рекомендуемый рабочий процесс#
- Обучи модель с помощью Ultralytics режима обучения
- Экспортируй в формат QNN с помощью
model.export(format="qnn", name="iq-8275", imgsz=640)на поддерживаемой платформе (для классификации используйimgsz=224) - Разверни экспортированный файл
*_qnn.onnxна своем устройстве Qualcomm - Запусти вывод с помощью ONNX Runtime и провайдера выполнения QNN, используя бэкенд HTP
Практические применения#
Модели YOLO, работающие на оборудовании Qualcomm Snapdragon, хорошо подходят для широкого спектра приложений периферийного ИИ:
- Смартфоны: обнаружение объектов в реальном времени и понимание сцен в приложениях камеры и фотографий с ускорением NPU.
- Windows на Snapdragon: компьютерное зрение на устройстве в компьютерах Copilot+ без передачи данных в облако.
- Автомобили: мониторинг водителя, обнаружение пассажиров и функции ADAS на платформах Snapdragon Digital Chassis.
- XR и носимые устройства: энергоэффективное восприятие с низкой задержкой для AR/VR-гарнитур и умных очков.
- IoT и робототехника: эффективный вывод моделей компьютерного зрения на камерах, дронах и встраиваемых системах на базе Snapdragon.
Итоги#
В этом руководстве ты узнал, как локально экспортировать модели Ultralytics YOLO в формат Qualcomm QNN с помощью провайдера выполнения QNN для ONNX Runtime. Конвейер экспорта преобразует модель в 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. Полный список форматов и параметров см. в документации по режиму Export и на странице руководства по интеграциям.
Часто задаваемые вопросы#
Ты можешь экспортировать модель с помощью
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. Экспорт Ultralytics QNN предназначен для той же среды выполнения QNN/QAIRT (Snapdragon CPU, Adreno GPU и Hexagon NPU), но компилирует бинарный файл контекста локально с помощью провайдера выполнения QNN для ONNX Runtime — без учетной записи, загрузки и очереди. Это самый быстрый способ преобразовать модель
.ptв сборку, готовую для Snapdragon, непосредственно в стандартном процессе экспорта YOLO.onnxruntime-qnnверсии 2.4.0 и новее предоставляет готовые wheel-пакеты для 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 для выполнения, рекомендуемая замена устаревшему SDK Snapdragon Neural Processing Engine (SNPE). Для новых развертываний следует выбирать QNN.
Да, на устройстве Qualcomm Snapdragon с установленным
onnxruntime-qnn—YOLO("yolo26n_qnn.onnx")загружает бинарный файл контекста через провайдер выполнения QNN и запускаетpredict/val, как и любой другой формат. На хосте x86 без оборудования QNN модель выполнить нельзя, поскольку бинарный файл контекста предназначен для NPU Snapdragon.В результате экспорта создается автономный файл ONNX с бинарным контекстом (например,
yolo26n_qnn.onnx), содержащий встроенные имена классов, размер изображения, задачу и другие метаданные модели в ONNXmetadata_props.