Ultralytics YOLO26 sur NVIDIA Jetson avec DeepStream SDK et TensorRT
Regarder : Comment utiliser les modèles Ultralytics YOLO26 avec NVIDIA Deepstream sur Jetson Orin NX 🚀
Ce guide complet fournit une présentation détaillée du déploiement d'Ultralytics YOLO26 sur les appareils NVIDIA Jetson à l'aide du DeepStream SDK et de TensorRT. Ici, nous utilisons TensorRT pour maximiser les performances d'inférence sur la plateforme Jetson.

Remarque
Ce guide a été testé avec NVIDIA Jetson Orin Nano Super Developer Kit exécutant la dernière version stable de JetPack JP6.1, Seeed Studio reComputer J4012 qui est basé sur NVIDIA Jetson Orin NX 16GB exécutant la version JetPack de JP5.1.3 et Seeed Studio reComputer J1020 v2 qui est basé sur NVIDIA Jetson Nano 4GB exécutant la version JetPack de JP4.6.4. Il est prévu qu'il fonctionne sur toute la gamme de matériel NVIDIA Jetson, y compris les versions les plus récentes et les versions héritées.
Qu'est-ce que NVIDIA DeepStream ?
NVIDIA's DeepStream SDK est une boîte à outils complète d'analyse de flux basée sur GStreamer pour le traitement multi-capteurs basé sur l'IA, la vidéo, l'audio et la compréhension d'images. Il est idéal pour les développeurs d'IA de vision, les partenaires logiciels, les startups et les OEM qui créent des applications et des services IVA (Intelligent Video Analytics). Vous pouvez désormais créer des pipelines de traitement de flux qui intègrent des réseaux neuronaux et d'autres tâches de traitement complexes telles que le suivi, l'encodage/décodage vidéo et le rendu vidéo. Ces pipelines permettent l'analyse en temps réel des données vidéo, d'image et de capteur. La prise en charge multiplateforme de DeepStream vous offre un moyen plus rapide et plus facile de développer des applications et des services d'IA de vision sur site, à la périphérie et dans le cloud.
Prérequis
Avant de commencer à suivre ce guide :
- Consultez notre documentation, Guide de démarrage rapide : NVIDIA Jetson avec Ultralytics YOLO26 pour configurer votre appareil NVIDIA Jetson avec Ultralytics YOLO26
- Installer SDK DeepStream selon la version de JetPack
- Pour JetPack 4.6.4, installez DeepStream 6.0.1.
- Pour JetPack 5.1.3, installez DeepStream 6.3.
- Pour JetPack 6.1, installez DeepStream 7.1.
Astuce
Dans ce guide, nous avons utilisé la méthode d'installation du paquet Debian de DeepStream SDK sur le périphérique Jetson. Vous pouvez également consulter la page DeepStream SDK sur Jetson (Archivé) pour accéder aux anciennes versions de DeepStream.
Configuration DeepStream pour YOLO26
Ici, nous utilisons le dépôt GitHub marcoslucianops/DeepStream-Yolo qui inclut la prise en charge du SDK NVIDIA DeepStream pour les modèles YOLO. Nous apprécions les efforts de marcoslucianops pour ses contributions !
Installer Ultralytics avec les dépendances nécessaires
cd ~ pip install -U pip git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e ".[export]" onnxslimClonez le référentiel DeepStream-Yolo
cd ~ git clone https://github.com/marcoslucianops/DeepStream-YoloCopier le
export_yolo26.pyfichier depuisDeepStream-Yolo/utilsrépertoire vers leultralyticsdossiercp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics cd ultralyticsTéléchargez le modèle de détection Ultralytics YOLO26 (.pt) de votre choix depuis les versions de YOLO26. Ici, nous utilisons yolo26s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.ptRemarque
Vous pouvez également utiliser un modèle YOLO26 entraîné sur mesure.
Convertir le modèle en ONNX
python3 export_yolo26.py -w yolo26s.ptPassez les arguments ci-dessous à la commande ci-dessus
Pour DeepStream 5.1, supprimez le
--dynamicarg et utiliseropset12 ou moins. La valeur par défautopsetest de 17.--opset 12Pour modifier la taille de l'inférence (par défaut : 640)
-s SIZE --size SIZE -s HEIGHT WIDTH --size HEIGHT WIDTHExemple pour 1280 :
-s 1280 or -s 1280 1280Pour simplifier le modèle ONNX (DeepStream >= 6.0)
--simplifyPour utiliser la taille de lot dynamique (DeepStream >= 6.1)
--dynamicPour utiliser une taille de lot statique (exemple pour une taille de lot = 4)
--batch 4Copier le code généré
.onnxfichier de modèle etlabels.txtfichier auDeepStream-Yolodossiercp yolo26s.pt.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-YoloDéfinir la version de CUDA en fonction de la version de JetPack installée
Pour JetPack 4.6.4 :
export CUDA_VER=10.2Pour JetPack 5.1.3 :
export CUDA_VER=11.4Pour JetPack 6.1 :
export CUDA_VER=12.6Compiler la bibliothèque
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_YoloModifier le
config_infer_primary_yolo26.txtfichier selon votre modèle (pour YOLO26s avec 80 classes)[property] ... onnx-file=yolo26s.pt.onnx ... num-detected-classes=80 ...Modifier le
deepstream_app_configfichier... [primary-gie] ... config-file=config_infer_primary_yolo26.txtVous pouvez également modifier la source vidéo dans
deepstream_app_configfichier. Ici, un fichier vidéo par défaut est chargé... [source0] ... uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
Exécuter l'inférence
deepstream-app -c deepstream_app_config.txt
Remarque
La génération du fichier moteur TensorRT prendra beaucoup de temps avant de démarrer l'inférence. Veuillez donc patienter.

Astuce
Si vous souhaitez convertir le modèle en précision FP16, définissez simplement model-engine-file=model_b1_gpu0_fp16.engine et network-mode=2 à l'intérieur de config_infer_primary_yolo26.txt
Calibration INT8
Si vous souhaitez utiliser la précision INT8 pour l'inférence, vous devez suivre les étapes ci-dessous :
Remarque
Actuellement, INT8 ne fonctionne pas avec TensorRT 10.x. Cette section du guide a été testée avec TensorRT 8.x, qui devrait fonctionner.
Définir
OPENCVvariable d'environnementexport OPENCV=1Compiler la bibliothèque
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_YoloPour le dataset COCO, téléchargez le val2017, extraire et déplacer vers
DeepStream-YolodossierCréer un nouveau répertoire pour les images d'étalonnage
mkdir calibrationExécutez ce qui suit pour sélectionner 1000 images aléatoires du dataset COCO pour exécuter la calibration
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ doneRemarque
NVIDIA recommande au moins 500 images pour obtenir une bonne précision. Dans cet exemple, 1000 images sont choisies pour obtenir une meilleure précision (plus d'images = plus de précision). Vous pouvez le définir à partir de head -1000. Par exemple, pour 2000 images, head -2000. Ce processus peut prendre beaucoup de temps.
Créer le
calibration.txtfichier avec toutes les images sélectionnéesrealpath calibration/*jpg > calibration.txtDéfinir les variables d'environnement
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1Remarque
Des valeurs INT8_CALIB_BATCH_SIZE plus élevées entraîneront une plus grande précision et une vitesse d'étalonnage plus rapide. Définissez-le en fonction de la mémoire de votre GPU.
Mettre à jour le
config_infer_primary_yolo26.txtfichierDe
... model-engine-file=model_b1_gpu0_fp32.engine #int8-calib-file=calib.table ... network-mode=0 ...À
... model-engine-file=model_b1_gpu0_int8.engine int8-calib-file=calib.table ... network-mode=1 ...
Exécuter l'inférence
deepstream-app -c deepstream_app_config.txt
Configuration MultiStream
Regarder : Comment exécuter plusieurs flux avec le DeepStream SDK sur Jetson Nano en utilisant Ultralytics YOLO26 🎉
Pour configurer plusieurs flux sous une seule application DeepStream, apportez les modifications suivantes au deepstream_app_config.txt fichier :
Modifiez les lignes et les colonnes pour créer un affichage en grille en fonction du nombre de flux que vous souhaitez avoir. Par exemple, pour 4 flux, nous pouvons ajouter 2 lignes et 2 colonnes.
[tiled-display] rows=2 columns=2Définir
num-sources=4et ajoutez leurientrées pour les quatre flux.[source0] enable=1 type=3 uri=path/to/video1.jpg uri=path/to/video2.jpg uri=path/to/video3.jpg uri=path/to/video4.jpg num-sources=4
Exécuter l'inférence
deepstream-app -c deepstream_app_config.txt

Résultats des benchmarks
Les benchmarks suivants résument les performances des modèles YOLO26 à différents niveaux de précision TensorRT avec une taille d'entrée de 640x640 sur NVIDIA Jetson Orin NX 16 Go.
Tableau comparatif

Tableau comparatif détaillé
Performance
| Format | Statut | Temps d'inférence (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
| Format | Statut | Temps d'inférence (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 14.53 |
| TensorRT (FP16) | ✅ | 7.91 |
| TensorRT (INT8) | ✅ | 6.05 |
| Format | Statut | Temps d'inférence (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 32.05 |
| TensorRT (FP16) | ✅ | 15.55 |
| TensorRT (INT8) | ✅ | 10.43 |
| Format | Statut | Temps d'inférence (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 39.68 |
| TensorRT (FP16) | ✅ | 19.88 |
| TensorRT (INT8) | ✅ | 13.64 |
| Format | Statut | Temps d'inférence (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 80.65 |
| TensorRT (FP16) | ✅ | 39.06 |
| TensorRT (INT8) | ✅ | 22.83 |
Remerciements
Ce guide a été initialement créé par nos amis de Seeed Studio, Lakshantha et Elaine.
FAQ
Comment configurer Ultralytics YOLO26 sur un appareil NVIDIA Jetson ?
Pour configurer Ultralytics YOLO26 sur un appareil NVIDIA Jetson, vous devez d'abord installer le DeepStream SDK compatible avec votre version de JetPack. Suivez le guide étape par étape de notre Guide de démarrage rapide pour configurer votre NVIDIA Jetson pour le déploiement de YOLO26.
Quel est l'avantage d'utiliser TensorRT avec YOLO26 sur NVIDIA Jetson ?
L'utilisation de TensorRT avec YOLO26 optimise le modèle pour l'inférence, réduisant considérablement la latence et améliorant le débit sur les appareils NVIDIA Jetson. TensorRT offre une inférence de deep learning haute performance et à faible latence grâce à la fusion de couches, la calibration de précision et l'auto-optimisation des noyaux. Cela conduit à une exécution plus rapide et plus efficace, particulièrement utile pour les applications en temps réel comme l'analyse vidéo et les machines autonomes.
Puis-je exécuter Ultralytics YOLO26 avec le DeepStream SDK sur différents matériels NVIDIA Jetson ?
Oui, le guide de déploiement d'Ultralytics YOLO26 avec le SDK DeepStream et TensorRT est compatible avec toute la gamme NVIDIA Jetson. Cela inclut des appareils comme le Jetson Orin NX 16GB avec JetPack 5.1.3 et le Jetson Nano 4GB avec JetPack 4.6.4. Référez-vous à la section Configuration DeepStream pour YOLO26 pour les étapes détaillées.
Comment puis-je convertir un modèle YOLO26 en ONNX pour DeepStream ?
Pour convertir un modèle YOLO26 au format ONNX en vue d'un déploiement avec DeepStream, utilisez le utils/export_yolo26.py script à partir du DeepStream-Yolo référentiel.
Voici un exemple de commande :
python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplify
Pour plus de détails sur la conversion de modèles, consultez notre section sur l'exportation de modèles.
Quels sont les benchmarks de performance pour YOLO sur NVIDIA Jetson Orin NX ?
Les performances des modèles YOLO26 sur NVIDIA Jetson Orin NX 16GB varient en fonction des niveaux de précision de TensorRT. Par exemple, les modèles YOLO26s atteignent :
- Précision FP32 : 14,6 ms/im, 68,5 FPS
- Précision FP16 : 7,94 ms/im, 126 FPS
- Précision INT8 : 5,95 ms/im, 168 FPS
Ces benchmarks soulignent l'efficacité et la capacité d'utilisation des modèles YOLO26 optimisés par TensorRT sur le matériel NVIDIA Jetson. Pour plus de détails, consultez notre section Résultats des Benchmarks.