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
Ce guide a été testé avec le Seeed Studio reComputer J4012 qui est basé sur NVIDIA Jetson Orin NX 16GB exécutant la version JP5.1.3 de JetPack et le Seeed Studio reComputer J1020 v2 qui est basé sur NVIDIA Jetson Nano 4GB exécutant la version JP4.6.4 de JetPack. Il devrait fonctionner sur l'ensemble de la gamme de matériel NVIDIA Jetson, y compris les plus récents et les plus anciens.
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
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 !
-
Installer les dépendances
-
Cloner le dépôt suivant
-
Téléchargez Ultralytics YOLO11 modèle de détection (.pt) de votre choix à partir de YOLO11 releases. Nous utilisons ici yolov8s.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)
-
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 :
-
Compiler la bibliothèque
-
Modifier le
config_infer_primary_yoloV8.txt
selon votre modèle (pour YOLOv8s avec 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
Si vous souhaitez convertir le modèle en FP16 précisionil suffit de fixer 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
-
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
Le tableau suivant résume les performances des modèles YOLOv8s à différents niveaux de précision TensorRT avec une taille d'entrée de 640x640 sur NVIDIA Jetson Orin NX 16GB.
Nom du modèle | Précision | Temps d'inférence (ms/im) | FPS |
---|---|---|---|
YOLOv8s | FP32 | 15.63 | 64 |
16ÈME PCRD | 7.94 | 126 | |
INT8 | 5.53 | 181 |
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 ?
Les performances des modèles YOLO11 sur NVIDIA Jetson Orin NX 16GB varient en fonction des niveaux de précision TensorRT . Par exemple, les modèles YOLOv8s atteignent :
- Précision FP32: 15,63 ms/im, 64 FPS
- Précision FP16: 7,94 ms/im, 126 FPS
- Précision INT8: 5,53 ms/im, 181 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.