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/repositoryfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
path = model.export(format="nxp", imgsz=640, data="coco128.yaml")
# Crea yolo26n_nxp.tfliteUsa 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.
| Argomento | Descrizione |
|---|---|
imgsz | Dimensione fissa dell'immagine di input, ad esempio 640 o (480, 640). |
quantize | INT8 (8); attivato automaticamente. Le altre precisioni non sono supportate. |
data | File YAML del set di dati di calibrazione oppure un set di dati di classificazione. |
fraction | Frazione o numero di immagini di calibrazione. |
device | Dispositivo 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:
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)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.soCopertura 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 oyolo export model=best.pt format=nxp data=your_dataset.yamlnella CLI su Linux x86_64. L'esportatore calibra il modello a INT8 e lo compila con Neutron SDK 3.3.0, producendobest_nxp.tflite. Segui gli esempi di esportazione per un modello YOLO26n preaddestrato.Sì. Carica
YOLO("best_nxp.tflite")e chiamapredict()oval(), oppure usayolo predicteyolo val. Entrambi i percorsi usano il runtime TensorFlow Lite della scheda e il delegato Neutron. Mantieni il suffisso del nome file_nxp.tflitee 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.
Commenti
Fai una domanda, condividi i tuoi risultati o aiuta qualcun altro.