YOLO Vision 2026 :

Exportation DEEPX pour les modèles Ultralytics YOLO#

Déployer des modèles de vision par ordinateur sur du matériel NPU spécialisé nécessite un format de modèle compatible et optimisé. Exporter des modèles Ultralytics YOLO au format DEEPX permet une inférence efficace et quantifiée en INT8 sur les accélérateurs NPU DEEPX. Ce guide t'accompagne dans la conversion de tes modèles YOLO au format DEEPX et dans leur déploiement sur du matériel alimenté par DEEPX.

Qu'est-ce que DEEPX ?#

DEEPX NPU Inference

DEEPX est une entreprise de semi-conducteurs spécialisée dans l'IA, axée sur les unités de traitement neuronal (NPU) conçues pour une inférence d'apprentissage profond économe en énergie à la périphérie (edge). Les NPU DEEPX sont conçus pour des applications d'IA industrielles et embarquées exigeantes, offrant un débit élevé avec une consommation d'énergie minimale. Leur matériel est parfaitement adapté aux scénarios de déploiement où la connectivité cloud est peu fiable ou non souhaitée, tels que la robotique, les caméras intelligentes et les systèmes d'automatisation industrielle.

Format d'exportation DEEPX#

L'exportation DEEPX produit un binaire de modèle compilé .dxnn optimisé pour l'exécution sur le matériel NPU DEEPX. Le pipeline de compilation utilise la boîte à outils dx_com pour effectuer la quantification INT8 et l'optimisation spécifique au matériel, générant un répertoire de modèle autonome prêt pour le déploiement.

Principales caractéristiques des modèles DEEPX#

Les modèles DEEPX offrent plusieurs avantages pour le déploiement en périphérie :

  • Quantification INT8 : Les modèles sont quantifiés en précision INT8 lors de l'exportation, ce qui réduit considérablement la taille du modèle et maximise le débit du NPU. En savoir plus sur la quantification de modèle.
  • Optimisé pour NPU : Le format .dxnn est spécifiquement compilé pour le matériel NPU DEEPX, en tirant parti d'unités d'accélération dédiées pour une inférence rapide et efficace.
  • Faible consommation d'énergie : En déchargeant l'inférence vers le NPU, les modèles DEEPX consomment beaucoup moins d'énergie qu'une inférence CPU ou GPU équivalente.
  • Précision basée sur l'étalonnage : L'exportation utilise un étalonnage basé sur EMA avec des images de jeu de données réelles pour minimiser la perte de précision lors de la quantification.
  • Sortie autonome : Le répertoire du modèle exporté regroupe le binaire compilé, la configuration d'étalonnage et les métadonnées pour un déploiement simplifié.

Tâches prises en charge#

L'export DEEPX prend en charge les sept tâches d'Ultralytics. La segmentation sémantique et l'estimation de la profondeur ne sont disponibles qu'avec YOLO26, la seule famille qui intègre ces têtes.

TâcheYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Exporter vers DEEPX : Conversion de ton modèle YOLO#

Exporte un modèle Ultralytics YOLO au format DEEPX et lance l'inférence avec le modèle exporté.

Remarque

L'exportation DEEPX n'est prise en charge que sur les machines Linux x86-64. ARM64 (aarch64) n'est pas pris en charge pour l'étape d'exportation. Cependant, les modèles dxnn exportés sont entièrement compatibles et exécutables sur des plateformes ARM64.

Installation#

Pour installer les paquets requis, exécute :

Installation
# Install the required package for YOLO
pip install ultralytics

Le paquet du compilateur dx_com sera automatiquement installé à partir du dépôt du SDK DEEPX lors de la première exportation. Pour des instructions détaillées et les meilleures pratiques liées au processus d'installation, consulte notre guide d'installation Ultralytics. Si tu rencontres des difficultés lors de l'installation des paquets requis pour YOLO, consulte notre guide des problèmes courants pour trouver des solutions et des astuces.

Utilisation#

Le format DEEPX prend en charge les modes Export, Predict et Validate. L'inférence et la validation s'exécutent sur le matériel NPU DEEPX. Exporte ton modèle, puis charge le modèle exporté pour exécuter l'inférence ou valider sa précision.

Exporter (Export)
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/'
Prédire (Predict)
from ultralytics import YOLO

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

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

Arguments d'exportation#

ArgumentTypeDéfautDescription
formatstr'deepx'Format cible pour le modèle exporté, définissant la compatibilité avec le matériel NPU DEEPX.
imgszint ou tuple640Taille d'image souhaitée pour l'entrée du modèle. L'exportation DEEPX nécessite une entrée carrée — passe un entier (par exemple, 640) ou un tuple où la hauteur est égale à la largeur.
quantizeint ou str8/autoPrécision de quantification. 8 (INT8) est requis pour l'exportation DEEPX et activé automatiquement s'il n'est pas spécifié. Remplace les drapeaux obsolètes half/int8.
simplifyboolTrueSimplifie le graphe ONNX intermédiaire avec onnxslim.
opsetintNoneSpécifie la version de l'opset ONNX pour le graphe ONNX intermédiaire. Si elle n'est pas définie, la dernière version prise en charge est utilisée.
datastrNoneYAML de dataset utilisé pour la calibration INT8 ; la classification prend à la place un répertoire de dataset ou un nom de dataset intégré. S'il est omis avec quantize=8, Ultralytics sélectionne le dataset de calibration par défaut pour la tâche du modèle.
devicestrNoneSpécifie l'appareil pour l'exportation : GPU (device=0) ou CPU (device=cpu).
optimizeboolFalseActive une optimisation du compilateur plus élevée qui réduit la latence d'inférence et augmente le temps de compilation.
Astuce

Exécute toujours l'exportation DEEPX sur un hôte x86-64 Linux. Le compilateur dx_com ne prend pas en charge ARM64.

Pour plus de détails sur le processus d'exportation, visite la page de documentation d'Ultralytics sur l'exportation.

Structure de sortie#

Après une exportation réussie, un répertoire de modèle est créé avec la structure suivante :

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

Le fichier .dxnn est le binaire de modèle compilé que le runtime dx_engine charge directement sur le NPU. Le metadata.yaml contient les noms des classes, la taille de l'image et d'autres informations utilisées par le pipeline d'inférence Ultralytics.

Déploiement des modèles YOLO DEEPX exportés#

Une fois que tu as exporté avec succès ton modèle Ultralytics YOLO au format DEEPX, l'étape suivante consiste à déployer ces modèles sur le matériel NPU DEEPX.

Installation du runtime#

L'inférence nécessite le pilote NPU DEEPX, le runtime libdxrt et le paquet Python dx_engine.

Remarque

Le runtime DEEPX prend en charge à la fois Linux x86-64 et ARM64 (par ex. 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

Vérifie que le runtime est correctement installé avec dxrt-cli --version. Tu devrais voir une sortie similaire à :

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

Une fois le runtime installé, exécute l'inférence et la validation sur ton appareil DEEPX exactement comme indiqué dans la section Utilisation ci-dessus — le fichier exporté _deepx_model se charge directement avec YOLO(...).

Visualisation avec dxtron#

dxtron est le visualiseur de graphes de DEEPX pour inspecter le modèle compilé .dxnn.

Installe dxtron sur x86-64 Linux en téléchargeant le paquet .deb à partir du SDK DEEPX et en l'installant via 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

Ensuite, ouvre ton modèle exporté :

dxtron yolo26n_deepx_model/yolo26n.dxnn
Remarque

dxtron est disponible pour les plateformes x86-64 et aarch64.

Benchmarks#

L'équipe Ultralytics a benchmarké les modèles YOLO26, en comparant la vitesse et la précision entre PyTorch et DEEPX.

Performance
Raspberry Pi 5 DEEPX M1 NPU vs PyTorch benchmarks
ModèleFormatStatutTaille (Mo)métriques/mAP50-95(B)Temps d'inférence (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
ModèleFormatStatutTaille (Mo)acc (top1)acc (top5)Temps d'inférence (ms/im)
YOLO26n-clsPyTorch5.60.4310.71623.8
YOLO26n-clsDEEPX5.90.3330.6862.7
Remarque

La validation des benchmarks ci-dessus a été effectuée en utilisant coco128 pour la détection, coco128-seg pour la segmentation, coco8-pose pour l'estimation de pose, imagenet100 pour la classification et dota128 pour les modèles OBB. Le temps d'inférence n'inclut pas le pré/post-traitement.

Conseils d'optimisation des performances

Pour obtenir le meilleur débit d'inférence à partir du NPU DX-M1 connecté à un Raspberry Pi 5, ouvre le fichier de configuration de démarrage et active la prise en charge de PCIe Gen 3.

sudo nano /boot/firmware/config.txt

Ajoute les lignes suivantes à la fin du fichier :

dtparam=pciex1
dtparam=pciex1_gen=3

Enregistre et quitte (Ctrl+X, puis Y, puis Entrée), puis redémarre :

sudo reboot

Vérifie la génération PCIe. La vitesse attendue est de 8GT/s pour PCIe Gen3.

sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"

Flux de travail recommandé#

  1. Entraîne ton modèle en utilisant le Mode Entraînement d'Ultralytics
  2. Exporte au format DEEPX en utilisant model.export(format="deepx")
  3. Valide la précision avec yolo val pour vérifier une perte de quantification minimale
  4. Prédis en utilisant yolo predict pour une validation qualitative
  5. Déploie le répertoire exporté _deepx_model/ sur le matériel NPU DEEPX en utilisant le runtime dx_engine

Applications concrètes#

Les modèles YOLO déployés sur le matériel NPU DEEPX sont bien adaptés à un large éventail d'applications d'IA en périphérie (edge AI) :

  • Surveillance intelligente : Détection d'objets en temps réel pour les systèmes de sécurité et de surveillance avec une faible consommation d'énergie et aucune dépendance au cloud.
  • Automatisation industrielle : contrôle qualité sur l'appareil, détection de défauts et surveillance de processus dans des environnements d'usine.
  • Robotique : navigation basée sur la vision, évitement d'obstacles et reconnaissance d'objets sur des robots et drones autonomes.
  • Agriculture intelligente : Surveillance de la santé des cultures, détection des nuisibles et estimation des rendements en utilisant la vision par ordinateur en agriculture.
  • Analyse de vente au détail : analyse du flux client, surveillance des rayons et suivi des stocks avec une inférence en temps réel sur l'appareil.

Résumé#

Dans ce guide, tu as appris à exporter des modèles Ultralytics YOLO au format DEEPX et à les déployer sur le matériel NPU DEEPX. Le pipeline d'exportation utilise la calibration INT8 et le compilateur dx_com pour produire un binaire optimisé pour le matériel .dxnn, tandis que le runtime dx_engine gère l'inférence sur l'appareil.

La combinaison d'Ultralytics YOLO et de la technologie NPU de DEEPX offre une solution efficace pour exécuter des charges de travail avancées de vision par ordinateur sur des appareils embarqués et en périphérie, offrant un débit élevé avec une faible consommation d'énergie pour les applications en temps réel.

Pour plus de détails sur l'utilisation, visite le site Web officiel de DEEPX.

De plus, si tu souhaites en savoir plus sur d'autres intégrations d'Ultralytics YOLO, visite notre page de guide d'intégration. Tu y trouveras de nombreuses ressources et informations utiles.

FAQ#

  • Tu peux exporter ton modèle en utilisant la méthode export() en Python ou via la CLI. L'exportation active automatiquement la quantification INT8 et utilise un dataset de calibration pour minimiser la perte de précision. Le paquet du compilateur dx_com est installé automatiquement s'il n'est pas déjà présent.

    Exemple
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="deepx")
  • Les NPU DEEPX sont conçus pour exécuter des calculs INT8 avec une efficacité maximale. Le compilateur dx_com quantifie le modèle pendant l'exportation en utilisant une calibration basée sur l'EMA avec des images de dataset réelles, permettant au NPU de délivrer toutes ses performances. L'INT8 est toujours appliqué pour les exportations DEEPX — si tu demandes une précision différente, elle sera remplacée avec un avertissement.

  • L'exportation (compilation) de modèle DEEPX nécessite un hôte x86-64 Linux. L'étape d'exportation n'est pas prise en charge sur les machines ARM64 (aarch64) et Windows. L'inférence utilisant le modèle exporté .dxnn peut être exécutée sur n'importe quelle plateforme Linux (x86-64 et ARM64) prise en charge par le runtime dx_engine.

  • L'exportation crée un répertoire (par exemple, yolo26n_deepx_model/) contenant :

    • yolo26n.dxnn — le binaire NPU compilé
    • config.json — les paramètres de calibration et de prétraitement
    • metadata.yaml — les métadonnées du modèle incluant les noms des classes et la taille de l'image
  • Oui. Tout modèle entraîné à l'aide du Mode Entraînement d'Ultralytics et exporté avec format="deepx" peut être déployé sur le matériel NPU DEEPX, à condition qu'il utilise des opérations de couches prises en charge. L'exportation prend en charge les sept tâches Ultralytics : la détection, la segmentation d'instances, la segmentation sémantique, l'estimation de profondeur, la classification, l'estimation de pose et la boîte englobante orientée (OBB).

  • Le pipeline d'exportation DEEPX utilise chaque image du dataset de calibration avec la méthode de calibration EMA. Quelques centaines d'images suffisent généralement pour obtenir une bonne précision de quantification. Pointe data vers un dataset plus petit si le temps de compilation devient un problème sur les grands datasets.

  • Le runtime DEEPX n'est pas fourni avec ultralytics et doit être installé séparément avant d'exécuter l'inférence. Sur les machines x86-64 Linux et ARM64 Linux (par exemple, Raspberry Pi 5), installe le pilote NPU (dxrt-driver-dkms) et le runtime (libdxrt) à partir des versions GitHub de DEEPX-AI, puis installe le wheel Python groupé dx_engine. Consulte la section Installation du runtime ci-dessus pour les commandes étape par étape.

Commentaires