YOLO Vision 2026:

Exportación a Qualcomm QNN para modelos YOLO de Ultralytics#

Implementar modelos de visión por ordenador en dispositivos Qualcomm Snapdragon requiere un formato de modelo optimizado para el entorno de ejecución Qualcomm AI Engine Direct (QNN). Exportar modelos Ultralytics YOLO al formato QNN permite ejecutar inferencias aceleradas en el propio dispositivo mediante hardware de CPU Snapdragon, GPU Adreno y NPU Hexagon presente en miles de millones de teléfonos móviles, portátiles, sistemas de automoción y dispositivos IoT. Esta guía explica cómo exportar YOLO a Qualcomm QNN e implementarlo para realizar inferencias rápidas y de bajo consumo en hardware Snapdragon.

Ejecuta YOLO hoy mismo en NPU Snapdragon con las aplicaciones móviles oficiales

El plugin oficial de Ultralytics para Flutter proporciona compatibilidad opcional con QNN para realizar inferencias de cámara en tiempo real y predicciones de imágenes individuales en las siete tareas de YOLO26. Activa el entorno de ejecución QNN y añade su dependencia de ONNX Runtime como se describe en el README del plugin. Para la implementación en iOS, consulta el SDK de Ultralytics YOLO para iOS y la integración con CoreML.

Tamaños de entrada móviles oficiales

Exporta modelos de clasificación en imgsz=224. Exporta modelos de detección, segmentación, semántica, profundidad, pose y OBB en imgsz=640. Este estándar 224/640 se comparte entre los recursos móviles oficiales de QNN, LiteRT y CoreML. Los recursos v73 y v81 listos para ejecutar para las siete tareas nano se publican en la versión de yolo-flutter-app v0.6.6.

¿Qué es Qualcomm QNN?#

Qualcomm QNN on-device inference

Qualcomm AI Engine Direct, conocido habitualmente como QNN y distribuido como parte del SDK Qualcomm AI Runtime (QAIRT), es la pila de inferencia de bajo nivel de Qualcomm para procesadores Snapdragon. Proporciona una API unificada con bibliotecas específicas para cada backend dirigidas a la CPU Snapdragon, la GPU Adreno y el Hexagon Tensor Processor (HTP), la unidad de procesamiento de redes neuronales (NPU) dedicada integrada en los SoC Snapdragon modernos. QNN proporciona a los desarrolladores acceso de pila completa a estos aceleradores de IA Snapdragon y es el sucesor moderno del antiguo SDK Snapdragon Neural Processing Engine (SNPE). Permite ejecutar IA en el dispositivo en las plataformas móviles Snapdragon 8 Gen 2, 8 Gen 3 y 8 Elite, los portátiles Snapdragon X y los productos de automoción y XR.

¿Por qué exportar a Qualcomm QNN?#

Snapdragon es la plataforma de computación móvil más utilizada del mundo. Exportar Ultralytics YOLO al formato Qualcomm QNN desbloquea el hardware de IA dedicado de estos dispositivos:

  • Aceleración de la NPU Hexagon: Ejecutar YOLO en el Hexagon Tensor Processor proporciona un rendimiento considerablemente mayor y un consumo menor que la inferencia en CPU, lo que resulta ideal para la inferencia en tiempo real y la visión por ordenador siempre activa en Snapdragon.
  • En el dispositivo y sin conexión: la inferencia QNN se ejecuta completamente en el dispositivo Snapdragon, por lo que no hay comunicaciones de ida y vuelta con la nube, la latencia se mantiene baja y los datos nunca salen del dispositivo.
  • Eficiencia mediante cuantización: la exportación a QNN cuantiza YOLO con pesos INT8 y activaciones de 16 bits, el equilibrio entre precisión y rendimiento preferido por la NPU Hexagon, reduciendo el tamaño del modelo y maximizando los fotogramas por segundo en hardware alimentado por batería.
  • Un formato, muchos dispositivos: una única exportación a Qualcomm QNN funciona con la CPU Snapdragon, la GPU Adreno y la NPU Hexagon en las familias Snapdragon 8 Gen 2, 8 Gen 3 y 8 Elite, entre otras.
  • Pila de IA de Qualcomm lista para producción: QNN (Qualcomm AI Engine Direct / QAIRT) es el entorno de ejecución de IA actual de Qualcomm para dispositivos, con mantenimiento activo, y el sustituto recomendado de SNPE.

Formato de exportación QNN#

Ultralytics compila modelos YOLO a QNN localmente mediante el proveedor de ejecución QNN de ONNX Runtime (el paquete instalable con pip onnxruntime-qnn, que incluye las bibliotecas QAIRT). El exportador convierte el modelo a ONNX, lo cuantiza con datos de calibración a activaciones de 16 bits y pesos INT8 (el equilibrio recomendado para la NPU Hexagon) y, a continuación, inicializa una sesión de ONNX Runtime con la caché de binarios de contexto activada; esto compila el grafo cuantizado en un binario de contexto QNN integrado en <model>_qnn.onnx. No se necesita una cuenta de Qualcomm, cargar datos en la nube ni descargar un SDK por separado.

A diferencia de Qualcomm AI Hub, basado en la nube, que compila y perfila modelos en dispositivos Snapdragon alojados por Qualcomm y requiere una cuenta de Qualcomm, la exportación QNN de Ultralytics se ejecuta completamente en tu propio equipo con una sola llamada export(format="qnn", imgsz=640) (imgsz=224 para clasificación). Obtienes el mismo destino de ejecución QNN/QAIRT —CPU Snapdragon, GPU Adreno y NPU Hexagon— sin registro, límites de carga ni tiempos de espera en cola, y se integra directamente en el flujo de trabajo de exportación estándar de YOLO.

El archivo *_qnn.onnx exportado es autocontenido: integra el binario de contexto QNN y metadatos de ONNX, como los nombres de las clases, el tamaño de imagen y la tarea.

Características principales de los modelos QNN#

  • Cuantización: el modelo se cuantiza con activaciones de 16 bits y pesos INT8 mediante el flujo QDQ de ONNX Runtime QNN y un conjunto de datos de calibración, el equilibrio entre precisión y rendimiento recomendado para la NPU Hexagon. Obtén más información sobre la cuantización de modelos.
  • Compilación completamente local: el binario de contexto se genera por completo en tu máquina anfitriona; no se necesita una cuenta de Qualcomm, un token de API ni cargar datos en la nube.
  • Aceleración completa de Snapdragon: ejecuta inferencias en la NPU Hexagon (HTP), la GPU Adreno o la CPU mediante un único entorno de ejecución unificado.
  • Amplio alcance de dispositivos: puedes dirigirte a la amplia gama de plataformas Snapdragon presentes en teléfonos, PC (Windows en Snapdragon), productos de automoción, XR e integrados.
  • Binario de contexto precompilado: distribuir un binario de contexto minimiza la compilación del grafo en el dispositivo y reduce la latencia de carga del modelo en el dispositivo de destino.
  • Salida autocontenida: el archivo ONNX exportado incluye el binario de contexto QNN precompilado y los metadatos necesarios para una implementación sencilla.

Rendimiento medido#

Teléfono Android#

Hardware: Xiaomi 17 con 12 GB de memoria LPDDR5X y Android 16 / API 36. Su Snapdragon 8 Elite Gen 5 de 3 nm (SM8850) cuenta con una CPU Qualcomm Oryon de 8 núcleos (2 núcleos Prime de hasta 4,6 GHz y 6 núcleos Performance de hasta 3,62 GHz), GPU Adreno y NPU Hexagon (HTP v81).

ModeloTareatamaño
(píxeles)
CPU
LiteRT w8a32
(ms)
GPU
LiteRT w8a32
(ms)
NPU
QNN W8A16
(ms)
YOLO26nDetect64052.2
1.8 / 48.1 / 2.4
15.8
2.3 / 8.9 / 4.6
10.7
1.8 / 6.7 / 2.2
YOLO26n-segSegment64073.4
1.8 / 65.6 / 6.0
33.2
1.8 / 23.8 / 7.6
17.4
1.8 / 9.9 / 5.7
YOLO26n-semSemántica64061.2
1.8 / 51.1 / 8.3
34.2
1.8 / 24.0 / 8.3
11.5
1.8 / 7.1 / 2.6
YOLO26n-depthProfundidad640124.4
1.9 / 115.1 / 7.4
23.0
1.8 / 13.5 / 7.7
35.2
1.8 / 26.1 / 7.3
YOLO26n-clsClasificación2244.4
0.4 / 4.0 / 0.0
3.1
0.8 / 2.1 / 0.2
1.2
0.6 / 0.6 / 0.0
YOLO26n-posePose64057.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
  • Los valores de Speed son latencias de ráfaga para una sola imagen: la media de 15 ejecuciones después de 3 ejecuciones de calentamiento en bus.jpg, medida con el banco de pruebas en el dispositivo 0.6.10 del plugin de Flutter y los recursos estandarizados v0.6.6. El orden de los backends se alternó entre tareas en un único recorrido secuencial. Los registros nativos confirmaron que cada fila de CPU utilizó LiteRT CPU/XNNPACK, cada fila de GPU delegó el grafo completo en LiteRT OpenCL (LITERT_CL) y cada fila de NPU utilizó el backend QNN Hexagon HTP.
  • El registro detallado de la prueba de rendimiento se encuentra en el documento de rendimiento de Flutter.
  • Compara otros dispositivos Android en la integración con LiteRT y dispositivos Apple en la integración con CoreML.

Portátil Windows en Snapdragon#

Esta comparativa histórica utilizó binarios QNN v73 anteriores al estándar; la semántica y OBB utilizaron entradas de 1024 px. Se ejecutó en un portátil Lenovo con 32 GB de memoria y Windows 11. Su Snapdragon X Elite (X1E78100) cuenta con una CPU Qualcomm Oryon de 12 núcleos, GPU Adreno y NPU Hexagon (HTP v73); el modelo exacto de Lenovo no quedó registrado. Esta comparación de Windows en Snapdragon contrapone la línea base nativa de CPU PyTorch FP32, de la que parten la mayoría de los desarrolladores de escritorio, con la ruta Hexagon HTP QNN de ONNX Runtime. Cada celda muestra el tiempo total de model.predict() con los tiempos de preprocesamiento / inferencia / posprocesamiento indicados debajo; el total puede incluir sobrecarga del framework ajena a esas tres etapas. Los valores de CPU son PyTorch FP32 (torch==2.10.0+cpu) y los de NPU son ONNX Runtime QNN (onnxruntime-qnn==2.2.0, pesos INT8 / activaciones de 16 bits).

ModeloTareatamaño
(píxeles)
CPU
PT FP32
(ms)
NPU Hexagon
QNN W8A16
(ms)
YOLO26nDetect64091.4
4.3 / 75.2 / 0.1
27.2
4.9 / 19.4 / 0.9
YOLO26n-segSegment640138.8
4.5 / 127.1 / 2.8
34.3
5.0 / 24.0 / 5.1
YOLO26n-semSemántica1024295.8
9.1 / 189.2 / 94.8
133.0
8.8 / 37.4 / 83.9
YOLO26n-clsClasificación22415.4
3.0 / 9.8 / 0.0
11.7
2.7 / 5.5 / 0.0
YOLO26n-posePose640109.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
  • Los valores de Speed son latencias de ráfaga para una sola imagen: la media de 100 ejecuciones después de 10 ejecuciones de calentamiento en bus.jpg, medida con time.perf_counter() alrededor de la llamada completa model.predict() en un dispositivo estabilizado térmicamente (ultralytics==8.4.67, Python 3.12.10).
  • La NPU Hexagon funciona aproximadamente 2-4 veces más rápido que la línea base de CPU PyTorch en las tareas de 640-1024 px (detección, ~3,4 veces), reduciéndose a ~1,3 veces en el clasificador de 224 px, donde la sobrecarga fija del preprocesamiento domina la pequeña carga de trabajo.

Tareas compatibles#

La exportación Qualcomm QNN es compatible con las siete tareas de Ultralytics. La segmentación semántica y la estimación de profundidad solo están disponibles con YOLO26, la única familia que incluye esas cabezas.

TareaYOLOv8YOLO11YOLO26
Detección
Segmentación
Semántica
Profundidad
Clasificación
Pose
OBB

Exportar a QNN: convertir tu modelo YOLO#

Exporta un modelo Ultralytics YOLO al formato QNN para implementarlo en hardware Qualcomm. El binario de contexto se finaliza para una arquitectura de Hexagon Tensor Processor (HTP) o un SoC compatibles, que seleccionas con el argumento name, el mismo argumento utilizado para seleccionar un chip en la exportación a RKNN.

Destinos HTP compatibles#

Indica la arquitectura de destino o el SoC mediante name (por ejemplo, name="73" o name="iq-8275"). La compatibilidad la determina el destino HTP, por lo que las filas de Snapdragon siguientes representan plataformas, no una lista exhaustiva de todos los SoC. Los dispositivos Dragonwing se muestran explícitamente.

EstadonameHexagon HTPDispositivo o plataforma de ejemplo
✅ Compatible68v68Snapdragon 888
✅ Compatible69v69Snapdragon 8 Gen 1 / 8+ Gen 1
✅ Compatible73v73Snapdragon 8 Gen 2, X Elite (predeterminado)
✅ Compatible75v75Snapdragon 8 Gen 3
✅ Compatible79v79Snapdragon 8 Elite
✅ Compatible81v81Snapdragon 8 Elite Gen 5
✅ Compatibleiq-8275 o qcs8275v75Dragonwing IQ-8275 / QCS8275 (modelo de SoC QNN 82)
❌ No compatiblev66Dragonwing IQ-615 / QCS615

Dragonwing IQ-615 no puede utilizar la exportación de binarios de contexto QNN de Ultralytics porque ONNX Runtime no expone su DSP v66 como destino HTP sin conexión. Una exportación ONNX estándar aún puede integrarse por separado con un proveedor de ejecución de CPU o GPU compatible con el BSP de la placa.

Exportar para Dragonwing IQ-8275
from ultralytics import YOLO

model = YOLO("best.pt")
model.export(format="qnn", name="iq-8275", imgsz=640)
Compatibilidad con plataformas

La exportación QNN utiliza el paquete onnxruntime-qnn. La versión 2.4.0 y las posteriores publican wheels prediseñadas para Windows (x64 y ARM64) y Linux (x86-64 y ARM64) en Python 3.11 o posterior; macOS no es un host QNN compatible. La generación del binario de contexto QNN se ejecuta en un host x64 y no requiere un dispositivo Snapdragon durante el paso de exportación.

Instalación#

Para instalar los paquetes necesarios, ejecuta:

Instalación
# Install the required package for YOLO
pip install ultralytics

El paquete onnxruntime-qnn (que proporciona el proveedor de ejecución QNN de ONNX Runtime e incluye las bibliotecas QAIRT) se instala automáticamente durante la primera exportación. Para obtener instrucciones detalladas y prácticas recomendadas relacionadas con el proceso de instalación, consulta nuestra guía de instalación de Ultralytics. Si encuentras dificultades al instalar los paquetes necesarios para YOLO, consulta nuestra guía de problemas habituales para encontrar soluciones y consejos.

Uso#

El formato QNN admite los modos Exportar, Predecir y Validar. La inferencia y la validación se ejecutan en hardware Qualcomm Snapdragon mediante el proveedor de ejecución QNN de ONNX Runtime (el mismo paquete onnxruntime-qnn utilizado para la exportación). Exporta tu modelo y, a continuación, carga el modelo exportado en un dispositivo Snapdragon para ejecutar inferencias o validar su precisión.

Exportar
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
Predecir
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")
Validar
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")

Argumentos de exportación#

ArgumentoTipoPredeterminadoDescripción
formatstr'qnn'Formato de destino del modelo exportado, que define la compatibilidad con el entorno de ejecución Qualcomm QNN.
imgszint o tuple640Tamaño de imagen deseado para la entrada del modelo. Puede ser un entero para imágenes cuadradas o una tupla (height, width).
batchint1Especifica el tamaño del lote del modelo de exportación, que queda incorporado en el binario de contexto QNN generado.
namestr'73'Arquitectura HTP de destino (68, 69, 73, 75, 79 o 81) o SoC compatible (iq-8275 o qcs8275). El binario de contexto se finaliza para este destino.
quantizeint o str'w8a16'/autoPrecisión de cuantización. La exportación QNN HTP se cuantiza con pesos INT8 y activaciones de 16 bits ('w8a16') y se activa automáticamente si no se especifica. Sustituye a los indicadores obsoletos half/int8.
simplifyboolTrueSimplifica el grafo ONNX intermedio con onnxslim.
opsetintNoneEspecifica la versión del opset de ONNX para el grafo ONNX intermedio. Si no se establece, utiliza la última versión compatible.
datastrNoneArchivo YAML del conjunto de datos utilizado para la calibración INT8; la clasificación utiliza en su lugar un directorio de conjunto de datos o el nombre de un conjunto de datos integrado. Si se omite, Ultralytics selecciona el conjunto de datos de calibración predeterminado para la tarea del modelo.
fractionfloat, int o list1.0Subconjunto de calibración como proporción, número de imágenes o proporciones/números de [train, val, test]. Las listas de dos elementos dejan test completo, mientras que 0 lo omite.
devicestrNoneEspecifica el dispositivo para el paso de exportación a ONNX: GPU (device=0) o CPU (device=cpu).
Precisión

La exportación QNN cuantiza el modelo con activaciones de 16 bits y pesos INT8, el equilibrio entre precisión y rendimiento recomendado para la NPU Hexagon, mediante el flujo de cuantización QDQ de ONNX Runtime con imágenes de calibración de data. quantize='w8a16' se aplica automáticamente.

Para obtener más información sobre el proceso de exportación, visita la página de la documentación de Ultralytics sobre exportación.

Estructura de salida#

Tras una exportación correcta, se crea un archivo ONNX autocontenido:

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

El archivo yolo26n_qnn.onnx integra el binario de contexto de QNN y ONNX Runtime lo carga con el proveedor de ejecución QNN en el dispositivo Snapdragon. También incluye metadatos del modelo, como los nombres de las clases, el tamaño de la imagen y la tarea, en metadata_props de ONNX.

Implementación de modelos YOLO QNN exportados#

Los modelos QNN se ejecutan en hardware Qualcomm compatible, lo que facilita la implementación de modelos en el dispositivo. En un dispositivo compatible con onnxruntime-qnn instalado, ejecuta directamente el modelo exportado con la API de Ultralytics (yolo predict/yolo val; consulta Uso más arriba); Ultralytics carga el binario de contexto HTP mediante el proveedor de ejecución QNN de ONNX Runtime.

Para canalizaciones personalizadas, también puedes cargar directamente el binario de contexto ONNX con ONNX Runtime. onnxruntime-qnn es un proveedor de ejecución complementario, así que regístralo en tiempo de ejecución:

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

Como el binario de contexto QNN está precompilado, la sesión se carga rápidamente sin recompilar el grafo en el dispositivo.

Requisitos de Linux y Yocto BSP#

La placa de destino debe proporcionar un entorno de ejecución y un BSP de Qualcomm mutuamente compatibles. Para la inferencia HTP, esto incluye el proveedor de ejecución QNN de ONNX Runtime, libQnnSystem.so, libQnnHtp.so, las bibliotecas stub y skeleton de HTP v75 para IQ-8275, compatibilidad de espacio de usuario con FastRPC como libcdsprpc.so, el firmware del DSP y los controladores de FastRPC/kernel correspondientes. La biblioteca skeleton debe poder localizarse a través de la ruta de bibliotecas DSP del BSP.

Estos componentes del lado del destino proceden del BSP del proveedor de la placa habilitado para QAIRT/QNN; no están integrados en el modelo exportado. La ejecución en GPU requiere, en su lugar, libQnnGpu.so y la pila de controladores de espacio de usuario de Adreno correspondiente. La salida format=qnn de Ultralytics es un binario de contexto específico para HTP, por lo que la implementación en GPU o CPU debe partir de una exportación ONNX estándar en lugar del archivo precompilado *_qnn.onnx.

Flujo de trabajo recomendado#

  1. Entrena tu modelo mediante el modo Entrenar de Ultralytics
  2. Exporta al formato QNN usando model.export(format="qnn", name="iq-8275", imgsz=640) en una plataforma compatible (usa imgsz=224 para clasificación)
  3. Implementa el archivo *_qnn.onnx exportado en tu dispositivo Qualcomm
  4. Ejecuta la inferencia con ONNX Runtime y el proveedor de ejecución QNN usando el backend HTP

Aplicaciones en el mundo real#

Los modelos YOLO que se ejecutan en hardware Qualcomm Snapdragon son ideales para una amplia variedad de aplicaciones de IA en el perímetro:

  • Smartphones: Detección de objetos y comprensión de escenas en tiempo real en aplicaciones de cámara y fotografía con aceleración mediante NPU.
  • Windows en Snapdragon: Visión artificial en el dispositivo en PC Copilot+ sin descargar el procesamiento en la nube.
  • Automoción: Supervisión del conductor, detección de ocupantes y funciones ADAS en plataformas Snapdragon Digital Chassis.
  • XR y dispositivos ponibles: Percepción de bajo consumo y baja latencia para cascos de AR/VR y gafas inteligentes.
  • IoT y robótica: Inferencia de visión eficiente en cámaras, drones y sistemas integrados con tecnología Snapdragon.

Resumen#

En esta guía, has aprendido a exportar modelos Ultralytics YOLO al formato Qualcomm QNN localmente con el proveedor de ejecución QNN de ONNX Runtime. La canalización de exportación convierte el modelo a ONNX y después lo compila en un binario de contexto QNN en tu máquina anfitriona, sin necesidad de una cuenta de Qualcomm ni de la nube, y genera un archivo *_qnn.onnx optimizado para hardware de CPU Snapdragon, GPU Adreno y NPU Hexagon mediante el entorno de ejecución QNN/QAIRT.

La combinación de Ultralytics YOLO y la pila de IA en el dispositivo de Qualcomm ofrece una solución eficaz para ejecutar cargas de trabajo avanzadas de visión artificial en todo el amplio ecosistema Snapdragon.

Para otros destinos de implementación en dispositivos y móviles, consulta las guías de exportación relacionadas de ONNX, CoreML, NCNN, LiteRT, ExecuTorch, RKNN, Sony IMX500 y TensorRT. Para comparar formatos antes de distribuirlos, usa el modo Benchmark. Para consultar la lista completa de formatos y opciones, visita la documentación del modo Export y la página de la guía de integraciones.

Preguntas frecuentes#

  • Puedes exportar tu modelo usando export(format="qnn", imgsz=640) (imgsz=224 para clasificación) o los argumentos equivalentes de la CLI. La exportación crea primero un modelo ONNX y después lo compila localmente en un binario de contexto QNN mediante el proveedor de ejecución QNN de ONNX Runtime. El paquete onnxruntime-qnn se instala automáticamente durante la primera exportación.

    Ejemplo
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="qnn", imgsz=640)  # use imgsz=224 for classification
  • No. La exportación QNN se ejecuta completamente en tu máquina local usando el paquete onnxruntime-qnn, que incluye las bibliotecas QAIRT. No se necesita una cuenta de Qualcomm, un token de API ni acceso a la red.

  • Qualcomm AI Hub es el servicio en la nube de Qualcomm para compilar, crear perfiles y comparar modelos en dispositivos Snapdragon alojados, y requiere una cuenta de Qualcomm. La exportación QNN de Ultralytics se dirige al mismo entorno de ejecución QNN/QAIRT (CPU Snapdragon, GPU Adreno y NPU Hexagon), pero compila el binario de contexto localmente con el proveedor de ejecución QNN de ONNX Runtime, sin cuenta, cargas ni colas. Es la forma más rápida de pasar de un modelo .pt a una compilación preparada para Snapdragon directamente desde el flujo de trabajo de exportación estándar de YOLO.

  • onnxruntime-qnn 2.4.0 y posteriores proporcionan wheels prediseñadas para Windows (x64 y ARM64) y Linux (x86-64 y ARM64) en Python 3.11 o posterior; macOS no es un host QNN compatible. La generación del binario de contexto se ejecuta en un host x64 y no requiere un dispositivo Snapdragon físico.

  • Exporta con model.export(format="qnn", imgsz=640) (imgsz=224 para clasificación), copia el archivo yolo26n_qnn.onnx resultante a tu dispositivo Snapdragon y ejecuta yolo predict model=yolo26n_qnn.onnx source=image.jpg (o yolo val). Ultralytics carga el binario de contexto mediante el proveedor de ejecución QNN de ONNX Runtime y lo ejecuta en la NPU Hexagon; consulta Implementación de modelos YOLO QNN exportados.

  • QNN (Qualcomm AI Engine Direct, parte del SDK de QAIRT) es la pila de inferencia actual de Qualcomm y el sustituto recomendado del SDK antiguo del motor de procesamiento neuronal de Snapdragon (SNPE). Las implementaciones nuevas deben dirigirse a QNN.

  • Sí, en un dispositivo Qualcomm Snapdragon con onnxruntime-qnn instalado; YOLO("yolo26n_qnn.onnx") carga el binario de contexto mediante el proveedor de ejecución QNN y ejecuta predict/val como cualquier otro formato. En un host x86 sin hardware QNN, el modelo no puede ejecutarse, ya que el binario de contexto está destinado a la NPU Snapdragon.

  • La exportación crea un archivo ONNX autocontenido con binario de contexto (por ejemplo, yolo26n_qnn.onnx) que incluye los nombres de las clases, el tamaño de la imagen, la tarea y otros metadatos del modelo integrados en metadata_props de ONNX.

Comentarios