Экспорт 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 для всех семи задач nano опубликованы в релизе 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 Tensor Processor (HTP) — специализированного блока обработки нейронных сетей (NPU) в современных SoC Snapdragon. 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 открывает доступ к специализированному оборудованию ИИ на этих устройствах:
- Ускорение на NPU Hexagon: Запуск YOLO на Hexagon Tensor Processor обеспечивает значительно более высокую пропускную способность и меньшее энергопотребление, чем инференс на CPU. Это идеальный вариант для инференса в реальном времени и постоянно работающих систем компьютерного зрения на устройствах Snapdragon.
- Работа на устройстве и без подключения к сети: Инференс QNN полностью выполняется на устройстве Snapdragon: обмена данными с облаком нет, задержка остается низкой, а данные не покидают устройство.
- Эффективность квантования: При экспорте в QNN YOLO квантуется до весов INT8 и 16-битных активаций — оптимального для 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) — это текущая поддерживаемая Qualcomm среда выполнения ИИ непосредственно на устройстве, рекомендуемая в качестве замены SNPE.
Формат экспорта QNN#
Ultralytics компилирует модели YOLO в QNN локально с помощью QNN Execution Provider для ONNX Runtime (пакета onnxruntime-qnn, который можно установить через pip и который включает библиотеки QAIRT). Экспортер преобразует модель в ONNX, квантует ее с помощью калибровочных данных до 16-битных активаций и весов INT8 (рекомендуемый баланс для NPU Hexagon), а затем инициализирует сессию ONNX Runtime с включенным кэшированием бинарного контекста — это компилирует квантованный граф в бинарный контекст QNN, встроенный в <model>_qnn.onnx. Учетная запись Qualcomm, загрузка данных в облако и отдельная загрузка SDK не требуются.
В отличие от облачного сервиса Qualcomm AI Hub, который компилирует и профилирует модели на размещенных Qualcomm устройствах Snapdragon и требует учетную запись Qualcomm, экспорт Ultralytics в QNN полностью выполняется на твоем компьютере одним вызовом export(format="qnn", imgsz=640) (для классификации — imgsz=224). Ты получаешь ту же целевую среду выполнения QNN/QAIRT — CPU Snapdragon, GPU Adreno и NPU Hexagon — без регистрации, ограничений на загрузку данных и ожидания в очереди. Кроме того, экспорт сразу встраивается в стандартный рабочий процесс экспорта YOLO.
Экспортированный файл *_qnn.onnx является самодостаточным: он содержит бинарный контекст QNN и метаданные ONNX, например названия классов, размер изображения и задачу.
Ключевые особенности моделей QNN#
- Квантование: Модель квантуется до 16-битных активаций и весов INT8 с помощью схемы QDQ ONNX Runtime QNN и набора данных для калибровки — рекомендуемого для NPU Hexagon баланса точности и производительности. Подробнее см. в материале о квантовании моделей.
- Полностью локальная компиляция: Бинарный контекст целиком создается на компьютере, где выполняется компиляция. Учетная запись Qualcomm, токен API и загрузка данных в облако не нужны.
- Полное ускорение Snapdragon: Запускай инференс на NPU Hexagon (HTP), GPU Adreno или CPU через единую среду выполнения.
- Широкая поддержка устройств: Поддерживаются многочисленные платформы Snapdragon, используемые в телефонах, компьютерах (Windows on Snapdragon), автомобилях, XR- и встраиваемых устройствах.
- Предварительно скомпилированный бинарный контекст: Поставка бинарного контекста сокращает компиляцию графа на устройстве и уменьшает задержку загрузки модели на целевом устройстве.
- Самодостаточный результат: Экспортированный файл ONNX содержит предварительно скомпилированный бинарный контекст QNN и метаданные, что упрощает развертывание.
Измеренная производительность#
Телефон Android#
Оборудование: Xiaomi 17 с памятью LPDDR5X объемом 12 GB и Android 16 / API 36. В устройстве используется изготовленный по 3-нм техпроцессу Snapdragon 8 Elite Gen 5 (SM8850): 8-ядерный CPU Qualcomm Oryon (2 производительных ядра Prime с частотой до 4,6 GHz и 6 ядер Performance с частотой до 3,62 GHz), GPU Adreno и NPU Hexagon (HTP v81).
| Модель | Задача | размер (пиксели) | CPU w8a32 LiteRT (мс) | GPU w8a32 LiteRT (мс) | NPU QNN W8A16 (мс) |
|---|---|---|---|---|---|
| YOLO26n | Обнаружение | 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 | Сегментация | 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 |
- Значения скорости — это задержки при обработке одного изображения в режиме burst: среднее значение для 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 px. Тестирование проводилось на ноутбуке Lenovo с памятью 32 GB и 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-битные активации).
| Модель | Задача | размер (пиксели) | CPU PT FP32 (мс) | NPU Hexagon QNN W8A16 (мс) |
|---|---|---|---|---|
| YOLO26n | Обнаружение | 640 | 91.4 4.3 / 75.2 / 0.1 | 27.2 4.9 / 19.4 / 0.9 |
| YOLO26n-seg | Сегментация | 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 раза быстрее базовой версии на CPU с PyTorch при выполнении задач с разрешением 640–1024 px (для детекции — примерно в 3,4 раза); для классификатора с разрешением 224 px преимущество сокращается примерно до 1,3 раза, поскольку фиксированные накладные расходы на предварительную обработку доминируют над небольшой вычислительной нагрузкой.
Поддерживаемые задачи#
Экспорт Qualcomm QNN поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе с такими выходными головками.
| Задача | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Обнаружение | ✅ | ✅ | ✅ |
| Сегментация | ✅ | ✅ | ✅ |
| Семантическая сегментация | ❌ | ❌ | ✅ |
| Глубина | ❌ | ❌ | ✅ |
| Классификация | ✅ | ✅ | ✅ |
| Оценка позы | ✅ | ✅ | ✅ |
| 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 перечислены отдельно.
| Статус | 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. Генерация контекстного бинарного файла выполняется на хосте x64, и для экспорта не требуется устройство Snapdragon.
Установка#
Чтобы установить необходимые пакеты, выполни команду:
# Install the required package for YOLO
pip install ultralyticsПакет onnxruntime-qnn (который предоставляет ONNX Runtime QNN Execution Provider и включает библиотеки QAIRT) устанавливается автоматически при первом экспорте. Подробные инструкции и рекомендации по установке смотри в руководстве по установке Ultralytics. Если при установке необходимых для YOLO пакетов возникнут трудности, решения и советы ты найдёшь в руководстве по распространённым проблемам.
Использование#
Формат QNN поддерживает режимы экспорта, предсказания и валидации. Инференс и валидация выполняются на оборудовании Qualcomm Snapdragon через ONNX Runtime QNN Execution Provider (тот же пакет onnxruntime-qnn, который используется для экспорта). Экспортируй модель, затем загрузи экспортированную модель на устройство Snapdragon, чтобы выполнить инференс или проверить точность.
from ultralytics import YOLO
# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")
# Экспорт в формат Qualcomm QNN (INT8, включается автоматически) для целевой платформы HTP v73 по умолчанию
model.export(format="qnn", name="73", imgsz=640) # используй imgsz=224 для классификацииfrom ultralytics import YOLO
# Загрузка экспортированной модели QNN (на устройстве Snapdragon с onnxruntime-qnn)
model = YOLO("yolo26n_qnn.onnx")
# Выполнить инференс
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Загрузка экспортированной модели QNN (на устройстве Snapdragon с onnxruntime-qnn)
model = YOLO("yolo26n_qnn.onnx")
# Проверить точность на наборе данных COCO8
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'/авто | Точность квантования. При экспорте QNN HTP используются веса INT8 и активации 16 бит ('w8a16'); квантование включается автоматически, если параметр не задан. Заменяет устаревшие флаги half/int8. |
simplify | bool | True | Упрощает промежуточный граф ONNX с помощью onnxslim. |
opset | int | None | Задает версию opset ONNX для промежуточного графа 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-битными активациями и весами INT8 — рекомендованным балансом точности и производительности для NPU Hexagon. Для этого используется процесс квантования 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 Execution Provider на устройстве Snapdragon. В нём также содержатся метаданные модели, например имена классов, размер изображения и задача, в ONNX metadata_props.
Развёртывание экспортированных моделей YOLO QNN#
Модели QNN работают на поддерживаемом оборудовании Qualcomm, что упрощает развёртывание моделей непосредственно на устройстве. На совместимом устройстве с установленным onnxruntime-qnn запускай экспортированную модель напрямую через API Ultralytics (yolo predict/yolo val, см. раздел «Использование» выше) — Ultralytics загружает бинарный файл контекста HTP через ONNX Runtime QNN Execution Provider.
Для собственных конвейеров ты также можешь напрямую загрузить контекстный бинарный файл ONNX с помощью ONNX Runtime. onnxruntime-qnn — это подключаемый Execution Provider, поэтому зарегистрируй его во время выполнения:
import onnxruntime as ort
import onnxruntime_qnn as qnn_ep
# На устройстве Snapdragon зарегистрируй подключаемый QNN EP и выбери устройство (или устройства)
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 Execution Provider, libQnnSystem.so, libQnnHtp.so, библиотеки-заглушки и библиотеки skeleton HTP v75 для IQ-8275, поддержка FastRPC в пользовательском пространстве, например libcdsprpc.so, прошивка DSP и соответствующие драйверы FastRPC/ядра. Библиотека skeleton должна находиться в пути к библиотекам DSP, указанном в BSP.
Эти компоненты на целевой платформе входят в BSP производителя платы с поддержкой QAIRT/QNN; они не включаются в экспортированную модель. Для выполнения на GPU требуются libQnnGpu.so и соответствующий стек пользовательских драйверов Adreno. Результат Ultralytics format=qnn — это контекстный бинарный файл, предназначенный для HTP, поэтому для развёртывания на GPU или CPU нужно использовать стандартный экспорт ONNX, а не предварительно скомпилированный файл *_qnn.onnx.
Рекомендуемый рабочий процесс#
- Обучи модель с помощью режима Train Ultralytics
- Экспортируй модель в формат QNN с помощью
model.export(format="qnn", name="iq-8275", imgsz=640)на поддерживаемой платформе (для классификации используйimgsz=224) - Разверни экспортированный файл
*_qnn.onnxна устройстве Qualcomm - Запусти инференс с помощью ONNX Runtime и QNN Execution Provider, используя бэкенд HTP
Применение в реальных условиях#
Модели YOLO на оборудовании Qualcomm Snapdragon отлично подходят для широкого спектра приложений периферийного ИИ:
- Смартфоны: ускорение с помощью NPU обеспечивает обнаружение объектов в реальном времени и понимание сцен в приложениях камеры и фотографий.
- Windows на Snapdragon: компьютерное зрение на устройстве в ПК Copilot+ без передачи данных в облако.
- Автомобили: мониторинг водителя, обнаружение пассажиров и функции ADAS на платформах Snapdragon Digital Chassis.
- XR и носимые устройства: энергоэффективное восприятие с низкой задержкой для AR/VR-гарнитур и умных очков.
- IoT и робототехника: эффективный инференс для обработки изображений на камерах, дронах и встроенных системах на базе Snapdragon.
Итоги#
В этом руководстве ты узнал, как локально экспортировать модели Ultralytics YOLO в формат Qualcomm QNN с помощью ONNX Runtime QNN Execution Provider. В процессе экспорта модель преобразуется в ONNX, а затем компилируется в бинарный файл контекста QNN на твоём хост-компьютере — учётная запись Qualcomm и облако не нужны. В результате создаётся файл *_qnn.onnx, оптимизированный для CPU Snapdragon, GPU Adreno и NPU Hexagon с помощью среды выполнения 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 с помощью ONNX Runtime QNN Execution Provider. Пакетonnxruntime-qnnустанавливается автоматически при первом экспорте.Примерfrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="qnn", imgsz=640) # используй imgsz=224 для классификацииНет. Экспорт QNN полностью выполняется на локальном компьютере с помощью пакета
onnxruntime-qnn, в который входят библиотеки QAIRT. Учётная запись Qualcomm, токен API и доступ к сети не требуются.Qualcomm AI Hub — облачный сервис Qualcomm для компиляции, профилирования и бенчмаркинга моделей на размещённых в облаке устройствах Snapdragon; для его использования нужна учётная запись Qualcomm. Экспорт Ultralytics QNN предназначен для той же среды выполнения QNN/QAIRT (CPU Snapdragon, GPU Adreno и NPU Hexagon), но компилирует бинарный файл контекста локально с помощью ONNX Runtime QNN Execution Provider — без учётной записи, загрузки файлов и очереди. Это самый быстрый способ получить готовую для Snapdragon сборку из модели
.ptпрямо в стандартном процессе экспорта YOLO.В версии
onnxruntime-qnn2.4.0 и новее доступны готовые колёса для 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 Execution Provider и запускает его на NPU Hexagon — смотри раздел «Развёртывание экспортированных моделей YOLO QNN».QNN (Qualcomm AI Engine Direct, часть QAIRT SDK) — это актуальный стек Qualcomm для инференса и рекомендуемая замена более старому SDK Snapdragon Neural Processing Engine (SNPE). Для новых развёртываний выбирай QNN.
Да, на устройстве Qualcomm Snapdragon с установленным
onnxruntime-qnn:YOLO("yolo26n_qnn.onnx")загружает бинарный файл контекста через QNN Execution Provider и запускаетpredict/val, как и любой другой формат. На хосте x86 без оборудования QNN модель не запустится, поскольку бинарный файл контекста предназначен для NPU Snapdragon.В результате экспорта создаётся автономный файл ONNX с бинарным файлом контекста (например,
yolo26n_qnn.onnx), в который встроены имена классов, размер изображения, задача и другие метаданные модели в ONNXmetadata_props.