Esportazione DEEPX per i modelli Ultralytics YOLO#
L'implementazione di modelli di computer vision su hardware NPU specializzato richiede un formato di modello compatibile e ottimizzato. L'esportazione dei modelli Ultralytics YOLO nel formato DEEPX consente un'inferenza efficiente quantizzata INT8 sugli acceleratori NPU DEEPX. Questa guida ti accompagna nella conversione dei tuoi modelli YOLO nel formato DEEPX e nella loro implementazione su hardware basato su DEEPX.
Che cos'è DEEPX?#
DEEPX è un'azienda di semiconduttori per l'IA specializzata in unità di elaborazione neurale (NPU) progettate per un'inferenza di deep learning a basso consumo energetico all'edge. Le NPU DEEPX sono progettate per applicazioni di IA embedded e industriali esigenti, offrendo un throughput elevato con un consumo energetico minimo. Il loro hardware è particolarmente adatto agli scenari di implementazione in cui la connettività cloud è inaffidabile o indesiderata, come la robotica, le telecamere intelligenti e i sistemi di automazione industriale.
Formato di esportazione DEEPX#
L'esportazione DEEPX produce un binario del modello .dxnn compilato e ottimizzato per l'esecuzione su hardware NPU DEEPX. La pipeline di compilazione utilizza il toolkit dx_com per eseguire la quantizzazione INT8 e l'ottimizzazione specifica per l'hardware, generando una directory del modello autonoma pronta per l'implementazione.
Caratteristiche principali dei modelli DEEPX#
I modelli DEEPX offrono diversi vantaggi per l'implementazione all'edge:
- Quantizzazione INT8: durante l'esportazione, i modelli vengono quantizzati con precisione INT8, riducendo significativamente le dimensioni del modello e massimizzando il throughput della NPU. Scopri di più sulla quantizzazione dei modelli.
- Ottimizzazione per NPU: il formato
.dxnnè compilato specificamente per l'hardware NPU DEEPX e sfrutta unità di accelerazione dedicate per un'inferenza rapida ed efficiente. - Basso consumo energetico: delegando l'inferenza alla NPU, i modelli DEEPX consumano molta meno energia rispetto a un'inferenza equivalente su CPU o GPU.
- Accuratezza basata sulla calibrazione: l'esportazione utilizza una calibrazione basata su EMA con immagini reali del dataset per ridurre al minimo la perdita di accuratezza durante la quantizzazione.
- Output autonomo: la directory del modello esportato include il binario compilato, la configurazione di calibrazione e i metadati, per un'implementazione semplice.
Attività supportate#
L'esportazione DEEPX supporta tutte e sette le attività Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include queste head.
| Attività | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Rilevamento | ✅ | ✅ | ✅ |
| Segmentazione | ✅ | ✅ | ✅ |
| Semantica | ❌ | ❌ | ✅ |
| Profondità | ❌ | ❌ | ✅ |
| Classificazione | ✅ | ✅ | ✅ |
| Posa | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Esportazione in DEEPX: conversione del modello YOLO#
Esporta un modello Ultralytics YOLO nel formato DEEPX ed esegui l'inferenza con il modello esportato.
L'esportazione DEEPX è supportata solo su macchine Linux x86-64. ARM64 (aarch64) non è supportato per il passaggio di esportazione. Tuttavia, i modelli dxnn esportati sono pienamente compatibili ed eseguibili su piattaforme ARM64.
Installazione#
Per installare i pacchetti richiesti, esegui:
# Install the required package for YOLO
pip install ultralyticsIl compilatore dx_com viene installato automaticamente dal repository DEEPX SDK al primo export. Il flusso di lavoro di export corrente utilizza DX-COM 2.3.0, che fornisce pacchetti wheel per Python 3.8–3.12 su Linux x86-64 con glibc 2.31 o versioni successive.
Le versioni PyPI del compilatore sono state ritirate. Per preinstallare le dipendenze di export, fornisci la pagina dei wheel dell'SDK con --find-links; questo funziona sia con pip che con uv pip:
pip install "ultralytics[export-deepx]" --find-links https://sdk.deepx.ai/release/dxcom/v2.3.0/index.htmlPer un'installazione del repository modificabile, sostituisci "ultralytics[export-deepx]" con -e ".[export-base,export-deepx]". Per riprodurre l'ambiente Python 3.12 e il test di export smoke utilizzato da CI, esegui il generatore di ambiente esistente dalla root del repository:
ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepxIl generatore di ambiente richiede uv e un checkout di Ultralytics installato. Installa il compilatore dal codice sorgente dell'SDK e applica automaticamente i vincoli di dipendenza testati.
Utilizzo#
Il formato DEEPX supporta le modalità Export, Predict e Validate. L'inferenza e la validazione vengono eseguite sull'hardware NPU DEEPX. Esporta il modello, quindi carica il modello esportato per eseguire l'inferenza o verificarne l'accuratezza.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to DEEPX format (quantize=8 is enforced automatically)
model.export(format="deepx") # creates 'yolo26n_deepx_model/'from ultralytics import YOLO
# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Argomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'deepx' | Formato di destinazione del modello esportato, che definisce la compatibilità con l'hardware NPU DEEPX. |
imgsz | int o tuple | 640 | Dimensioni dell'immagine desiderate per l'input del modello. L'esportazione DEEPX richiede un input quadrato: passa un numero intero (ad esempio, 640) o una tupla in cui l'altezza è uguale alla larghezza. |
quantize | int o str | 8/auto | Precisione della quantizzazione. 8 (INT8) è obbligatoria per l'esportazione DEEPX e viene abilitata automaticamente se non specificata. Sostituisce i flag deprecati half/int8. |
simplify | bool | True | Semplifica il grafo ONNX intermedio con onnxslim. |
opset | int | None | Specifica la versione dell'opset ONNX per il grafo ONNX intermedio. Se non impostata, viene utilizzata la versione supportata più recente. |
data | str | None | File YAML del dataset utilizzato per la calibrazione INT8; per la classificazione accetta invece una directory del dataset o il nome di un dataset integrato. Se omesso con quantize=8, Ultralytics seleziona il dataset di calibrazione predefinito per l'attività del modello. |
device | str | None | Specifica il dispositivo per l'esportazione: GPU (device=0) o CPU (device=cpu). |
optimize | bool | False | Abilita un'ottimizzazione più avanzata del compilatore, riducendo la latenza dell'inferenza e aumentando il tempo di compilazione. |
Esegui sempre l'esportazione DEEPX su un host x86-64 Linux. Il compilatore dx_com non supporta ARM64.
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione Ultralytics sull'esportazione.
Struttura dell'output#
Dopo un'esportazione riuscita, viene creata una directory del modello con la seguente struttura:
yolo26n_deepx_model/
├── yolo26n.dxnn # Compiled DEEPX model binary (NPU executable)
├── config.json # Calibration and preprocessing configuration
└── metadata.yaml # Model metadata (classes, image size, task, etc.)Il file .dxnn è il binario del modello compilato che il runtime dx_engine carica direttamente sulla NPU. metadata.yaml contiene i nomi delle classi, le dimensioni dell'immagine e altre informazioni utilizzate dalla pipeline di inferenza Ultralytics.
Implementazione dei modelli YOLO DEEPX esportati#
Dopo aver esportato correttamente il tuo modello Ultralytics YOLO nel formato DEEPX, il passaggio successivo consiste nell'implementarlo su hardware NPU DEEPX.
Installazione del runtime#
L'inferenza richiede il driver NPU DEEPX, il runtime libdxrt e il pacchetto Python dx_engine.
Il runtime DEEPX supporta sia Linux x86-64 sia ARM64 (ad esempio, Raspberry Pi 5).
# Install the NPU driver and libdxrt runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.4.1/dxrt-driver-dkms_2.4.1-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.4.1-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.3.2/libdxrt_3.3.2_all.deb
sudo apt install ./libdxrt_3.3.2_all.deb
# Create dx-engine wheel
cd /usr/share/libdxrt/python_package && sudo ./make_whl.sh
# Install the bundled dx_engine Python wheel
pip install dx_engine-*.whlVerifica che il runtime sia installato correttamente con dxrt-cli --version. Dovresti visualizzare un output simile a:
DXRT v3.3.2
Minimum Driver Versions
Device Driver: v2.4.0
PCIe Driver: v2.2.0
Firmware: v2.5.2
Minimum Compiler Versions
Compiler: v1.18.1
.dxnn File Format: v6Una volta installato il runtime, esegui l'inferenza e la validazione sul tuo dispositivo DEEPX esattamente come mostrato nella sezione Usage precedente: il modello esportato _deepx_model viene caricato direttamente con YOLO(...).
Visualizzazione con dxtron#
dxtron è il visualizzatore di grafi di DEEPX per ispezionare il modello compilato .dxnn.
Installa dxtron su Linux x86-64 scaricando il pacchetto .deb dall'SDK DEEPX e installandolo tramite dpkg:
wget https://sdk.deepx.ai/release/dxtron/v2.0.1/dxtron_2.0.1_amd64.deb
sudo dpkg -i dxtron_2.0.1_amd64.debQuindi apri il modello esportato:
dxtron yolo26n_deepx_model/yolo26n.dxnndxtron è disponibile per le piattaforme x86-64 e aarch64.
Benchmark#
Il team Ultralytics ha eseguito benchmark sui modelli YOLO26, confrontando velocità e accuratezza tra PyTorch e DEEPX.
| Modello | Formato | Stato | Dimensioni (MB) | metrics/mAP50-95(B) | Tempo di inferenza (ms/im) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4760 | 315.2 |
| YOLO26n | DEEPX | ✅ | 6.6 | 0.4660 | 34.6 |
| YOLO26n-seg | PyTorch | ✅ | 6.5 | 0.4080 | 485.4 |
| YOLO26n-seg | DEEPX | ✅ | 7.9 | 0.3920 | 53.8 |
| YOLO26n-pose | PyTorch | ✅ | 7.6 | 0.4230 | 506.3 |
| YOLO26n-pose | DEEPX | ✅ | 8.8 | 0.4590 | 37.6 |
| YOLO26n-obb | PyTorch | ✅ | 5.7 | 0.817 | 1094.4 |
| YOLO26n-obb | DEEPX | ✅ | 7.3 | 0.783 | 56.4 |
| Modello | Formato | Stato | Dimensioni (MB) | accuratezza (top1) | accuratezza (top5) | Tempo di inferenza (ms/im) |
|---|---|---|---|---|---|---|
| YOLO26n-cls | PyTorch | ✅ | 5.6 | 0.431 | 0.716 | 23.8 |
| YOLO26n-cls | DEEPX | ✅ | 5.9 | 0.333 | 0.686 | 2.7 |
La validazione per i benchmark di cui sopra è stata effettuata utilizzando COCO128 per il rilevamento, COCO128-seg per la segmentazione, COCO8-pose per la stima dei punti chiave, ImageNet100 per la classificazione e DOTA128 per i modelli OBB. Il tempo di inferenza non include la pre-elaborazione e la post-elaborazione.
Per ottenere il miglior throughput di inferenza dalla NPU DX-M1 collegata a un Raspberry Pi 5, apri il file di configurazione di avvio e abilita il supporto PCIe Gen 3.
sudo nano /boot/firmware/config.txtAggiungi le righe seguenti alla fine del file:
dtparam=pciex1
dtparam=pciex1_gen=3Salva ed esci (Ctrl+X, quindi Y e poi Invio), quindi riavvia:
sudo rebootControlla la generazione PCIe. La velocità prevista è di 8GT/s per PCIe Gen3.
sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"Flusso di lavoro consigliato#
- Addestra il tuo modello usando la modalità Addestra di Ultralytics
- Esporta nel formato DEEPX utilizzando
model.export(format="deepx") - Convalida l'accuratezza con
yolo valper verificare una perdita minima dovuta alla quantizzazione - Esegui la previsione usando
yolo predictper la convalida qualitativa - Implementa la directory
_deepx_model/esportata sull'hardware NPU DEEPX utilizzando il runtimedx_engine
Applicazioni nel mondo reale#
I modelli YOLO implementati su hardware NPU DEEPX sono particolarmente adatti a un'ampia gamma di applicazioni di IA edge:
- Videosorveglianza intelligente: Rilevamento degli oggetti in tempo reale per sistemi di sicurezza e monitoraggio, con basso consumo energetico e senza dipendenza dal cloud.
- Automazione industriale: controllo qualità sul dispositivo, rilevamento dei difetti e monitoraggio dei processi negli ambienti di fabbrica.
- Robotica: navigazione basata sulla visione, evitamento degli ostacoli e riconoscimento degli oggetti su robot e droni autonomi.
- Agricoltura intelligente: monitoraggio della salute delle colture, rilevamento dei parassiti e stima della resa utilizzando la computer vision in agricoltura.
- Analisi del settore retail: analisi del flusso dei clienti, monitoraggio degli scaffali e tracciamento dell'inventario con inferenza edge in tempo reale.
Riepilogo#
In questa guida hai imparato a esportare i modelli Ultralytics YOLO nel formato DEEPX e a implementarli su hardware NPU DEEPX. La pipeline di esportazione utilizza la calibrazione INT8 e il compilatore dx_com per produrre un binario .dxnn ottimizzato per l'hardware, mentre il runtime dx_engine gestisce l'inferenza sul dispositivo.
La combinazione di Ultralytics YOLO e della tecnologia NPU di DEEPX offre una soluzione efficace per eseguire carichi di lavoro avanzati di computer vision su dispositivi embedded ed edge, garantendo un throughput elevato con un basso consumo energetico per applicazioni in tempo reale.
Per ulteriori dettagli sull'utilizzo, visita il sito web ufficiale di DEEPX.
Inoltre, se vuoi saperne di più sulle altre integrazioni di Ultralytics YOLO, visita la nostra pagina della guida alle integrazioni. Troverai numerose risorse e informazioni utili.
FAQ#
Puoi esportare il modello utilizzando il metodo
export()in Python o tramite la CLI. L'esportazione abilita automaticamente la quantizzazione INT8 e utilizza un dataset di calibrazione per ridurre al minimo la perdita di accuratezza. Il pacchetto del compilatoredx_comviene installato automaticamente se non è già presente.Esempiofrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="deepx")Le NPU DEEPX sono progettate per eseguire calcoli INT8 con la massima efficienza. Il compilatore
dx_comquantizza il modello durante l'esportazione utilizzando la calibrazione basata su EMA con immagini reali del dataset, consentendo alla NPU di esprimere tutte le sue prestazioni. INT8 viene sempre imposto per le esportazioni DEEPX: se richiedi una precisione diversa, questa verrà sostituita e verrà mostrato un avviso.L'esportazione (compilazione) del modello DEEPX richiede un host x86-64 Linux. Il passaggio di esportazione non è supportato su ARM64 (aarch64) né su macchine Windows. L'inferenza utilizzando il modello
.dxnnesportato può essere eseguita su qualsiasi piattaforma Linux (x86-64 e ARM64) supportata dal runtimedx_engine.L'esportazione crea una directory (ad esempio,
yolo26n_deepx_model/) contenente:yolo26n.dxnn— il binario NPU compilatoconfig.json— impostazioni di calibrazione e pre-elaborazionemetadata.yaml— metadati del modello, inclusi i nomi delle classi e le dimensioni dell'immagine
Sì. Qualsiasi modello addestrato utilizzando la Modalità di addestramento Ultralytics ed esportato con
format="deepx"può essere implementato su hardware NPU DEEPX, purché utilizzi operazioni degli strati supportate. L'esportazione supporta tutte e sette le attività Ultralytics: rilevamento, segmentazione delle istanze, segmentazione semantica, stima della profondità, classificazione, stima della posa e riquadro di delimitazione orientato (OBB).La pipeline di esportazione DEEPX utilizza ogni immagine del dataset di calibrazione con il metodo di calibrazione EMA. In genere, alcune centinaia di immagini sono sufficienti per ottenere una buona accuratezza della quantizzazione. Indica a
dataun dataset più piccolo se il tempo di compilazione diventa problematico con dataset di grandi dimensioni.Il runtime DEEPX non è incluso in
ultralyticse deve essere installato separatamente prima di eseguire l'inferenza. Sulle macchine Linux x86-64 e Linux ARM64 (ad esempio, Raspberry Pi 5), installa il driver NPU (dxrt-driver-dkms) e il runtime (libdxrt) dalle release DEEPX-AI su GitHub, quindi installa il wheel Pythondx_engineincluso. Consulta la sezione Installazione del runtime precedente per i comandi dettagliati passo per passo.