Ultralytics YOLO27: Inscreve-te na lista de espera.
Começar

Exportação para NXP i.MX95 com Neutron

Exporte Ultralytics YOLO com format="nxp" para gerar um modelo .tflite INT8 compilado para a NPU Neutron do NXP i.MX95. O exportador reutiliza o pipeline de conversão e calibração do LiteRT e, em seguida, executa o compilador Neutron SDK 3.3.0 da NXP para implantação de IA na borda.

Este destino é diferente do Sony IMX500 (format="imx"). O NXP i.MX8M Plus, o i.MX93 e outros processadores NXP usam pilhas de aceleradores diferentes; um artefato para i.MX95 não é intercambiável com esses destinos.

Exportar#

Exporte no Linux x86_64, com Python 3.10 ou posterior. A compilação foi validada com Python 3.13 e 3.14. O Ultralytics instala as dependências de conversão quando necessário. O Neutron SDK está disponível no repositório de pacotes da NXP.

pip install -U ultralytics
pip install eiq-neutron-sdk==3.3.0 --extra-index-url https://eiq.nxp.com/repository
Exportar para NXP i.MX95
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
path = model.export(format="nxp", imgsz=640, data="coco128.yaml")
# # Cria yolo26n_nxp.tflite

Use imagens de calibração representativas da sua implantação, incluindo a câmera, a iluminação e os tamanhos dos objetos. A quantização INT8 pode reduzir a precisão; por isso, compare o yolo26n_int8.tflite intermediário com o modelo PyTorch no host. coco128.yaml é um exemplo prático, não um substituto para a calibração específica da aplicação e um conjunto de dados de validação independente.

ArgumentoDescrição
imgszTamanho fixo da imagem de entrada, por exemplo, 640 ou (480, 640).
quantizeINT8 (8); ativado automaticamente. Outras precisões não são compatíveis.
dataYAML do conjunto de dados de calibração ou um conjunto de dados de classificação.
fractionFração ou quantidade de imagens de calibração.
deviceDispositivo usado durante a exportação e a calibração. O destino compilado continua sendo o i.MX95.

O tamanho do lote é fixado em 1. As exportações de detecção usam previsões brutas para NMS externo; o Ultralytics aplica esse pós-processamento durante a predição e a validação. A NMS embarcada e a saída top-k sem NMS do YOLO26 não são compatíveis com esta exportação.

Plataforma#

Na Ultralytics Platform, abra a guia Export de um modelo e selecione NXP. Escolha o tamanho da imagem e baixe o artefato _nxp.tflite compilado quando a exportação terminar. A Platform executa o compilador nos seus workers de CPU; uma placa NXP só é necessária para a implantação e as medições de desempenho. Consulte o guia passo a passo de exportação de modelos da Platform para conhecer o fluxo de trabalho geral.

A Platform apresenta INT8 como uma configuração fixa e usa o conjunto de dados de calibração padrão do exportador para a tarefa do modelo. No momento, ela não oferece controles data ou fraction para calibração. Use os exemplos de exportação em Python ou na CLI acima para calibrar com suas próprias imagens representativas.

Implantar no i.MX95#

Instale o runtime TensorFlow Lite, libneutron_delegate.so, o driver Neutron e o firmware fornecidos pela NXP para um BSP compatível com Neutron SDK 3.3.0. Siga o guia de implantação da NXP para configurar a placa e verificar a compatibilidade do runtime.

O runtime do Ultralytics carrega tflite_runtime da placa e o delegate Neutron. Mantenha o sufixo _nxp.tflite para que o Ultralytics selecione o runtime NXP. Execute os exemplos a seguir de predição e validação na placa:

Fazer predições com um modelo NXP
from ultralytics import YOLO

model = YOLO("yolo26n_nxp.tflite")
results = model.predict("https://ultralytics.com/images/bus.jpg", imgsz=640)
Validar um modelo NXP
from ultralytics import YOLO

model = YOLO("yolo26n_nxp.tflite")
metrics = model.val(data="coco128.yaml", imgsz=640, batch=1)

Para um benchmark direto do TensorFlow Lite, use o executável de benchmark da placa:

benchmark_model --graph=yolo26n_nxp.tflite --external_delegate_path=/usr/lib/libneutron_delegate.so

Cobertura de operadores e desempenho#

A compilação substitui subgrafos compatíveis por operações NeutronGraph. Os operadores não compatíveis continuam sendo executados na CPU. Uma exportação bem-sucedida não significa que todas as operações são executadas na NPU nem que a sobrecarga da alternância entre CPU e NPU foi eliminada. A atenção, as mudanças no layout dos tensores e o pós-processamento ainda podem exigir execução na CPU.

O log de exportação inclui estatísticas do compilador NXP: operadores convertidos, partições da NPU, estimativas de memória e ciclos estimados da NPU. Essas estimativas não incluem operadores da CPU, pré-processamento, pós-processamento nem a sobrecarga do runtime. Meça a latência completa por quadro, o pico de RAM e o armazenamento necessário para a implantação na placa de destino; o TOPS teórico e o tamanho do arquivo compilado não permitem determinar esses valores.

Valide o modelo intermediário calibrado comparando-o com o modelo PyTorch e, em seguida, valide o modelo compilado na placa usando o mesmo conjunto de dados e o mesmo tamanho de imagem. A compilação no host e as verificações de precisão do modelo intermediário não comprovam a paridade numérica nem a latência na NPU. Consulte as práticas recomendadas para implantação de modelos para planejar a validação no nível da aplicação.

Perguntas frequentes#

  • Use model.export(format="nxp", data="your_dataset.yaml") em Python ou yolo export model=best.pt format=nxp data=your_dataset.yaml na CLI em Linux x86_64. O exportador calibra o modelo para INT8 e o compila com Neutron SDK 3.3.0, gerando best_nxp.tflite. Siga os exemplos de exportação para usar um modelo YOLO26n pré-treinado.

  • Sim. Carregue YOLO("best_nxp.tflite") e chame predict() ou val(), ou use yolo predict e yolo val. Ambos os caminhos usam o runtime TensorFlow Lite da placa e o delegate Neutron. Mantenha o sufixo de nome de arquivo _nxp.tflite e instale o runtime NXP compatível descrito em Implantar no i.MX95.

  • Esta exportação é destinada somente ao i.MX95. Outros processadores NXP têm aceleradores e toolchains de implantação diferentes; portanto, um artefato i.MX95 Neutron não pode ser reutilizado no i.MX8M Plus nem no i.MX93. A opção separada format="imx" é destinada ao Sony IMX500, não aos processadores NXP i.MX.

  • O Neutron compila subgrafos compatíveis para a NPU e deixa os operadores não compatíveis no TensorFlow Lite para execução na CPU. A atenção, as mudanças de layout e o pós-processamento podem criar várias partições e sobrecarga de transferência. Examine as estatísticas de operadores convertidos do compilador e, em seguida, faça o perfil da aplicação completa na placa; a compilação bem-sucedida não garante a execução completa na NPU.

  • Calibre com imagens representativas e compare o PyTorch, o modelo intermediário INT8 e o modelo compilado usando um conjunto de validação independente. Use o modo Validate para avaliar a precisão e meça a latência por quadro, o pico de RAM do processo e o armazenamento necessário para a implantação na placa i.MX95. As estimativas de memória do compilador, o tamanho do arquivo do modelo e uma classificação TOPS não são suficientes para determinar o desempenho da aplicação.

Colaboradores

Comentários

Faz uma pergunta, partilha os teus resultados ou ajuda alguém.