Exportación de NXP i.MX95 con Neutron
Exporta Ultralytics YOLO con format="nxp" para generar un modelo .tflite INT8 compilado para la NPU Neutron del NXP i.MX95. El exportador reutiliza el proceso de conversión y calibración de LiteRT y, a continuación, ejecuta el compilador Neutron SDK 3.3.0 de NXP para el despliegue de IA en el edge.
Este destino es distinto de Sony IMX500 (format="imx"). NXP i.MX8M Plus, i.MX93 y otros procesadores NXP utilizan pilas de aceleración diferentes; un artefacto para i.MX95 no es intercambiable con los de esos destinos.
Exportar#
Exporta en Linux x86_64, con Python 3.10 o posterior. La compilación se ha validado con Python 3.13 y 3.14. Ultralytics instala las dependencias de conversión cuando es necesario. Neutron SDK se obtiene del repositorio de paquetes de NXP.
pip install -U ultralytics
pip install eiq-neutron-sdk==3.3.0 --extra-index-url https://eiq.nxp.com/repositoryfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
path = model.export(format="nxp", imgsz=640, data="coco128.yaml")
# Creates yolo26n_nxp.tfliteUsa imágenes de calibración representativas del despliegue, que incluyan las características de la cámara, la iluminación y el tamaño de los objetos. La cuantización INT8 puede reducir la precisión, así que compara el yolo26n_int8.tflite intermedio con el modelo PyTorch en el equipo anfitrión. coco128.yaml es un ejemplo práctico, pero no sustituye a la calibración específica para tu aplicación ni a un conjunto de datos de validación independiente.
| Argumento | Descripción |
|---|---|
imgsz | Tamaño fijo de imagen de entrada, por ejemplo 640 o (480, 640). |
quantize | INT8 (8); se activa automáticamente. No se admiten otras precisiones. |
data | Archivo YAML del conjunto de datos de calibración o conjunto de datos de clasificación. |
fraction | Fracción o número de imágenes de calibración. |
device | Dispositivo utilizado durante la exportación y la calibración. El destino compilado sigue siendo i.MX95. |
El tamaño del lote está fijado en 1. Las exportaciones de detección utilizan predicciones sin procesar para aplicar NMS externamente; Ultralytics aplica este posprocesamiento durante la predicción y la validación. Esta exportación no admite NMS integrado ni la salida top-k sin NMS de YOLO26.
Plataforma#
En Ultralytics Platform, abre la pestaña Export de un modelo y selecciona NXP. Elige el tamaño de imagen y descarga el artefacto _nxp.tflite compilado cuando finalice la exportación. Platform ejecuta el compilador en sus trabajadores con CPU; solo necesitas una placa NXP para el despliegue y las mediciones de rendimiento. Consulta la guía paso a paso para exportar modelos en Platform para ver el flujo de trabajo general.
Platform muestra INT8 como un ajuste fijo y utiliza el conjunto de datos de calibración predeterminado del exportador para la tarea del modelo. Actualmente no ofrece controles data o fraction para la calibración. Usa los ejemplos de exportación con Python o CLI anteriores para calibrar con tus propias imágenes representativas.
Desplegar en i.MX95#
Instala el entorno de ejecución de TensorFlow Lite, libneutron_delegate.so, el controlador Neutron y el firmware suministrados por NXP para una BSP compatible con Neutron SDK 3.3.0. Sigue la guía de despliegue de NXP para configurar la placa y comprobar la compatibilidad del entorno de ejecución.
El entorno de ejecución de Ultralytics carga tflite_runtime y el delegado Neutron de la placa. Conserva el sufijo _nxp.tflite para que Ultralytics seleccione el entorno de ejecución de NXP. Ejecuta en la placa los siguientes ejemplos de predicción y validación:
from ultralytics import YOLO
model = YOLO("yolo26n_nxp.tflite")
results = model.predict("https://ultralytics.com/images/bus.jpg", imgsz=640)from ultralytics import YOLO
model = YOLO("yolo26n_nxp.tflite")
metrics = model.val(data="coco128.yaml", imgsz=640, batch=1)Para hacer una evaluación comparativa directa con TensorFlow Lite, usa el ejecutable de evaluación de la placa:
benchmark_model --graph=yolo26n_nxp.tflite --external_delegate_path=/usr/lib/libneutron_delegate.soCobertura de operadores y rendimiento#
La compilación sustituye los subgrafos compatibles por operaciones NeutronGraph. Los operadores no compatibles se ejecutan en la CPU. Una exportación correcta no implica que todas las operaciones se ejecuten en la NPU ni que se haya eliminado la sobrecarga de alternar entre CPU y NPU. La atención, los cambios en la disposición de los tensores y el posprocesamiento pueden seguir requiriendo ejecución en la CPU.
El registro de exportación incluye estadísticas del compilador de NXP: operadores convertidos, particiones de la NPU, estimaciones de memoria y ciclos estimados de la NPU. Estas estimaciones no incluyen los operadores de CPU, el preprocesamiento, el posprocesamiento ni la sobrecarga del entorno de ejecución. Mide la latencia de fotograma completa, la RAM máxima y el almacenamiento necesario para el despliegue en la placa de destino; los TOPS teóricos y el tamaño del archivo compilado no permiten determinar esos valores.
Valida el modelo intermedio calibrado frente al modelo PyTorch y, después, valida el modelo compilado en la placa con el mismo conjunto de datos y tamaño de imagen. La compilación en el equipo anfitrión y las comprobaciones de precisión del modelo intermedio no demuestran la paridad numérica ni la latencia en la NPU. Consulta las buenas prácticas para el despliegue de modelos para planificar la validación a nivel de aplicación.
Preguntas frecuentes#
Usa
model.export(format="nxp", data="your_dataset.yaml")en Python oyolo export model=best.pt format=nxp data=your_dataset.yamlen CLI en Linux x86_64. El exportador calibra el modelo a INT8 y lo compila con Neutron SDK 3.3.0 para generarbest_nxp.tflite. Sigue los ejemplos de exportación para exportar un modelo YOLO26n preentrenado.Sí. Carga
YOLO("best_nxp.tflite")y llama apredict()oval(), o bien usayolo predictyyolo val. Ambos métodos utilizan el entorno de ejecución de TensorFlow Lite y el delegado Neutron de la placa. Conserva el sufijo de nombre de archivo_nxp.tflitee instala el entorno de ejecución NXP compatible que se describe en Desplegar en i.MX95.Esta exportación está destinada únicamente a i.MX95. Otros procesadores NXP utilizan aceleradores y cadenas de herramientas de despliegue diferentes, por lo que un artefacto Neutron para i.MX95 no se puede reutilizar en i.MX8M Plus ni en i.MX93. La opción independiente
format="imx"está destinada a Sony IMX500, no a los procesadores NXP i.MX.Neutron compila los subgrafos compatibles para la NPU y deja los operadores no compatibles en TensorFlow Lite para que se ejecuten en la CPU. La atención, los cambios en la disposición y el posprocesamiento pueden crear varias particiones y sobrecarga de transferencia. Examina las estadísticas de operadores convertidos del compilador y, después, perfila la aplicación completa en la placa; una compilación correcta no garantiza que todo se ejecute en la NPU.
Calibra con imágenes representativas y compara PyTorch, el modelo intermedio INT8 y el modelo compilado con un conjunto de validación independiente. Usa el modo Validate para medir la precisión y mide la latencia de fotograma, la RAM máxima del proceso y el almacenamiento necesario para el despliegue en la placa i.MX95. Las estimaciones de memoria del compilador, el tamaño del archivo del modelo y una clasificación TOPS no bastan para determinar el rendimiento de la aplicación.
Comentarios
Haz una pregunta, comparte tus resultados o ayuda a otra persona.