Esportazione DEEPX per i modelli Ultralytics YOLO#
La distribuzione di modelli di visione artificiale su hardware NPU specializzato richiede un formato del 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 illustra come convertire i tuoi modelli YOLO nel formato DEEPX e distribuirli su hardware basato su DEEPX.
Che cos'è DEEPX?#
DEEPX è un'azienda di semiconduttori per l'IA specializzata in unità di elaborazione neurale (NPUs), progettate per un'inferenza di deep learning a basso consumo sui dispositivi edge. Le NPU DEEPX sono progettate per applicazioni di IA embedded e industriali impegnative, offrendo un throughput elevato con un consumo energetico minimo. L'hardware DEEPX è particolarmente adatto a scenari di distribuzione in cui la connettività cloud è inaffidabile o indesiderata, come la robotica, le smart camera 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 usa il toolkit dx_com per applicare la quantizzazione INT8 e l'ottimizzazione specifica per l'hardware, generando una directory autonoma del modello, pronta per la distribuzione.
Caratteristiche principali dei modelli DEEPX#
I modelli DEEPX offrono diversi vantaggi per la distribuzione edge:
- Quantizzazione INT8: i modelli vengono quantizzati con precisione INT8 durante l'esportazione, riducendo notevolmente le dimensioni del modello e massimizzando il throughput della NPU. Scopri di più sulla quantizzazione dei modelli.
- Ottimizzazione per NPU: il formato
.dxnnviene compilato appositamente per l'hardware NPU DEEPX e sfrutta unità di accelerazione dedicate per un'inferenza rapida ed efficiente. - Basso consumo energetico: trasferendo l'inferenza alla NPU, i modelli DEEPX consumano molta meno energia rispetto a un'inferenza equivalente su CPU o GPU.
- Precisione basata sulla calibrazione: l'esportazione usa una calibrazione basata su EMA con immagini reali del dataset per ridurre al minimo la perdita di precisione durante la quantizzazione.
- Output autonomo: la directory del modello esportato include il binario compilato, la configurazione di calibrazione e i metadati, per semplificare la distribuzione.
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 teste.
| 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 la fase 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 alla prima esportazione. Il flusso di lavoro di esportazione attuale usa DX-COM 2.3.0, che fornisce wheel per Python 3.8–3.12 su Linux x86-64 con glibc 2.31 o versioni successive.
Le release PyPI del compilatore sono state ritirate. Per preinstallare le dipendenze di esportazione, indica la pagina delle wheel dell'SDK con --find-links; questa soluzione funziona sia con pip sia con uv pip:
pip install "ultralytics[export-deepx]" --find-links https://sdk.deepx.ai/release/dxcom/v2.3.0/index.htmlPer installare il repository in modalità modificabile, sostituisci "ultralytics[export-deepx]" con -e ".[export-base,export-deepx]". Per riprodurre l'ambiente Python 3.12 e il test di esportazione smoke usati da CI, esegui il builder dell'ambiente già presente dalla directory principale del repository:
ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepxIl builder dell'ambiente richiede uv e una copia locale installata di Ultralytics. Installa il compilatore dalla sorgente dell'SDK e applica automaticamente i vincoli di dipendenza verificati.
Utilizzo#
Il formato DEEPX supporta le modalità Export, Predict e Validate. L'inferenza e la convalida vengono eseguite su hardware NPU DEEPX. Esporta il modello, quindi carica il modello esportato per eseguire l'inferenza o convalidarne la precisione.
from ultralytics import YOLO
# Carica un modello YOLO26
model = YOLO("yolo26n.pt")
# Esporta il modello nel formato DEEPX (quantize=8 viene applicato automaticamente)
model.export(format="deepx") # creates 'yolo26n_deepx_model/'from ultralytics import YOLO
# Carica il modello DEEPX esportato
model = YOLO("yolo26n_deepx_model")
# Esegui l'inferenza
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carica il modello DEEPX esportato
model = YOLO("yolo26n_deepx_model")
# Convalida la precisione sul dataset COCO8
metrics = model.val(data="coco8.yaml")Argomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'deepx' | Formato di destinazione del modello esportato, che ne definisce la compatibilità con l'hardware NPU DEEPX. |
imgsz | int o tuple | 640 | Dimensione desiderata dell'immagine in ingresso del modello. L'esportazione DEEPX richiede un input quadrato: passa un intero (ad es., 640) o una tupla in cui l'altezza è uguale alla larghezza. |
quantize | int o str | 8/auto | Precisione della quantizzazione. Per l'esportazione DEEPX è richiesto 8 (INT8), che viene attivato automaticamente se non specificato. 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 usata la versione più recente supportata. |
data | str | None | File YAML del dataset usato per la calibrazione INT8; per la classificazione, invece, si usa 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 livello di ottimizzazione superiore del compilatore, riducendo la latenza di inferenza e aumentando il tempo di compilazione. |
Esegui sempre l'esportazione DEEPX su un host Linux x86-64. Il compilatore dx_com non supporta ARM64.
Per ulteriori dettagli sul processo di esportazione, consulta la pagina della documentazione Ultralytics dedicata all'esportazione.
Struttura dell'output#
Dopo un'esportazione riuscita, viene creata una directory del modello con la struttura seguente:
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, caricato direttamente sulla NPU dal runtime dx_engine. Il file metadata.yaml contiene i nomi delle classi, la dimensione dell'immagine e altre informazioni usate dalla pipeline di inferenza Ultralytics.
Distribuzione dei modelli YOLO DEEPX esportati#
Dopo aver esportato correttamente il tuo modello Ultralytics YOLO nel formato DEEPX, il passo successivo consiste nel distribuirlo 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 es., 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 vedere 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 convalida sul tuo dispositivo DEEPX esattamente come indicato nella sezione Usage qui sopra: il file esportato _deepx_model viene caricato direttamente con YOLO(...).
Visualizzazione con dxtron#
dxtron è il visualizzatore di grafi di DEEPX, che consente di ispezionare il modello .dxnn compilato.
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 precisione 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) | precisione (top1) | precisione (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 convalida dei benchmark riportati sopra è stata eseguita usando COCO128 per il rilevamento, COCO128-seg per la segmentazione, COCO8-pose per la stima della posa, 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 massimo throughput di inferenza dalla NPU DX-M1 collegata a 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, poi Y, quindi Enter), quindi riavvia:
sudo rebootControlla la generazione PCIe. La velocità prevista per PCIe Gen3 è 8GT/s.
sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"Flusso di lavoro consigliato#
- Addestra il tuo modello usando la modalità di addestramento di Ultralytics
- Esporta nel formato DEEPX usando
model.export(format="deepx") - Convalida la precisione con
yolo valper verificare che la perdita dovuta alla quantizzazione sia minima - Esegui previsioni usando
yolo predictper una convalida qualitativa - Distribuisci la directory
_deepx_model/esportata sull'hardware NPU DEEPX usando il runtimedx_engine
Applicazioni nel mondo reale#
I modelli YOLO distribuiti 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 un basso consumo energetico e senza dipendenza dal cloud.
- Automazione industriale: controllo qualità direttamente sul dispositivo, rilevamento dei difetti e monitoraggio dei processi in ambienti di fabbrica.
- Robotica: navigazione basata sulla visione, elusione degli ostacoli e riconoscimento degli oggetti su robot autonomi e droni.
- Agricoltura intelligente: monitoraggio della salute delle colture, rilevamento dei parassiti e stima della resa usando la visione artificiale in agricoltura.
- Analisi per il commercio al dettaglio: 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 distribuirli su hardware NPU DEEPX. La pipeline di esportazione usa 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 visione artificiale su dispositivi embedded ed edge, garantendo un throughput elevato e un basso consumo energetico per le 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 Ultralytics YOLO, visita la nostra pagina delle guide alle integrazioni. Troverai numerose risorse e informazioni utili.
Domande frequenti#
Puoi esportare il modello usando il metodo
export()in Python oppure tramite CLI. L'esportazione abilita automaticamente la quantizzazione INT8 e usa un dataset di calibrazione per ridurre al minimo la perdita di precisione. 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. Durante l'esportazione, il compilatore
dx_comquantizza il modello usando una calibrazione basata su EMA con immagini reali del dataset, consentendo alla NPU di offrire tutte le sue prestazioni. Per le esportazioni DEEPX, INT8 è sempre obbligatorio: se richiedi una precisione diversa, verrà sostituita e riceverai un avviso.L'esportazione dei modelli DEEPX (compilazione) richiede un host Linux x86-64. La fase di esportazione non è supportata su macchine ARM64 (aarch64) e Windows. L'inferenza con il modello
.dxnnesportato può essere eseguita su qualsiasi piattaforma Linux (x86-64 e ARM64) supportata dal runtimedx_engine.L'esportazione crea una directory (ad es.,
yolo26n_deepx_model/) che contiene:yolo26n.dxnn— il binario NPU compilatoconfig.json— impostazioni di calibrazione e pre-elaborazionemetadata.yaml— metadati del modello, inclusi i nomi delle classi e la dimensione dell'immagine
Sì. Qualsiasi modello addestrato con Ultralytics Train Mode ed esportato con
format="deepx"può essere distribuito su hardware NPU DEEPX, purché utilizzi operazioni dei layer supportate. L'esportazione supporta tutte e sette le attività Ultralytics: rilevamento, segmentazione delle istanze, segmentazione semantica, stima della profondità, classificazione, stima della posa e bounding box orientata (OBB).La pipeline di esportazione DEEPX configura il compilatore
dx_comper eseguire 100 passaggi di calibrazione EMA sulle immagini del dataset di calibrazione. In genere, bastano alcune centinaia di immagini per ottenere una buona precisione di quantizzazione. Se il tempo di compilazione dei dataset di grandi dimensioni diventa un problema, impostadatasu un dataset più piccolo.Il runtime DEEPX non è incluso in
ultralyticse deve essere installato separatamente prima di eseguire l'inferenza. Su macchine Linux x86-64 e ARM64 (ad es., Raspberry Pi 5), installa il driver NPU (dxrt-driver-dkms) e il runtime (libdxrt) dalle release di DEEPX-AI su GitHub, quindi installa la wheel Pythondx_engineinclusa. Consulta la sezione Installazione del runtime qui sopra per le istruzioni dettagliate.