YOLO Vision 2026:

Exportación a Qualcomm QNN para modelos Ultralytics YOLO#

Desplegar modelos de visión artificial en dispositivos Qualcomm Snapdragon requiere un formato de modelo adaptado al motor de ejecución Qualcomm AI Engine Direct (QNN). Exportar modelos de Ultralytics YOLO al formato QNN te permite ejecutar inferencia acelerada en el dispositivo a través de hardware de CPU Snapdragon, GPU Adreno y NPU Hexagon presente en miles de millones de teléfonos móviles, ordenadores portátiles, sistemas de automoción y dispositivos IoT. Esta guía explica cómo exportar YOLO a Qualcomm QNN y desplegarlo para realizar inferencias rápidas y de bajo consumo en hardware Snapdragon.

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

El plugin oficial de Ultralytics para Flutter ofrece compatibilidad opcional con QNN para inferencia de cámara en tiempo real y predicción de una sola imagen en las siete tareas de YOLO26. Habilita el entorno de ejecución QNN y añade su dependencia de ONNX Runtime tal y como se describe en el archivo README del plugin. Para el despliegue en iOS, consulta el SDK de Ultralytics YOLO para iOS y la integración de 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 de 224/640 es compartido por los recursos móviles oficiales de QNN, LiteRT y CoreML. Los recursos listos para ejecutar v73 y v81 para las siete tareas nano se publican en la versión v0.6.6 de yolo-flutter-app.

¿Qué es Qualcomm QNN?#

Qualcomm QNN on-device inference

Qualcomm AI Engine Direct, comúnmente conocido como QNN y distribuido como parte del SDK de 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 de backend dirigidas a la CPU Snapdragon, la GPU Adreno y el procesador de tensores Hexagon (HTP), la unidad de procesamiento de redes neuronales (NPU) dedicada dentro de los SoC Snapdragon modernos. QNN ofrece a los desarrolladores acceso de pila completa a estos aceleradores de IA de Snapdragon y es el sucesor moderno del antiguo SDK de Snapdragon Neural Processing Engine (SNPE). Impulsa la 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 en productos de automoción y XR.

¿Por qué exportar a Qualcomm QNN?#

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

  • Aceleración de la NPU Hexagon: Ejecutar YOLO en el procesador de tensores Hexagon ofrece un rendimiento drásticamente mayor y un menor consumo de energía que la inferencia en CPU, lo que resulta ideal para la inferencia en tiempo real y la visión artificial 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 viajes de ida y vuelta a la nube, la latencia se mantiene baja y los datos nunca abandonan el dispositivo.
  • Eficiencia cuantizada: La exportación a QNN cuantiza YOLO a pesos INT8 con activaciones de 16 bits, el equilibrio óptimo de precisión y rendimiento para la NPU Hexagon, lo que reduce el tamaño del modelo y maximiza los fotogramas por segundo en hardware que funciona con batería.
  • Un formato, muchos dispositivos: Una única exportación a Qualcomm QNN se dirige a la CPU Snapdragon, la GPU Adreno y la NPU Hexagon en las familias Snapdragon 8 Gen 2, 8 Gen 3, 8 Elite y más allá.
  • Pila de IA de Qualcomm lista para producción: QNN (Qualcomm AI Engine Direct / QAIRT) es el entorno de ejecución de IA en el dispositivo actual de Qualcomm, mantenido activamente y el reemplazo recomendado para SNPE.

Formato de exportación QNN#

Ultralytics compila modelos YOLO para QNN de forma local utilizando el Proveedor de Ejecución QNN de ONNX Runtime (el paquete instalable por pip onnxruntime-qnn, que incluye las bibliotecas QAIRT). El exportador convierte tu 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 el almacenamiento en caché de binarios de contexto habilitado; esto compila el grafo cuantizado en un binario de contexto QNN incrustado en <model>_qnn.onnx. No se requiere ninguna cuenta de Qualcomm, subida a la nube ni descarga de SDK por separado.

A diferencia del servicio en la nube Qualcomm AI Hub, que compila y analiza modelos en dispositivos Snapdragon alojados por Qualcomm y requiere una cuenta de Qualcomm, la exportación QNN de Ultralytics se ejecuta íntegramente en tu propia máquina con una sola llamada a 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 necesidad de registrarte, sin límites de subida 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 autónomo: incrusta el binario de contexto QNN y los metadatos de ONNX, tales como los nombres de las clases, el tamaño de la imagen y la tarea.

Características clave de los modelos QNN#

  • Cuantización: El modelo se cuantiza a activaciones de 16 bits y pesos INT8 con el flujo QDQ de ONNX Runtime QNN y un conjunto de datos de calibración, el equilibrio de precisión y rendimiento recomendado para la NPU Hexagon. Obtén más información sobre la cuantización de modelos.
  • Compilación totalmente local: El binario de contexto se genera completamente en tu máquina host; sin cuenta de Qualcomm, token de API ni carga en la nube.
  • Aceleración total de Snapdragon: Ejecuta la inferencia en Hexagon NPU (HTP), Adreno GPU o CPU a través de un único entorno de ejecución unificado.
  • Amplio alcance de dispositivos: Dirígete a la amplia gama de plataformas Snapdragon integradas en teléfonos, PCs (Windows on Snapdragon), automotriz, XR y productos integrados.
  • Binario de contexto precompilado: Enviar un binario de contexto minimiza la compilación del grafo en el dispositivo, lo que reduce la latencia de carga del modelo en el destino.
  • Salida autónoma: El archivo ONNX exportado incluye el binario de contexto QNN precompilado y los metadatos para una implementación directa.

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
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
NPU
QNN W8A16
(ms)
YOLO26nDetectar64052.2
1.8 / 48.1 / 2.4
15,8
2,3 / 8,9 / 4,6
10,7
1,8 / 6,7 / 2,2
YOLO26n-segSegmentar64073.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-clsClasificar2244.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 velocidad son latencias de ráfaga de una sola imagen —la media de 15 ejecuciones tras 3 ejecuciones de calentamiento en bus.jpg, medidas con la herramienta de pruebas de rendimiento en el dispositivo del plugin de Flutter 0.6.10 y los recursos estandarizados v0.6.6. El orden de los backends se alternó entre tareas en un barrido secuencial. Los registros nativos confirmaron que cada fila de la CPU utilizó LiteRT CPU/XNNPACK, cada fila de la GPU delegó el grafo completo en LiteRT OpenCL (LITERT_CL), y cada fila de la NPU utilizó el backend QNN Hexagon HTP.
  • El registro detallado de las pruebas de rendimiento se encuentra en la documentación de rendimiento de Flutter.
  • Compara otros dispositivos Android en la integración de LiteRT y los dispositivos Apple en la integración de CoreML.

Portátil Windows on Snapdragon#

Este barrido histórico utilizó binarios QNN v73 preestándar; las tareas 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) tiene una CPU Qualcomm Oryon de 12 núcleos, GPU Adreno y NPU Hexagon (HTP v73); el modelo exacto de Lenovo no fue registrado. Esta comparativa de Windows sobre Snapdragon enfrenta la línea base de CPU FP32 nativa de PyTorch, que es el punto de partida de la mayoría de los desarrolladores de escritorio, frente a la ruta de ONNX Runtime QNN Hexagon HTP. Cada celda muestra el tiempo total de pared model.predict() con los tiempos informados de preprocesamiento, inferencia y postprocesamiento debajo; el total puede incluir la sobrecarga del marco fuera de esas tres etapas. Las cifras de la CPU corresponden a PyTorch FP32 (torch==2.10.0+cpu) y las de la NPU a 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)
YOLO26nDetectar64091.4
4.3 / 75.2 / 0.1
27.2
4.9 / 19.4 / 0.9
YOLO26n-segSegmentar640138.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-clsClasificar22415.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 velocidad son latencias de ráfaga de una sola imagen —la media de 100 ejecuciones tras 10 ejecuciones de calentamiento en bus.jpg, medidas con time.perf_counter() en torno a la llamada completa a model.predict() en un dispositivo con temperatura estabilizada (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 de preprocesamiento domina la pequeña carga de trabajo.

Tareas compatibles#

La exportación a 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
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Exportar a QNN: convirtiendo tu modelo YOLO#

Exporta un modelo de Ultralytics YOLO al formato QNN para su despliegue en hardware de Qualcomm. El binario de contexto se finaliza para una arquitectura de procesador de tensores Hexagon (HTP) de destino o un SoC compatible, que seleccionas con el argumento name, el mismo argumento utilizado para seleccionar un chip en la exportación RKNN.

Destinos HTP compatibles#

Pasa la arquitectura de destino o el SoC a través de name (por ejemplo, name="73" o name="iq-8275"). La compatibilidad viene determinada por el destino HTP, por lo que las filas de Snapdragon que aparecen a continuación son plataformas representativas y no una lista exhaustiva de todos los SoC. Los dispositivos Dragonwing se enumeran 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 un destino HTP sin conexión. Aún así, se puede integrar una exportación ONNX estándar 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)
Soporte de plataforma

La exportación a QNN utiliza el paquete onnxruntime-qnn. A partir de la versión 2.4.0, se publican ruedas precompiladas 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 para 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 en la primera exportación. Para obtener instrucciones detalladas y mejores prácticas relacionadas con el proceso de instalación, consulta nuestra guía de instalación de Ultralytics. Si encuentras alguna dificultad al instalar los paquetes necesarios para YOLO, consulta nuestra guía de problemas comunes para encontrar soluciones y consejos.

Uso#

El formato QNN es compatible con los modos de Exportación, Predicción y Validación. La inferencia y la validación se ejecutan en hardware Qualcomm Snapdragon a través del 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, cárgalo en un dispositivo Snapdragon para realizar 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 para el 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 número entero para imágenes cuadradas o una tupla (height, width).
batchint1Especifica el tamaño de lote del modelo de exportación, que se integra en el binario de contexto QNN generado.
namestr'73'Arquitectura HTP Hexagon 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 cuantificación. La exportación a QNN HTP se cuantiza a pesos INT8 con activaciones de 16 bits ('w8a16') y se activa automáticamente si no se especifica. Sustituye a los flags 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 admitida.
datastrNoneYAML del conjunto de datos utilizado para la calibración INT8; la clasificación, en su lugar, requiere un directorio de conjuntos 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.
fractionfloat1.0Fracción del conjunto de datos de calibración que se utilizará para la cuantización INT8.
devicestrNoneEspecifica el dispositivo para el paso de exportación a ONNX: GPU (device=0) o CPU (device=cpu).
Precisión

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

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

Estructura de salida#

Después de una exportación exitosa, se crea un archivo ONNX autónomo:

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

El archivo yolo26n_qnn.onnx incrusta el binario de contexto QNN y es cargado por ONNX Runtime con el Proveedor de Ejecución QNN en el dispositivo Snapdragon. También contiene metadatos del modelo, tales como los nombres de las clases, el tamaño de la imagen y la tarea, en ONNX metadata_props.

Desplegar modelos YOLO QNN exportados#

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

Para canalizaciones personalizadas, también puedes cargar el binario de contexto ONNX directamente con ONNX Runtime. onnxruntime-qnn es un Proveedor de Ejecución en forma de complemento, por lo que debes registrarlo 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

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

Requisitos de BSP para Linux y Yocto#

La placa de destino debe proporcionar un entorno de ejecución de Qualcomm y un BSP mutuamente compatibles. Para la inferencia HTP, esto incluye el Proveedor de Ejecución QNN de ONNX Runtime, libQnnSystem.so, libQnnHtp.so, las bibliotecas de código auxiliar y esqueleto HTP v75 para IQ-8275, soporte de espacio de usuario FastRPC como libcdsprpc.so, el firmware DSP y los controladores FastRPC/núcleo correspondientes. La biblioteca de esqueletos debe ser descubrible a través de la ruta de la biblioteca DSP del BSP.

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

Flujo de trabajo recomendado#

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

Aplicaciones en el mundo real#

Los modelos YOLO que se ejecutan en hardware Qualcomm Snapdragon son muy adecuados para una amplia gama de aplicaciones de IA en el borde:

  • Smartphones: Detección de objetos en tiempo real y comprensión de escenas en aplicaciones de cámara y fotografía con aceleración por NPU.
  • Windows on Snapdragon: Visión artificial en el dispositivo en PCs Copilot+ sin necesidad de delegar a la nube.
  • Automotriz: Monitoreo del conductor, detección de ocupantes y funciones ADAS en plataformas Snapdragon Digital Chassis.
  • XR y dispositivos portátiles: Percepción de baja potencia y baja latencia para cascos AR/VR y gafas inteligentes.
  • IoT y robótica: Inferencia de visión eficiente en cámaras, drones y sistemas integrados basados en Snapdragon.

Resumen#

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

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

Para otros destinos de despliegue móvil y en el dispositivo, consulta las guías de exportación relacionadas de ONNX, CoreML, NCNN, LiteRT, ExecuTorch, RKNN, Sony IMX500 y TensorRT. Para comparar formatos antes de enviarlos a producción, utiliza el modo Benchmark. Para ver la lista completa de formatos y opciones, visita la documentación del modo Export y la página de la guía de integraciones.

FAQ#

  • Puedes exportar tu modelo utilizando export(format="qnn", imgsz=640) (imgsz=224 para la clasificación) o los argumentos de CLI equivalentes. La exportación primero crea un modelo ONNX y, a continuación, lo compila localmente en un binario de contexto QNN utilizando el Proveedor de Ejecución QNN de ONNX Runtime. El paquete onnxruntime-qnn se instala automáticamente en 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 a QNN se ejecuta íntegramente en tu máquina local utilizando el paquete onnxruntime-qnn, que incluye las bibliotecas QAIRT. No se requiere ninguna cuenta de Qualcomm, token de API ni acceso a la red.

  • Qualcomm AI Hub es el servicio en la nube de Qualcomm para compilar, perfilar y evaluar 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 de forma local con el Proveedor de Ejecución QNN de ONNX Runtime —sin cuenta, sin subidas y sin colas. Es la forma más rápida de pasar de un modelo .pt a una compilación lista para Snapdragon directamente dentro del flujo de trabajo de exportación estándar de YOLO.

  • onnxruntime-qnn 2.4.0 y versiones posteriores proporcionan ruedas precompiladas 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 la clasificación), copia el archivo yolo26n_qnn.onnx resultante en tu dispositivo Snapdragon y ejecuta yolo predict model=yolo26n_qnn.onnx source=image.jpg (o yolo val). Ultralytics carga el binario de contexto a través del Proveedor de Ejecución QNN de ONNX Runtime y lo ejecuta en la NPU Hexagon; consulta Desplegar modelos YOLO QNN exportados.

  • QNN (Qualcomm AI Engine Direct, parte del SDK QAIRT) es la pila de inferencia actual de Qualcomm y el reemplazo recomendado para el antiguo SDK Snapdragon Neural Processing Engine (SNPE). Los nuevos despliegues deben apuntar a QNN.

  • Sí, en un dispositivo Qualcomm Snapdragon con onnxruntime-qnn instalado: YOLO("yolo26n_qnn.onnx") carga el binario de contexto a través del Proveedor de Ejecución QNN y ejecuta predict/val como cualquier otro formato. En un host x86 sin hardware QNN, el modelo no se puede ejecutar, ya que el binario de contexto está destinado a la NPU Snapdragon.

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

Comentarios