NXP i.MX95 Export with Neutron
Export Ultralytics YOLO with format="nxp" to produce an INT8 .tflite model compiled for the NXP i.MX95 Neutron NPU. The exporter reuses the LiteRT conversion and calibration pipeline, then runs NXP's Neutron SDK 3.3.0 compiler for edge AI deployment.
This target is distinct from Sony IMX500 (format="imx"). NXP i.MX8M Plus, i.MX93, and other NXP processors use different accelerator stacks; an i.MX95 artifact is not interchangeable with those targets.
Export#
Export on Linux x86_64, with Python 3.10 or later. Compilation has been validated with Python 3.13 and 3.14. Ultralytics installs the conversion dependencies when needed. The Neutron SDK comes from NXP's package repository.
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.tfliteUse calibration images representative of your deployment, including its camera, lighting, and object sizes. INT8 quantization can reduce accuracy, so compare the intermediate yolo26n_int8.tflite against the PyTorch model on the host. coco128.yaml is a convenient example, not a substitute for application-specific calibration and an independent validation dataset.
| Argument | Description |
|---|---|
imgsz | Fixed input image size, for example 640 or (480, 640). |
quantize | INT8 (8); enabled automatically. Other precisions are unsupported. |
data | Calibration dataset YAML, or a classification dataset. |
fraction | Fraction or count of calibration images. |
device | Device used during export and calibration. The compiled target remains i.MX95. |
Batch size is fixed to 1. Detection exports use raw predictions for external NMS; Ultralytics applies this postprocessing during prediction and validation. Embedded NMS and the YOLO26 NMS-free top-k output are not supported by this export.
Platform#
In Ultralytics Platform, open a model's Export tab and select NXP. Choose the image size and download the compiled _nxp.tflite artifact when the export completes. Platform runs the compiler on its CPU workers; an NXP board is needed only for deployment and performance measurements. See the Platform model export walkthrough for the general workflow.
Platform displays INT8 as a fixed setting and uses the exporter's default calibration dataset for the model's task. It does not currently expose calibration data or fraction controls. Use the Python or CLI export examples above to calibrate with your own representative images.
Deploy on i.MX95#
Install the TensorFlow Lite runtime, libneutron_delegate.so, Neutron driver, and firmware supplied by NXP for a BSP compatible with Neutron SDK 3.3.0. Follow NXP's deployment guide for board setup and runtime compatibility.
The Ultralytics runtime loads the board's tflite_runtime and Neutron delegate. Keep the _nxp.tflite suffix so Ultralytics selects the NXP runtime. Run the following prediction and validation examples on the board:
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)For a direct TensorFlow Lite benchmark, use the board's benchmark executable:
benchmark_model --graph=yolo26n_nxp.tflite --external_delegate_path=/usr/lib/libneutron_delegate.soOperator Coverage and Performance#
Compilation replaces supported subgraphs with NeutronGraph operations. Unsupported operators remain on CPU. A successful export does not imply that every operation runs on the NPU or that CPU/NPU switching overhead has been eliminated. Attention, tensor layout changes, and postprocessing can still require CPU execution.
The export log includes NXP compiler statistics: converted operators, NPU partitions, memory estimates, and estimated NPU cycles. These estimates exclude CPU operators, preprocessing, postprocessing, and runtime overhead. Measure complete frame latency, peak RAM, and deployment storage on the target board; theoretical TOPS and compiled file size cannot determine those values.
Validate the calibrated intermediate against the PyTorch model, then validate the compiled model on the board using the same dataset and image size. Host compilation and intermediate accuracy checks do not establish numerical parity or latency on the NPU. See model deployment best practices for planning application-level validation.
FAQ#
Use
model.export(format="nxp", data="your_dataset.yaml")in Python oryolo export model=best.pt format=nxp data=your_dataset.yamlin the CLI on Linux x86_64. The exporter calibrates the model to INT8 and compiles it with Neutron SDK 3.3.0, producingbest_nxp.tflite. Follow the export examples for a pretrained YOLO26n model.Yes. Load
YOLO("best_nxp.tflite")and callpredict()orval(), or useyolo predictandyolo val. Both paths use the board's TensorFlow Lite runtime and Neutron delegate. Preserve the_nxp.tflitefilename suffix and install the compatible NXP runtime described in Deploy on i.MX95.This export targets i.MX95 only. Other NXP processors have different accelerators and deployment toolchains, so an i.MX95 Neutron artifact cannot be reused on i.MX8M Plus or i.MX93. The separate
format="imx"option targets Sony IMX500, not NXP i.MX processors.Neutron compiles supported subgraphs for the NPU and leaves unsupported operators in TensorFlow Lite for CPU execution. Attention, layout changes, and postprocessing can create multiple partitions and transfer overhead. Inspect the compiler's converted-operator statistics, then profile the complete application on the board; successful compilation does not guarantee full NPU execution.
Calibrate with representative images and compare PyTorch, the INT8 intermediate, and the compiled model on an independent validation set. Use Validate mode for accuracy, and measure frame latency, peak process RAM, and deployment storage on the i.MX95 board. Compiler memory estimates, model file size, and a TOPS rating are insufficient to determine application performance.
Comments
Ask a question, share your results, or help someone else.