YOLO Vision 2026:

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 NPU Inference

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àYOLOv8YOLO11YOLO26
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.

Nota

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:

Installazione
# Install the required package for YOLO
pip install ultralytics

Il 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.html

Per 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-deepx

Il 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.

Esportazione
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/'
Predizione
from ultralytics import YOLO

# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Valida
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#

ArgomentoTipoPredefinitoDescrizione
formatstr'deepx'Formato di destinazione del modello esportato, che definisce la compatibilità con l'hardware NPU DEEPX.
imgszint o tuple640Dimensioni 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.
quantizeint o str8/autoPrecisione della quantizzazione. 8 (INT8) è obbligatoria per l'esportazione DEEPX e viene abilitata automaticamente se non specificata. Sostituisce i flag deprecati half/int8.
simplifyboolTrueSemplifica il grafo ONNX intermedio con onnxslim.
opsetintNoneSpecifica la versione dell'opset ONNX per il grafo ONNX intermedio. Se non impostata, viene utilizzata la versione supportata più recente.
datastrNoneFile 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.
devicestrNoneSpecifica il dispositivo per l'esportazione: GPU (device=0) o CPU (device=cpu).
optimizeboolFalseAbilita un'ottimizzazione più avanzata del compilatore, riducendo la latenza dell'inferenza e aumentando il tempo di compilazione.
Suggerimento

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.

Nota

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-*.whl

Verifica 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: v6

Una 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.deb

Quindi apri il modello esportato:

dxtron yolo26n_deepx_model/yolo26n.dxnn
Nota

dxtron è 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.

Prestazioni
Raspberry Pi 5 DEEPX M1 NPU vs PyTorch benchmarks
ModelloFormatoStatoDimensioni (MB)metrics/mAP50-95(B)Tempo di inferenza (ms/im)
YOLO26nPyTorch5.30.4760315.2
YOLO26nDEEPX6.60.466034.6
YOLO26n-segPyTorch6.50.4080485.4
YOLO26n-segDEEPX7.90.392053.8
YOLO26n-posePyTorch7.60.4230506.3
YOLO26n-poseDEEPX8.80.459037.6
YOLO26n-obbPyTorch5.70.8171094.4
YOLO26n-obbDEEPX7.30.78356.4
ModelloFormatoStatoDimensioni (MB)accuratezza (top1)accuratezza (top5)Tempo di inferenza (ms/im)
YOLO26n-clsPyTorch5.60.4310.71623.8
YOLO26n-clsDEEPX5.90.3330.6862.7
Nota

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.

Suggerimenti per l'ottimizzazione delle prestazioni

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.txt

Aggiungi le righe seguenti alla fine del file:

dtparam=pciex1
dtparam=pciex1_gen=3

Salva ed esci (Ctrl+X, quindi Y e poi Invio), quindi riavvia:

sudo reboot

Controlla 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#

  1. Addestra il tuo modello usando la modalità Addestra di Ultralytics
  2. Esporta nel formato DEEPX utilizzando model.export(format="deepx")
  3. Convalida l'accuratezza con yolo val per verificare una perdita minima dovuta alla quantizzazione
  4. Esegui la previsione usando yolo predict per la convalida qualitativa
  5. Implementa la directory _deepx_model/ esportata sull'hardware NPU DEEPX utilizzando il runtime dx_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.

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 compilatore dx_com viene installato automaticamente se non è già presente.

    Esempio
    from 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_com quantizza 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 .dxnn esportato può essere eseguita su qualsiasi piattaforma Linux (x86-64 e ARM64) supportata dal runtime dx_engine.

  • L'esportazione crea una directory (ad esempio, yolo26n_deepx_model/) contenente:

    • yolo26n.dxnn — il binario NPU compilato
    • config.json — impostazioni di calibrazione e pre-elaborazione
    • metadata.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 data un dataset più piccolo se il tempo di compilazione diventa problematico con dataset di grandi dimensioni.

  • Il runtime DEEPX non è incluso in ultralytics e 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 Python dx_engine incluso. Consulta la sezione Installazione del runtime precedente per i comandi dettagliati passo per passo.

Commenti