Exportação Qualcomm QNN para modelos Ultralytics YOLO#
Implementar modelos de visão computacional em dispositivos Qualcomm Snapdragon requer um formato de modelo otimizado para o runtime Qualcomm AI Engine Direct (QNN). Exportar modelos Ultralytics YOLO para o formato QNN permite executar inferência acelerada no dispositivo em hardware CPU Snapdragon, GPU Adreno e NPU Hexagon, presente em milhares de milhões de telemóveis, portáteis, sistemas automóveis e dispositivos IoT. Este guia explica como exportar YOLO para Qualcomm QNN e implementá-lo para obter inferência rápida e de baixo consumo em hardware Snapdragon.
O plugin Flutter oficial da Ultralytics fornece suporte opcional para QNN para inferência de câmara em tempo real e predição de imagens individuais em todas as sete tarefas do YOLO26. Ativa o runtime QNN e adiciona a dependência ONNX Runtime, conforme descrito no README do plugin. Para implementação no iOS, consulta o SDK iOS Ultralytics YOLO e a integração CoreML.
Exporta modelos de classificação em imgsz=224. Exporta modelos de deteção, segmentação, semântica, profundidade, pose e OBB em
imgsz=640. Este padrão 224/640 é partilhado pelos recursos móveis oficiais QNN, LiteRT e CoreML.
Os recursos v73 e v81 prontos a executar para as sete tarefas nano são publicados na
versão yolo-flutter-app v0.6.6.
O que é o Qualcomm QNN?#
Qualcomm AI Engine Direct — normalmente referido como QNN e distribuído como parte do SDK Qualcomm AI Runtime (QAIRT) — é a stack de inferência de baixo nível da Qualcomm para processadores Snapdragon. Fornece uma API unificada com bibliotecas específicas para cada backend, direcionadas à CPU Snapdragon, à GPU Adreno e ao Hexagon Tensor Processor (HTP), a unidade de processamento de redes neuronais (NPU) dedicada presente nos SoCs Snapdragon modernos. O QNN oferece aos programadores acesso full-stack a estes aceleradores de IA Snapdragon e é o sucessor moderno do antigo SDK Snapdragon Neural Processing Engine (SNPE). Alimenta aplicações de IA no dispositivo nas plataformas móveis Snapdragon 8 Gen 2, 8 Gen 3 e 8 Elite, nos portáteis Snapdragon X e em produtos automóveis e XR.
Porquê exportar para Qualcomm QNN?#
Snapdragon é a plataforma de computação móvel mais utilizada no mundo. Exportar Ultralytics YOLO para o formato Qualcomm QNN desbloqueia o hardware de IA dedicado destes dispositivos:
- Aceleração da NPU Hexagon: Executar YOLO no Hexagon Tensor Processor proporciona um débito muito superior e menor consumo de energia do que a inferência na CPU — ideal para inferência em tempo real e visão computacional sempre ativa em Snapdragon.
- No dispositivo e offline: A inferência QNN é executada inteiramente no dispositivo Snapdragon, pelo que não há comunicações de ida e volta com a cloud, a latência mantém-se baixa e os dados nunca saem do dispositivo.
- Eficiência da quantização: A exportação QNN quantiza YOLO para pesos INT8 com ativações de 16 bits, o equilíbrio preferido entre precisão e desempenho da NPU Hexagon, reduzindo o tamanho do modelo e maximizando os frames por segundo em hardware alimentado por bateria.
- Um formato, muitos dispositivos: Uma única exportação Qualcomm QNN é direcionada à CPU Snapdragon, à GPU Adreno e à NPU Hexagon nas famílias Snapdragon 8 Gen 2, 8 Gen 3 e 8 Elite, entre outras.
- Stack de IA Qualcomm pronta para produção: QNN (Qualcomm AI Engine Direct / QAIRT) é o runtime de IA atual da Qualcomm para dispositivos, ativamente mantido, e a substituição recomendada para SNPE.
Formato de exportação QNN#
A Ultralytics compila modelos YOLO para QNN localmente utilizando o ONNX Runtime QNN Execution Provider (o pacote instalável via pip onnxruntime-qnn, que inclui as bibliotecas QAIRT). O exportador converte o modelo para ONNX, quantiza-o com dados de calibração para ativações de 16 bits e pesos INT8 (o equilíbrio recomendado para a NPU Hexagon) e, em seguida, inicializa uma sessão ONNX Runtime com o armazenamento em cache do binário de contexto ativado — isto compila o grafo quantizado num binário de contexto QNN incorporado em <model>_qnn.onnx. Não é necessária uma conta Qualcomm, um carregamento para a cloud ou uma transferência separada do SDK.
Ao contrário do Qualcomm AI Hub baseado na cloud, que compila e analisa modelos em dispositivos Snapdragon alojados pela Qualcomm e requer uma conta Qualcomm, a exportação QNN da Ultralytics é executada inteiramente na tua própria máquina com uma única chamada export(format="qnn", imgsz=640) (imgsz=224 para classificação). Obténs o mesmo destino de runtime QNN/QAIRT — CPU Snapdragon, GPU Adreno e NPU Hexagon — sem registo, limites de carregamento ou tempos de espera, e o resultado integra-se diretamente no fluxo de trabalho de exportação YOLO padrão.
O ficheiro *_qnn.onnx exportado é autónomo: incorpora o binário de contexto QNN e metadados ONNX, como nomes das classes, tamanho da imagem e tarefa.
Principais funcionalidades dos modelos QNN#
- Quantização: O modelo é quantizado para ativações de 16 bits e pesos INT8 através do fluxo QNN QDQ do ONNX Runtime e de um conjunto de dados de calibração, o equilíbrio recomendado entre precisão e desempenho da NPU Hexagon. Sabe mais sobre quantização de modelos.
- Compilação totalmente local: O binário de contexto é gerado inteiramente na tua máquina anfitriã — sem conta Qualcomm, token de API ou carregamento para a cloud.
- Aceleração Snapdragon completa: Executa inferência na NPU Hexagon (HTP), na GPU Adreno ou na CPU através de um único runtime unificado.
- Amplo alcance de dispositivos: Direciona a implementação para a vasta gama de plataformas Snapdragon presentes em telemóveis, PCs (Windows on Snapdragon), produtos automóveis, XR e dispositivos incorporados.
- Binário de contexto pré-compilado: Distribuir um binário de contexto minimiza a compilação do grafo no dispositivo, reduzindo a latência de carregamento do modelo no destino.
- Saída autónoma: O ficheiro ONNX exportado inclui o binário de contexto QNN pré-compilado e metadados para uma implementação simples.
Desempenho medido#
Telemóvel Android#
Hardware: Xiaomi 17 com 12 GB de memória LPDDR5X e Android 16 / API 36. O seu Snapdragon 8 Elite Gen 5 de 3 nm (SM8850) possui uma CPU Qualcomm Oryon de 8 núcleos (2 núcleos Prime até 4,6 GHz e 6 núcleos Performance até 3,62 GHz), GPU Adreno e NPU Hexagon (HTP v81).
| Modelo | Tarefa | tamanho (píxeis) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) | NPU QNN W8A16 (ms) |
|---|---|---|---|---|---|
| YOLO26n | Deteção | 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 | Segmentação | 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 | Semântica | 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 | Profundidade | 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 | Classificação | 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 | 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 |
- Os valores de velocidade são latências de rajadas de imagens individuais — a média de 15 execuções após 3 execuções de aquecimento em
bus.jpg, medidas com o sistema de referência de benchmark no dispositivo0.6.10do plugin Flutter e os recursosv0.6.6padronizados. A ordem dos backends alternou entre tarefas numa única sequência. Os registos nativos confirmaram que todas as linhas da CPU utilizaram LiteRT CPU/XNNPACK, todas as linhas da GPU delegaram o grafo completo para LiteRT OpenCL (LITERT_CL) e todas as linhas da NPU utilizaram o backend QNN Hexagon HTP. - O registo detalhado do benchmark encontra-se no documento de desempenho do Flutter.
- Compara outros dispositivos Android na integração LiteRT e dispositivos Apple na integração CoreML.
Portátil Windows on Snapdragon#
Esta análise histórica utilizou binários QNN v73 anteriores ao padrão; a semântica e o OBB utilizaram entradas de 1024 px. Foi executada num portátil Lenovo
com 32 GB de memória e Windows 11. O seu
Snapdragon X Elite
(X1E78100) possui uma CPU Qualcomm Oryon de 12 núcleos, GPU Adreno e NPU Hexagon (HTP v73); o modelo exato da Lenovo não foi
registado. Esta comparação Windows-on-Snapdragon executa a linha de base nativa da CPU PyTorch FP32, que é o ponto de partida da maioria dos
programadores desktop, contra o caminho Hexagon HTP QNN do ONNX Runtime. Cada célula mostra o tempo total
model.predict() com os tempos de pré-processamento / inferência / pós-processamento indicados abaixo; o
total pode incluir sobrecarga da framework fora destas três etapas. Os valores da CPU são PyTorch FP32 (torch==2.10.0+cpu)
e os valores da NPU são ONNX Runtime QNN (onnxruntime-qnn==2.2.0, pesos INT8 / ativações de 16 bits).
| Modelo | Tarefa | tamanho (píxeis) | CPU PT FP32 (ms) | NPU Hexagon QNN W8A16 (ms) |
|---|---|---|---|---|
| YOLO26n | Deteção | 640 | 91.4 4.3 / 75.2 / 0.1 | 27.2 4.9 / 19.4 / 0.9 |
| YOLO26n-seg | Segmentação | 640 | 138.8 4.5 / 127.1 / 2.8 | 34.3 5.0 / 24.0 / 5.1 |
| YOLO26n-sem | Semântica | 1024 | 295.8 9.1 / 189.2 / 94.8 | 133.0 8.8 / 37.4 / 83.9 |
| YOLO26n-cls | Classificação | 224 | 15.4 3.0 / 9.8 / 0.0 | 11.7 2.7 / 5.5 / 0.0 |
| YOLO26n-pose | 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 |
- Os valores de velocidade são latências de rajadas de imagens individuais — a média de 100 execuções após 10 execuções de aquecimento em
bus.jpg, medidas comtime.perf_counter()em torno da chamada completamodel.predict()num dispositivo termicamente estabilizado (ultralytics==8.4.67, Python 3.12.10). - A NPU Hexagon executa tarefas aproximadamente 2–4x mais rapidamente do que a linha de base da CPU PyTorch nos trabalhos de 640–1024 px (deteção ~3,4x), diminuindo para ~1,3x no classificador de 224 px, onde a sobrecarga fixa do pré-processamento domina a carga de trabalho reduzida.
Tarefas suportadas#
A exportação Qualcomm QNN suporta todas as sete tarefas da Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas com YOLO26, a única família que inclui essas cabeças.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detetar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportar para QNN: converter o teu modelo YOLO#
Exporta um modelo Ultralytics YOLO para o formato QNN para implementação em hardware Qualcomm. O binário de contexto é finalizado para uma arquitetura Hexagon Tensor Processor (HTP) ou um SoC compatível de destino, que selecionas com o argumento name — o mesmo argumento utilizado para direcionar um chip na exportação RKNN.
Destinos HTP compatíveis#
Indica a arquitetura de destino ou o SoC através de name (por exemplo, name="73" ou name="iq-8275"). O suporte é determinado pelo
destino HTP, pelo que as linhas Snapdragon abaixo representam plataformas, não uma lista exaustiva de todos os SoCs.
Os dispositivos Dragonwing são apresentados explicitamente.
| Estado | name | Hexagon HTP | Dispositivo ou plataforma de exemplo |
|---|---|---|---|
| ✅ Compatível | 68 | v68 | Snapdragon 888 |
| ✅ Compatível | 69 | v69 | Snapdragon 8 Gen 1 / 8+ Gen 1 |
| ✅ Compatível | 73 | v73 | Snapdragon 8 Gen 2, X Elite (predefinido) |
| ✅ Compatível | 75 | v75 | Snapdragon 8 Gen 3 |
| ✅ Compatível | 79 | v79 | Snapdragon 8 Elite |
| ✅ Compatível | 81 | v81 | Snapdragon 8 Elite Gen 5 |
| ✅ Compatível | iq-8275 ou qcs8275 | v75 | Dragonwing IQ-8275 / QCS8275 (modelo SoC Qualcomm QNN 82) |
| ❌ Não compatível | — | v66 | Dragonwing IQ-615 / QCS615 |
O Dragonwing IQ-615 não pode utilizar a exportação de binário de contexto QNN da Ultralytics porque o ONNX Runtime não expõe o seu DSP v66 como destino HTP offline. Ainda é possível integrar separadamente uma exportação ONNX padrão com um fornecedor de execução de CPU ou GPU compatível com o BSP da placa.
from ultralytics import YOLO
model = YOLO("best.pt")
model.export(format="qnn", name="iq-8275", imgsz=640)A exportação QNN utiliza o pacote onnxruntime-qnn. A versão 2.4.0 e posteriores disponibilizam wheels pré-compilados para Windows (x64 e ARM64) e Linux (x86-64 e ARM64) em Python 3.11 ou posterior; o macOS não é um anfitrião QNN compatível. A geração do binário de contexto QNN é executada num anfitrião x64 e não requer um dispositivo Snapdragon durante a exportação.
Instalação#
Para instalares os pacotes necessários, executa:
# Install the required package for YOLO
pip install ultralyticsO pacote onnxruntime-qnn (que fornece o ONNX Runtime QNN Execution Provider e inclui as bibliotecas QAIRT) é instalado automaticamente na primeira exportação. Para obter instruções detalhadas e boas práticas relacionadas com o processo de instalação, consulta o nosso guia de instalação da Ultralytics. Se encontrares dificuldades ao instalar os pacotes necessários para YOLO, consulta o nosso guia de problemas comuns para obteres soluções e sugestões.
Utilização#
O formato QNN suporta os modos Exportar, Prever e Validar. A inferência e a validação são executadas em hardware Qualcomm Snapdragon através do QNN Execution Provider do ONNX Runtime (o mesmo pacote onnxruntime-qnn utilizado para a exportação). Exporta o teu modelo e, em seguida, carrega o modelo exportado num dispositivo Snapdragon para executar inferência ou validar a sua precisão.
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")Argumentos de Exportação#
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
format | str | 'qnn' | Formato de destino para o modelo exportado, definindo a compatibilidade com o runtime Qualcomm QNN. |
imgsz | int ou tuple | 640 | Tamanho de imagem pretendido para a entrada do modelo. Pode ser um número inteiro para imagens quadradas ou um tuplo (height, width). |
batch | int | 1 | Especifica o tamanho do batch do modelo de exportação, que é incorporado no binário de contexto QNN gerado. |
name | str | '73' | Arquitetura Hexagon HTP de destino (68, 69, 73, 75, 79 ou 81) ou SoC compatível (iq-8275 ou qcs8275). O binário de contexto é finalizado para este destino. |
quantize | int ou str | 'w8a16'/auto | Precisão da quantização. A exportação QNN HTP é quantizada para pesos INT8 com ativações de 16 bits ('w8a16') e é ativada automaticamente se não for especificada. Substitui as flags obsoletas half/int8. |
simplify | bool | True | Simplifica o grafo ONNX intermédio com onnxslim. |
opset | int | None | Especifica a versão do opset ONNX para o grafo ONNX intermédio. Se não for definida, utiliza a versão mais recente suportada. |
data | str | None | YAML do conjunto de dados utilizado para a calibração INT8; a classificação recebe, em vez disso, um diretório de conjunto de dados ou um nome de conjunto de dados integrado. Se omitido, a Ultralytics seleciona o conjunto de dados de calibração predefinido para a tarefa do modelo. |
fraction | float, int ou list | 1.0 | Subconjunto de calibração como proporção, contagem de imagens ou proporções/contagens de [train, val, test]. Listas de dois itens deixam test completo, enquanto 0 o ignora. |
device | str | None | Especifica o dispositivo para a etapa de exportação ONNX: GPU (device=0) ou CPU (device=cpu). |
A exportação QNN quantiza o modelo para ativações de 16 bits e pesos INT8 — o equilíbrio recomendado entre precisão e desempenho para a NPU Hexagon — utilizando o fluxo de quantização QDQ do ONNX Runtime com imagens de calibração de data. quantize='w8a16' é aplicado automaticamente.
Para obter mais detalhes sobre o processo de exportação, visita a página da documentação da Ultralytics sobre exportação.
Estrutura de Saída#
Após uma exportação bem-sucedida, é criado um ficheiro ONNX autónomo:
yolo26n_qnn.onnx # ONNX wrapping the precompiled QNN context binary and metadata
O ficheiro yolo26n_qnn.onnx incorpora o binário de contexto QNN e é carregado pelo ONNX Runtime com o QNN Execution Provider no dispositivo Snapdragon. Também contém metadados do modelo, como nomes das classes, tamanho da imagem e tarefa, no ONNX metadata_props.
Implementação de modelos YOLO QNN exportados#
Os modelos QNN são executados em hardware Qualcomm compatível, tornando simples a implementação de modelos no dispositivo. Num dispositivo compatível com onnxruntime-qnn instalado, executa diretamente o modelo exportado com a API da Ultralytics (yolo predict/yolo val; consulta Utilização acima) — a Ultralytics carrega o binário de contexto HTP através do ONNX Runtime QNN Execution Provider.
Para pipelines personalizados, também podes carregar diretamente o ONNX de contexto binário com o ONNX Runtime. onnxruntime-qnn é um Execution Provider de plug-in, por isso regista-o em tempo de execução:
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 NHWCComo o binário de contexto QNN é pré-compilado, a sessão é carregada rapidamente sem recompilar o grafo no dispositivo.
Requisitos do Linux e do Yocto BSP#
A placa-alvo tem de disponibilizar um runtime Qualcomm e um BSP mutuamente compatíveis. Para inferência HTP, isto inclui o ONNX Runtime QNN Execution Provider, libQnnSystem.so, libQnnHtp.so, as bibliotecas stub e skeleton HTP v75 para IQ-8275, suporte FastRPC no espaço do utilizador, como libcdsprpc.so, o firmware do DSP e os controladores FastRPC/kernel correspondentes. A biblioteca skeleton tem de ser detetável através do caminho das bibliotecas DSP do BSP.
Estes componentes do lado do alvo provêm do BSP do fabricante da placa com QAIRT/QNN ativado; não estão incorporados no modelo exportado. A execução na GPU requer, em alternativa, libQnnGpu.so e a pilha de controladores do espaço do utilizador Adreno correspondente. O resultado format=qnn da Ultralytics é um binário de contexto específico para HTP, por isso a implementação na GPU ou no CPU deve começar por uma exportação ONNX padrão, em vez do ficheiro pré-compilado *_qnn.onnx.
Fluxo de Trabalho Recomendado#
- Treina o teu modelo usando o Modo de Treino da Ultralytics
- Exporta para o formato QNN utilizando
model.export(format="qnn", name="iq-8275", imgsz=640)numa plataforma compatível (utilizaimgsz=224para classificação) - Implementa o ficheiro
*_qnn.onnxexportado no teu dispositivo Qualcomm - Executa a inferência com o ONNX Runtime e o QNN Execution Provider utilizando o backend HTP
Aplicações no mundo real#
Os modelos YOLO executados em hardware Qualcomm Snapdragon são adequados para uma vasta gama de aplicações de IA de edge:
- Smartphones: Deteção de objetos em tempo real e compreensão de cenas em aplicações de câmara e fotografias, com aceleração por NPU.
- Windows em Snapdragon: visão computacional no dispositivo em PCs Copilot+, sem transferir o processamento para a cloud.
- Automóvel: monitorização do condutor, deteção de ocupantes e funcionalidades ADAS em plataformas Snapdragon Digital Chassis.
- XR e dispositivos vestíveis: perceção de baixo consumo e baixa latência para headsets de AR/VR e óculos inteligentes.
- IoT e robótica: inferência de visão eficiente em câmaras, drones e sistemas incorporados com Snapdragon.
Resumo#
Neste guia, aprendeste a exportar localmente modelos YOLO da Ultralytics para o formato Qualcomm QNN com o ONNX Runtime QNN Execution Provider. O pipeline de exportação converte o teu modelo para ONNX e, em seguida, compila-o num binário de contexto QNN na tua máquina anfitriã — sem necessidade de uma conta Qualcomm ou da cloud — produzindo um ficheiro *_qnn.onnx otimizado para hardware Snapdragon CPU, GPU Adreno e NPU Hexagon através do runtime QNN/QAIRT.
A combinação de Ultralytics YOLO e da stack de IA no dispositivo da Qualcomm proporciona uma solução eficaz para executar cargas de trabalho avançadas de visão computacional em todo o vasto ecossistema Snapdragon.
Para outros destinos de implementação em dispositivos e dispositivos móveis, consulta os guias de exportação relacionados de ONNX, CoreML, NCNN, LiteRT, ExecuTorch, RKNN, Sony IMX500 e TensorRT. Para comparar formatos antes da distribuição, utiliza o modo Benchmark. Para consultar a lista completa de formatos e opções, visita a documentação do modo Export e a página do guia de integrações.
Perguntas frequentes#
Podes exportar o teu modelo utilizando
export(format="qnn", imgsz=640)(imgsz=224para classificação) ou os argumentos equivalentes da CLI. A exportação cria primeiro um modelo ONNX e, em seguida, compila-o localmente num binário de contexto QNN utilizando o ONNX Runtime QNN Execution Provider. O pacoteonnxruntime-qnné instalado automaticamente na primeira exportação.Exemplofrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="qnn", imgsz=640) # use imgsz=224 for classificationNão. A exportação QNN é executada inteiramente na tua máquina local utilizando o pacote
onnxruntime-qnn, que inclui as bibliotecas QAIRT. Não é necessária uma conta Qualcomm, um token de API ou acesso à rede.O Qualcomm AI Hub é o serviço cloud da Qualcomm para compilar, criar perfis e realizar benchmarks de modelos em dispositivos Snapdragon alojados, e requer uma conta Qualcomm. A exportação QNN da Ultralytics destina-se ao mesmo runtime QNN/QAIRT (CPU Snapdragon, GPU Adreno e NPU Hexagon), mas compila o binário de contexto localmente com o ONNX Runtime QNN Execution Provider — sem conta, carregamento ou fila. É a forma mais rápida de passar de um modelo
.ptpara uma compilação pronta para Snapdragon diretamente no fluxo de trabalho padrão de exportação YOLO.onnxruntime-qnn2.4.0 e versões posteriores disponibilizam wheels pré-compiladas para Windows (x64 e ARM64) e Linux (x86-64 e ARM64) em Python 3.11 ou posterior; o macOS não é um anfitrião QNN compatível. A geração do binário de contexto é executada num anfitrião x64 e não requer um dispositivo Snapdragon físico.Exporta com
model.export(format="qnn", imgsz=640)(imgsz=224para classificação), copia o ficheiro resultanteyolo26n_qnn.onnxpara o teu dispositivo Snapdragon e executayolo predict model=yolo26n_qnn.onnx source=image.jpg(ouyolo val). A Ultralytics carrega o binário de contexto através do ONNX Runtime QNN Execution Provider e executa-o na NPU Hexagon — consulta Implementação de modelos YOLO QNN exportados.QNN (Qualcomm AI Engine Direct, parte do SDK QAIRT) é a stack de inferência atual da Qualcomm e a substituta recomendada para o SDK Snapdragon Neural Processing Engine (SNPE) mais antigo. As novas implementações devem ter como alvo o QNN.
Sim, num dispositivo Qualcomm Snapdragon com
onnxruntime-qnninstalado —YOLO("yolo26n_qnn.onnx")carrega o binário de contexto através do QNN Execution Provider e executapredict/valcomo qualquer outro formato. Num anfitrião x86 sem hardware QNN, o modelo não pode ser executado, pois o binário de contexto tem como alvo a NPU Snapdragon.A exportação cria um ficheiro ONNX autocontido com binário de contexto (por exemplo,
yolo26n_qnn.onnx), com nomes de classes, tamanho da imagem, tarefa e outros metadados do modelo incorporados no ONNXmetadata_props.