Ultralytics YOLO27 : Rejoins la liste d’attente.
Get Started

Exporter des modèles Ultralytics YOLO vers DEEPX#

Le déploiement de modèles de vision par ordinateur sur du matériel NPU spécialisé nécessite un format de modèle compatible et optimisé. L’export des modèles Ultralytics YOLO au format DEEPX permet une inférence efficace 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 leur déploiement sur du matériel équipé de DEEPX.

Qu’est-ce que DEEPX ?#

DEEPX NPU Inference

DEEPX est une entreprise de semi-conducteurs spécialisée dans les unités de traitement neuronal (NPUs), conçues pour une inférence économe en énergie de l’apprentissage profond en périphérie. Les NPU DEEPX sont conçus pour les applications d’IA embarquées et industrielles exigeantes, avec un débit élevé et une consommation d’énergie minimale. Leur matériel convient particulièrement aux déploiements où la connectivité au cloud est peu fiable ou indésirable, comme en robotique, avec les caméras intelligentes et dans les systèmes d’automatisation industrielle.

Format d’export DEEPX#

L’export DEEPX produit un binaire de modèle compilé .dxnn, optimisé pour s’exécuter 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 propre au matériel, et génère un répertoire de modèle autonome prêt à être déployé.

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 INT8 lors de l’export, ce qui réduit considérablement leur taille et maximise le débit du NPU. Pour en savoir plus, consulte la page sur la quantification des modèles.
  • Optimisé pour les NPU : le format .dxnn est compilé spécifiquement pour le matériel NPU DEEPX et exploite des 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 sur le NPU, les modèles DEEPX consomment bien moins d’énergie qu’une inférence équivalente sur CPU ou GPU.
  • Précision basée sur l’étalonnage : l’export utilise un étalonnage basé sur EMA avec des images réelles du jeu de données afin de 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 simplifier le déploiement.

Tâches prises en charge#

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

TâcheYOLOv8YOLO11YOLO26
Détecter✅✅✅
Segmenter✅✅✅
Sémantique❌❌✅
Profondeur❌❌✅
Classifier✅✅✅
Pose✅✅✅
OBB✅✅✅

Exporter vers DEEPX : convertir ton modèle YOLO#

Exporte un modèle Ultralytics YOLO au format DEEPX et exécute l’inférence avec le modèle exporté.

Remarque

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

Installation#

Pour installer les paquets requis, exécute :

Installation
# Install the required package for YOLO
pip install ultralytics

Le compilateur dx_com est automatiquement installé depuis PyPI lors du premier export. DX-COM 2.4.1 fournit des wheels pour Python 3.8–3.14 sur Linux x86-64 avec glibc 2.31 ou une version ultérieure. Pour préinstaller les dépendances d’export :

pip install "ultralytics[export-deepx]"

Pour installer le dépôt en mode éditable, remplace "ultralytics[export-deepx]" par -e ".[export-base,export-deepx]". Pour reproduire l’environnement Python 3.14 et l’export de test utilisés par CI, exécute le générateur d’environnement existant depuis la racine du dépôt :

ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepx

Le générateur d’environnement nécessite uv ainsi qu’une version d’Ultralytics extraite et installée. Il applique automatiquement les contraintes de dépendances testées.

Utilisation#

Le format DEEPX prend en charge les modes Exporter, Prédire et Valider. 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 lancer l’inférence ou valider sa précision.

Export
from ultralytics import YOLO

# Charger un modèle YOLO26
model = YOLO("yolo26n.pt")

# Exporter le modèle au format DEEPX (quantize=8 est activé automatiquement)
model.export(format="deepx")  # creates 'yolo26n_deepx_model/'
Prédiction
from ultralytics import YOLO

# Charger le modèle DEEPX exporté
model = YOLO("yolo26n_deepx_model")

# Exécuter l’inférence
results = model("https://ultralytics.com/images/bus.jpg")
Valider
from ultralytics import YOLO

# Charger le modèle DEEPX exporté
model = YOLO("yolo26n_deepx_model")

# Valider la précision sur le jeu de données COCO8
metrics = model.val(data="coco8.yaml")

Arguments d’exportation#

ArgumentTypeValeur par défautDescription
formatstr'deepx'Format cible du modèle exporté, qui définit sa compatibilité avec le matériel NPU DEEPX.
imgszint ou tuple640Taille d’image souhaitée pour l’entrée du modèle. L’export DEEPX exige une entrée carrée : passe un entier (par exemple, 640) ou un tuple dont la hauteur est égale à la largeur.
quantizeint ou str8/autoPrécision de quantification. 8 (INT8) est obligatoire pour l’export DEEPX et est activé automatiquement si cette option n’est pas spécifiée. Remplace les indicateurs obsolètes half/int8.
simplifyboolTrueSimplifie le graphe ONNX intermédiaire avec onnxslim.
opsetintNoneSpécifie la version d’opset ONNX du graphe ONNX intermédiaire. Si elle n’est pas définie, la dernière version prise en charge est utilisée.
datastrNoneFichier YAML du jeu de données utilisé pour l’étalonnage INT8 ; pour la classification, un répertoire de jeu de données ou un nom de jeu de données intégré est requis. Si cette option est omise avec quantize=8, Ultralytics sélectionne le jeu de données d’étalonnage par défaut pour la tâche du modèle.
devicestrNoneSpécifie le périphérique utilisé pour l’export : GPU (device=0) ou CPU (device=cpu).
optimizeboolFalseActive une optimisation plus poussée du compilateur, ce qui réduit la latence d’inférence et augmente le temps de compilation.
Conseil

Effectue toujours l’export DEEPX sur une machine hôte Linux x86-64. Le compilateur dx_com ne prend pas en charge ARM64.

Pour en savoir plus sur le processus d’export, consulte la page de la documentation Ultralytics consacrée à l’export.

Structure de sortie#

Après un export réussi, 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 du modèle compilé que l’environnement d’exécution dx_engine charge directement sur le NPU. Le fichier metadata.yaml contient les noms des classes, la taille d’image et d’autres informations utilisées par le pipeline d’inférence Ultralytics.

Déployer les modèles YOLO DEEPX exportés#

Une fois ton modèle Ultralytics YOLO exporté avec succès au format DEEPX, l’étape suivante consiste à le déployer sur du matériel NPU DEEPX.

Installation de l’environnement d’exécution#

L’inférence nécessite le pilote NPU DEEPX, l’environnement d’exécution libdxrt et le paquet Python dx_engine.

Remarque

L’environnement d’exécution DEEPX prend en charge Linux x86-64 et ARM64 (par exemple, 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 l’environnement d’exécution est correctement installé avec dxrt-cli --version. Tu devrais obtenir un résultat 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 l’environnement d’exécution installé, lance l’inférence et la validation sur ton appareil DEEPX exactement comme indiqué dans la section Utilisation ci-dessus : le modèle exporté _deepx_model est chargé directement avec YOLO(...).

Visualisation avec dxtron#

dxtron est l’outil de visualisation de graphes de DEEPX, conçu pour inspecter le modèle compilé .dxnn.

Installe dxtron sur Linux x86-64 en téléchargeant le paquet .deb depuis le SDK DEEPX et en l’installant avec 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

Ouvre ensuite 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 évalué les modèles YOLO26 en comparant la vitesse et la précision de PyTorch et de DEEPX.

Performances
Raspberry Pi 5 DEEPX M1 NPU vs PyTorch benchmarks
ModèleFormatStatutTaille (Mo)metrics/mAP50-95(B)Temps d’inférence (ms/im)
YOLO26nPyTorch✅5.30.4760315.2
YOLO26nDEEPX✅6.60.466034.6
YOLO26n-segPyTorch✅6.50.4080485.4
YOLO26n-segDEEPX✅7.90.392053.8
YOLO26n-posePyTorch✅7.60.4230506.3
YOLO26n-poseDEEPX✅8.80.459037.6
YOLO26n-obbPyTorch✅5.70.8171094.4
YOLO26n-obbDEEPX✅7.30.78356.4
ModèleFormatStatutTaille (Mo)précision (top1)précision (top5)Temps d’inférence (ms/im)
YOLO26n-clsPyTorch✅5.60.4310.71623.8
YOLO26n-clsDEEPX✅5.90.3330.6862.7
Remarque

La validation des résultats ci-dessus a été réalisée avec 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étraitement ni le post-traitement.

Conseils d’optimisation des performances

Pour obtenir le meilleur débit d’inférence 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. Le débit attendu est de 8GT/s pour PCIe Gen3.

sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"
  1. Entraîne ton modèle avec le mode Train d’Ultralytics
  2. Exporte au format DEEPX avec model.export(format="deepx")
  3. Valide la précision avec yolo val afin de vérifier que la perte due à la quantification est minime
  4. Effectue des prédictions avec yolo predict pour une validation qualitative
  5. Déploie le répertoire exporté _deepx_model/ sur le matériel NPU DEEPX à l’aide de l’environnement d’exécution 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 :

  • 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 sans dépendance au cloud.
  • Automatisation industrielle : contrôle qualité sur l’appareil, détection des défauts et surveillance des processus en usine.
  • Robotique : navigation par vision, évitement d’obstacles et reconnaissance d’objets sur les robots autonomes et les drones.
  • Agriculture intelligente : surveillance de la santé des cultures, détection des nuisibles et estimation des rendements grâce à la vision par ordinateur en agriculture.
  • Analyse du commerce de détail : analyse des flux de clients, surveillance des rayons et suivi des stocks grâce à l’inférence en périphérie en temps réel.

Résumé#

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

L’association de 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 périphériques, avec un débit élevé et une faible consommation d’énergie pour les applications en temps réel.

Pour plus de détails sur l’utilisation, consulte le site officiel de DEEPX.

Par ailleurs, si tu souhaites en savoir plus sur les autres intégrations Ultralytics YOLO, consulte notre page des guides d’intégration. Tu y trouveras de nombreuses ressources et informations utiles.

FAQ#

  • Tu peux exporter ton modèle à l’aide de la méthode export() en Python ou via la CLI. L’export active automatiquement la quantification INT8 et utilise un jeu de données d’étalonnage pour minimiser la perte de précision. Le paquet 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 lors de l’export au moyen d’un étalonnage basé sur EMA avec des images réelles du jeu de données, ce qui permet au NPU d’offrir ses performances maximales. INT8 est toujours imposé pour les exports DEEPX : si tu demandes une autre précision, elle sera remplacée et un avertissement sera affiché.

  • L’export de modèles DEEPX (compilation) nécessite une machine hôte Linux x86-64. L’étape d’export n’est pas prise en charge sur ARM64 (aarch64) ni sur les machines Windows. L’inférence avec le modèle exporté .dxnn peut être exécutée sur toute plateforme Linux (x86-64 et ARM64) prise en charge par l’environnement d’exécution dx_engine.

  • L’export crée un répertoire (par exemple, yolo26n_deepx_model/) qui contient :

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

  • Le pipeline d’export DEEPX configure le compilateur dx_com pour effectuer 100 étapes d’étalonnage EMA sur des images du jeu de données d’étalonnage. Quelques centaines d’images suffisent généralement pour obtenir une bonne précision de quantification. Si le temps de compilation pose problème avec les grands jeux de données, indique à data un jeu de données plus petit.

  • L’environnement d’exécution DEEPX n’est pas inclus avec ultralytics et doit être installé séparément avant l’inférence. Sur les machines Linux x86-64 et ARM64 (par exemple, Raspberry Pi 5), installe le pilote NPU (dxrt-driver-dkms) et l’environnement d’exécution (libdxrt) depuis les versions publiées sur GitHub de DEEPX-AI, puis installe le wheel Python dx_engine fourni. Consulte la section Installation de l’environnement d’exécution ci-dessus pour les commandes détaillées.

Commentaires