Ultralytics YOLO11 sur NVIDIA Jetson en utilisant DeepStream SDK et TensorRT
Regarder : Comment exécuter plusieurs flux avec DeepStream SDK sur Jetson Nano en utilisant Ultralytics YOLO11
Ce guide complet fournit une marche à suivre détaillée pour déployer Ultralytics YOLO11 sur NVIDIA Jetson devices en utilisant DeepStream SDK et TensorRT. Ici, nous utilisons TensorRT pour maximiser les performances d'inférence sur la plateforme Jetson.
Note
This guide has been tested with NVIDIA Jetson Orin Nano Super Developer Kit running the latest stable JetPack release of JP6.1, Seeed Studio reComputer J4012 which is based on NVIDIA Jetson Orin NX 16GB running JetPack release of JP5.1.3 and Seeed Studio reComputer J1020 v2 which is based on NVIDIA Jetson Nano 4GB running JetPack release of JP4.6.4. It is expected to work across all the NVIDIA Jetson hardware lineup including latest and legacy.
Qu'est-ce que NVIDIA DeepStream ?
NVIDIADeepStream SDK est une boîte à outils complète d'analyse en continu basée sur GStreamer pour le traitement multi-capteurs basé sur l'IA, la compréhension de la vidéo, de l'audio et de l'image. Il est idéal pour les développeurs d'IA visionnaire, les partenaires logiciels, les startups et les équipementiers 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, le codage/décodage vidéo et le rendu vidéo. Ces pipelines permettent l'analyse en temps réel des données vidéo, des images et des capteurs. La prise en charge multiplateforme de DeepStream vous permet de développer plus rapidement et plus facilement des applications et des services d'IA visionnaire sur site, en périphérie et dans le nuage.
Conditions préalables
Avant de commencer Ă suivre ce guide :
- Consultez notre documentation, Guide de démarrage rapide : NVIDIA Jetson avec Ultralytics YOLO11 pour configurer votre appareil NVIDIA Jetson avec Ultralytics YOLO11
-
Installer DeepStream SDK en fonction de la version de JetPack
- Pour JetPack 4.6.4, installer DeepStream 6.0.1
- Pour JetPack 5.1.3, installer DeepStream 6.3
- For JetPack 6.1, install DeepStream 7.1
Conseil
Dans ce guide, nous avons utilisé la méthode du paquet Debian pour installer le SDK DeepStream sur l'appareil Jetson. Vous pouvez également visiter le site DeepStream SDK on Jetson (Archivé) pour accéder aux anciennes versions de DeepStream.
Configuration de DeepStream pour YOLO11
Nous utilisons ici le dépôt GitHub marcoslucianops/DeepStream-Yolo qui inclut NVIDIA DeepStream SDK support pour les modèles YOLO . Nous apprécions les efforts de marcoslucianops pour ses contributions !
-
Install Ultralytics with necessary dependencies
-
Clone the DeepStream-Yolo repository
-
Copy the
export_yoloV8.py
file fromDeepStream-Yolo/utils
directory to theultralytics
dossierNote
export_yoloV8.py
works for both YOLOv8 and YOLO11 models. -
Download Ultralytics YOLO11 detection model (.pt) of your choice from YOLO11 releases. Here we use yolo11s.pt.
Note
Vous pouvez également utiliser un modèle de formation personnalisé YOLO11 .
-
Convertir le modèle en ONNX
Passez les arguments suivants Ă la commande ci-dessus
Pour DeepStream 6.0.1, utilisez l'opset 12 ou une valeur inférieure. L'opset par défaut est 16.
Pour modifier la taille de l'inférence (par défaut : 640)
Exemple pour 1280 :
Pour simplifier le modèle ONNX (DeepStream >= 6.0)
Pour utiliser la taille dynamique des lots (DeepStream >= 6.1)
Pour utiliser une taille de lot statique (exemple pour une taille de lot = 4)
-
Copy the generated
.onnx
model file andlabels.txt
file to theDeepStream-Yolo
dossier -
Définir la version de CUDA en fonction de la version de JetPack installée
Pour JetPack 4.6.4 :
Pour JetPack 5.1.3 :
For Jetpack 6.1:
-
Compiler la bibliothèque
-
Modifier le
config_infer_primary_yoloV8.txt
file according to your model (for YOLO11s with 80 classes) -
Modifier le
deepstream_app_config
fichier -
Vous pouvez également modifier la source vidéo dans
deepstream_app_config
fichier. Ici, un fichier vidéo par défaut est chargé
Exécuter l'inférence
Note
Il faudra beaucoup de temps pour générer le fichier du moteur TensorRT avant de commencer l'inférence. Veuillez donc faire preuve de patience.
Conseil
If you want to convert the model to FP16 precision, simply set model-engine-file=model_b1_gpu0_fp16.engine
et network-mode=2
à l'intérieur config_infer_primary_yoloV8.txt
INT8 Calibration
Si vous souhaitez utiliser la précision INT8 pour l'inférence, vous devez suivre les étapes suivantes
Note
Currently INT8 does not work with TensorRT 10.x. This section of the guide has been tested with TensorRT 8.x which is expected to work.
-
Set (jeu de mots)
OPENCV
variable d'environnement -
Compiler la bibliothèque
-
Pour le jeu de données COCO, téléchargez le fichier val2017, l'extraire et la déplacer vers
DeepStream-Yolo
dossier -
Créer un nouveau répertoire pour les images d'étalonnage
-
Exécutez le programme suivant pour sélectionner 1000 images aléatoires de l'ensemble de données COCO afin de procéder à l'étalonnage.
Note
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 régler le nombre d'images à partir de -1000. Par exemple, pour 2000 images, la tête est fixée à -2000. Ce processus peut prendre beaucoup de temps.
-
Créer le
calibration.txt
fichier avec toutes les images sélectionnées -
DĂ©finir les variables d'environnement
Note
Des valeurs plus élevées de INT8_CALIB_BATCH_SIZE se traduiront par une plus grande précision et une vitesse d'étalonnage plus rapide. Réglez-la en fonction de votre mémoire GPU .
-
Mettre Ă jour le
config_infer_primary_yoloV8.txt
fichierDe
Vers
Exécuter l'inférence
Configuration du multi-stream
Pour mettre en place plusieurs flux dans le cadre d'une seule application deepstream, vous pouvez apporter les modifications suivantes au fichier deepstream_app_config.txt
fichier
-
Modifiez les lignes et les colonnes pour construire une grille d'affichage en fonction du nombre de flux que vous souhaitez avoir. Par exemple, pour 4 flux, nous pouvons ajouter 2 lignes et 2 colonnes.
-
Set (jeu de mots)
num-sources=4
et ajouteruri
de l'ensemble des 4 flux
Exécuter l'inférence
RĂ©sultats de l'Ă©valuation comparative
The following benchmarks summarizes how YOLO11 models perform at different TensorRT precision levels with an input size of 640x640 on NVIDIA Jetson Orin NX 16GB.
Tableau de comparaison
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 YOLO11 sur un appareil NVIDIA Jetson ?
Pour configurer Ultralytics YOLO11 sur un appareil NVIDIA Jetson, vous devez d'abord installer le SDK DeepStream compatible avec votre version de JetPack. Suivez les étapes de notre Guide de démarrage rapide pour configurer votre NVIDIA Jetson pour le déploiement de YOLO11 .
Quel est l'avantage d'utiliser TensorRT avec YOLO11 sur NVIDIA Jetson ?
L'utilisation de TensorRT avec YOLO11 optimise le modèle pour l'inférence, réduisant considérablement la latence et améliorant le débit sur les appareils Jetson NVIDIA . TensorRT fournit une inférence d'apprentissage profond haute performance et à faible latence grâce à la fusion des couches, à l'étalonnage de précision et à l'auto-réglage du noyau. Cela permet une exécution plus rapide et plus efficace, particulièrement utile pour les applications en temps réel telles que l'analyse vidéo et les machines autonomes.
Puis-je exécuter Ultralytics YOLO11 avec DeepStream SDK sur différents matériels NVIDIA Jetson ?
Oui, le guide de déploiement de Ultralytics YOLO11 avec le SDK DeepStream et TensorRT est compatible avec l'ensemble de la gamme NVIDIA Jetson. Cela inclut des appareils tels que la Jetson Orin NX 16GB avec JetPack 5.1.3 et la Jetson Nano 4GB avec JetPack 4.6.4. Reportez-vous à la section Configuration DeepStream pour YOLO11 pour connaître les étapes détaillées.
Comment puis-je convertir un modèle YOLO11 en ONNX pour DeepStream ?
Pour convertir un modèle YOLO11 au format ONNX afin de le déployer avec DeepStream, utilisez la fonction utils/export_yoloV8.py
à partir du script DeepStream-Yolo dépôt.
Voici un exemple de commande :
Pour plus de détails sur la conversion des modèles, consultez notre section sur l'exportation de modèles.
Quels sont les benchmarks de performance pour YOLO sur NVIDIA Jetson Orin NX ?
The performance of YOLO11 models on NVIDIA Jetson Orin NX 16GB varies based on TensorRT precision levels. For example, YOLO11s models achieve:
- FP32 Precision: 14.6 ms/im, 68.5 FPS
- Précision FP16: 7,94 ms/im, 126 FPS
- INT8 Precision: 5.95 ms/im, 168 FPS
TensorRTCes repères soulignent l'efficacité et la capacité d'utilisation des modèles YOLO11 optimisés sur le matériel NVIDIA Jetson. Pour plus de détails, voir notre section Résultats des tests de performance.