Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Inizia

Esportazione NXP i.MX95 con Neutron

Esporta Ultralytics YOLO con format="nxp" per ottenere un modello .tflite INT8 compilato per l'NPU NPU Neutron NXP i.MX95. L'esportatore riutilizza la pipeline di conversione e calibrazione LiteRT, quindi esegue il compilatore NXP Neutron SDK 3.3.0 per la distribuzione di IA edge.

Questo target è distinto da Sony IMX500 (format="imx"). NXP i.MX8M Plus, i.MX93 e altri processori NXP usano stack di accelerazione diversi; un artefatto i.MX95 non è intercambiabile con quelli destinati a questi target.

Esporta#

Esporta su Linux x86_64, con Python 3.10 o versioni successive. La compilazione è stata convalidata con Python 3.13 e 3.14. Ultralytics installa le dipendenze di conversione quando necessario. Neutron SDK è disponibile nel repository di pacchetti NXP.

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

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

Usa immagini di calibrazione rappresentative della tua distribuzione, includendo la fotocamera, l'illuminazione e le dimensioni degli oggetti. La quantizzazione INT8 può ridurre l'accuratezza, quindi confronta il modello intermedio yolo26n_int8.tflite con il modello PyTorch sull'host. coco128.yaml è un esempio pratico, non un sostituto della calibrazione specifica per l'applicazione e di un set di dati di convalida indipendente.

ArgomentoDescrizione
imgszDimensione fissa dell'immagine di input, ad esempio 640 o (480, 640).
quantizeINT8 (8); attivato automaticamente. Le altre precisioni non sono supportate.
dataFile YAML del set di dati di calibrazione oppure un set di dati di classificazione.
fractionFrazione o numero di immagini di calibrazione.
deviceDispositivo usato durante l'esportazione e la calibrazione. Il target compilato rimane i.MX95.

La dimensione del batch è fissata a 1. Le esportazioni per il rilevamento usano predizioni grezze per la NMS esterna; Ultralytics applica questa post-elaborazione durante la predizione e la convalida. Questa esportazione non supporta la NMS integrata né l'output top-k senza NMS di YOLO26.

Piattaforma#

In Ultralytics Platform, apri la scheda Export di un modello e seleziona NXP. Scegli la dimensione dell'immagine e scarica l'artefatto compilato _nxp.tflite al termine dell'esportazione. Platform esegue il compilatore sui propri worker CPU; una scheda NXP serve solo per la distribuzione e le misurazioni delle prestazioni. Consulta la guida dettagliata all'esportazione dei modelli in Platform per il flusso di lavoro generale.

Platform mostra INT8 come impostazione fissa e usa il set di dati di calibrazione predefinito dell'esportatore per l'attività del modello. Al momento non espone i controlli data o fraction per la calibrazione. Usa gli esempi di esportazione Python o CLI qui sopra per calibrare con immagini rappresentative scelte da te.

Distribuisci su i.MX95#

Installa il runtime TensorFlow Lite, libneutron_delegate.so, il driver Neutron e il firmware forniti da NXP per un BSP compatibile con Neutron SDK 3.3.0. Segui la guida alla distribuzione di NXP per configurare la scheda e verificare la compatibilità del runtime.

Il runtime Ultralytics carica tflite_runtime della scheda e il delegato Neutron. Mantieni il suffisso _nxp.tflite affinché Ultralytics selezioni il runtime NXP. Esegui sulla scheda i seguenti esempi di predizione e convalida:

Esegui predizioni con un modello NXP
from ultralytics import YOLO

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

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

Per un benchmark TensorFlow Lite diretto, usa l'eseguibile di benchmark della scheda:

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

Copertura degli operatori e prestazioni#

La compilazione sostituisce i sottografi supportati con operazioni NeutronGraph. Gli operatori non supportati restano sulla CPU. Un'esportazione riuscita non implica che tutte le operazioni vengano eseguite sull'NPU o che sia stato eliminato il sovraccarico dovuto al passaggio tra CPU e NPU. Attenzione, modifiche al layout dei tensori e post-elaborazione potrebbero comunque richiedere l'esecuzione sulla CPU.

Il log di esportazione include le statistiche del compilatore NXP: operatori convertiti, partizioni NPU, stime della memoria e cicli NPU stimati. Queste stime escludono gli operatori CPU, il pre-processing, il post-processing e il sovraccarico del runtime. Misura la latenza completa dei frame, il picco di RAM e lo spazio di archiviazione richiesto per la distribuzione sulla scheda di destinazione; il TOPS teorico e le dimensioni del file compilato non bastano a determinare questi valori.

Convalida il modello intermedio calibrato confrontandolo con il modello PyTorch, quindi convalida il modello compilato sulla scheda usando lo stesso set di dati e la stessa dimensione dell'immagine. La compilazione sull'host e i controlli intermedi di accuratezza non dimostrano la parità numerica o la latenza sull'NPU. Consulta le best practice per la distribuzione dei modelli per pianificare la convalida a livello di applicazione.

Domande frequenti#

  • Usa model.export(format="nxp", data="your_dataset.yaml") in Python o yolo export model=best.pt format=nxp data=your_dataset.yaml nella CLI su Linux x86_64. L'esportatore calibra il modello a INT8 e lo compila con Neutron SDK 3.3.0, producendo best_nxp.tflite. Segui gli esempi di esportazione per un modello YOLO26n preaddestrato.

  • Sì. Carica YOLO("best_nxp.tflite") e chiama predict() o val(), oppure usa yolo predict e yolo val. Entrambi i percorsi usano il runtime TensorFlow Lite della scheda e il delegato Neutron. Mantieni il suffisso del nome file _nxp.tflite e installa il runtime NXP compatibile descritto in Distribuisci su i.MX95.

  • Questa esportazione è destinata solo a i.MX95. Gli altri processori NXP hanno acceleratori e toolchain di distribuzione diversi, quindi un artefatto i.MX95 Neutron non può essere riutilizzato su i.MX8M Plus o i.MX93. L'opzione separata format="imx" è destinata a Sony IMX500, non ai processori NXP i.MX.

  • Neutron compila i sottografi supportati per l'NPU e lascia gli operatori non supportati in TensorFlow Lite per l'esecuzione sulla CPU. Attenzione, modifiche al layout e post-elaborazione possono creare più partizioni e sovraccarico dovuto al trasferimento. Esamina le statistiche degli operatori convertiti dal compilatore, quindi profila l'applicazione completa sulla scheda; una compilazione riuscita non garantisce l'esecuzione completa sull'NPU.

  • Esegui la calibrazione con immagini rappresentative e confronta PyTorch, il modello intermedio INT8 e il modello compilato su un set di convalida indipendente. Usa la modalità Validate per misurare l'accuratezza e misura la latenza dei frame, il picco di RAM del processo e lo spazio di archiviazione richiesto per la distribuzione sulla scheda i.MX95. Le stime di memoria del compilatore, le dimensioni del file del modello e un valore TOPS non bastano a determinare le prestazioni dell'applicazione.

Collaboratori

Commenti

Fai una domanda, condividi i tuoi risultati o aiuta qualcun altro.