Skip to content

Guide de démarrage rapide : NVIDIA Jetson avec Ultralytics YOLOv8

Ce guide complet fournit une marche à suivre détaillée pour déployer Ultralytics YOLOv8 sur NVIDIA Jetson devices. En outre, il présente des repères de performance pour démontrer les capacités de YOLOv8 sur ces appareils petits et puissants.



Regarde : Comment configurer NVIDIA Jetson avec Ultralytics YOLOv8

NVIDIA L'écosystème 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 dernière version stable de JetPack JP5.1.3 et le Seeed Studio reComputer J1020 v2 qui est basé sur NVIDIA Jetson Nano 4GB exécutant la version de JetPack JP4.6.1. Il devrait fonctionner sur toute la gamme de matériel NVIDIA Jetson, y compris les plus récents et les plus anciens.

Qu'est-ce que NVIDIA Jetson ?

NVIDIA Jetson est une série de cartes informatiques embarquées conçues pour apporter l'informatique accélérée de l'IA (intelligence artificielle) aux appareils périphériques. Ces appareils compacts et puissants sont construits autour de l'architecture NVIDIA's GPU et sont capables d'exécuter des algorithmes d'IA complexes et des modèles d'apprentissage profond directement sur l'appareil, sans avoir besoin de s'appuyer sur des ressources informatiques en nuage. Les cartes Jetson sont souvent utilisées dans la robotique, les véhicules autonomes, l'automatisation industrielle et d'autres applications où l'inférence de l'IA doit être effectuée localement avec une faible latence et une grande efficacité. De plus, ces cartes sont basées sur l'architecture ARM64 et fonctionnent avec une puissance moindre par rapport aux appareils informatiques traditionnels GPU .

NVIDIA Comparaison des séries Jetson

Jetson Orin est la dernière itération de la famille Jetson NVIDIA basée sur l'architecture Ampere NVIDIA qui améliore considérablement les performances de l'intelligence artificielle par rapport aux générations précédentes. Le tableau ci-dessous compare quelques-uns des appareils Jetson de l'écosystème.

Jetson AGX Orin 64GB Jetson Orin NX 16GB Jetson Orin Nano 8GB Jetson AGX Xavier Jetson Xavier NX Jetson Nano
Performance de l'IA 275 TOPS 100 TOPS 40 TOPs 32 TOPS 21 TOPS 472 GFLOPS
GPU 2048 cœurs NVIDIA Architecture Ampère GPU avec 64 cœurs Tensor 1024 cœurs NVIDIA Architecture Ampere GPU avec 32 cœurs Tensor 1024 cœurs NVIDIA Architecture Ampere GPU avec 32 cœurs Tensor 512 cœurs NVIDIA Architecture Volta GPU avec 64 cœurs Tensor 384 cœurs NVIDIA Volta™ architecture GPU avec 48 Tensor cœurs. Architecture NVIDIA Maxwell™ à 128 cœurs GPU
GPU Fréquence maximale 1,3 GHz 918 MHz 625 MHz 1377 MHz 1100 MHz 921MHz
CPU 12 cœurs NVIDIA Arm® Cortex A78AE v8.2 64-bit CPU 3MB L2 + 6MB L3 8 cœurs NVIDIA Arm® Cortex A78AE v8.2 64-bit CPU 2MB L2 + 4MB L3 Arm® Cortex®-A78AE v8.2 64-bit CPU 1.5MB L2 + 4MB L3 8 cœurs NVIDIA Carmel Arm®v8.2 64-bit CPU 8MB L2 + 4MB L3 6 cœurs NVIDIA Carmel Arm®v8.2 64-bit CPU 6MB L2 + 4MB L3 Processeur quadricœur Arm® Cortex®-A57 MPCore
CPU Fréquence maximale 2,2 GHz 2.0 GHz 1,5 GHz 2,2 GHz 1,9 GHz 1,43 GHz
MĂ©moire 64 Go LPDDR5 256 bits 204,8 Go/s 16GB 128-bit LPDDR5 102.4GB/s 8GB 128-bit LPDDR5 68 GB/s 32GB 256-bit LPDDR4x 136.5GB/s 8GB 128-bit LPDDR4x 59.7GB/s 4GB 64-bit LPDDR4 25.6GB/s"

Pour un tableau comparatif plus détaillé, visite la section Spécifications techniques de la page officielle NVIDIA Jetson.

Qu'est-ce que NVIDIA JetPack ?

NVIDIA JetPack SDK alimentant les modules Jetson est la solution la plus complète et fournit un environnement de développement complet pour créer des applications d'IA accélérées de bout en bout et raccourcir les délais de mise sur le marché. JetPack comprend Jetson Linux avec le chargeur de démarrage, le noyau Linux, l'environnement de bureau Ubuntu et un ensemble complet de bibliothèques pour l'accélération du calcul GPU , du multimédia, du graphisme et de la vision par ordinateur. Il comprend également des échantillons, de la documentation et des outils de développement pour l'ordinateur hôte et le kit de développement, et prend en charge des SDK de niveau supérieur tels que DeepStream pour l'analyse vidéo en continu, Isaac pour la robotique et Riva pour l'IA conversationnelle.

Flash JetPack pour NVIDIA Jetson

La première étape après avoir mis la main sur un appareil NVIDIA Jetson est de flasher NVIDIA JetPack sur l'appareil. Il existe plusieurs façons de flasher les appareils NVIDIA Jetson.

  1. Si tu possèdes un kit de développement officiel NVIDIA tel que le kit de développement Jetson Orin Nano, tu peux télécharger une image et préparer une carte SD avec JetPack pour démarrer l'appareil.
  2. Si tu possèdes un autre kit de développement NVIDIA , tu peux flasher JetPack sur l'appareil à l'aide du SDK Manager.
  3. Si tu possèdes un appareil Seeed Studio reComputer J4012, tu peux flasher JetPack sur le SSD inclus et si tu possèdes un appareil Seeed Studio reComputer J1020 v2, tu peux flasher JetPack sur l'eMMC/ SSD.
  4. Si tu possèdes un autre appareil tiers alimenté par le module Jetson de NVIDIA , il est recommandé de suivre le flashage en ligne de commande.

Note

Pour les méthodes 3 et 4 ci-dessus, après avoir flashé le système et démarré l'appareil, entre "sudo apt update && sudo apt install nvidia-jetpack -y" sur le terminal de l'appareil pour installer tous les autres composants JetPack nécessaires.

Exécuter sur JetPack 5.x

Si tu possèdes un Jetson Xavier NX, AGX Xavier, AGX Orin, Orin Nano ou Orin NX qui prend en charge JetPack 5.x, tu peux continuer à suivre ce guide. Cependant, si tu as un appareil ancien tel que le Jetson Nano, passe à Exécuter sur JetPack 4.x.

Mise en place Ultralytics

Il y a deux façons de configurer le paquet Ultralytics sur NVIDIA Jetson pour construire ton prochain projet de vision par ordinateur. Tu peux utiliser l'une ou l'autre.

Commence avec Docker

Le moyen le plus rapide de démarrer avec Ultralytics YOLOv8 sur NVIDIA Jetson est de s'exécuter avec une image docker préconstruite pour Jetson.

Exécute la commande ci-dessous pour tirer le conteneur Docker et l'exécuter sur Jetson. Ceci est basé sur l'image docker l4t-pytorch qui contient PyTorch et Torchvision dans un environnement Python3.

t=ultralytics/ultralytics:latest-jetson-jetpack5 && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t

Une fois que c'est fait, passe Ă  la section Utiliser TensorRT sur NVIDIA Jetson.

DĂ©marrer sans Docker

Installer le paquet Ultralytics

Ici, nous allons installer le paquet Ultralytics sur le Jetson avec des dépendances optionnelles afin que nous puissions exporter les modèles PyTorch vers d'autres formats différents. Nous nous concentrerons principalement sur les exportationsNVIDIA TensorRT car TensorRT nous permettra de tirer le maximum de performances des appareils Jetson.

  1. Mettre à jour la liste des paquets, installer pip et mettre à niveau vers la dernière version.

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Installer ultralytics paquet pip avec dépendances optionnelles

    pip install ultralytics[export]
    
  3. Redémarre l'appareil

    sudo reboot
    
Installe PyTorch et Torchvision

L'installation de ultralytics ci-dessus permet d'installer Torch et Torchvision. Cependant, ces deux paquets installés via pip ne sont pas compatibles pour fonctionner sur la plateforme Jetson qui est basée sur l'architecture ARM64. Par conséquent, nous devons installer manuellement PyTorch pip wheel et compiler/installer Torchvision à partir des sources.

  1. Désinstalle les versions actuellement installées de PyTorch et Torchvision.

    pip uninstall torch torchvision
    
  2. Installe PyTorch 2.1.0 conformément à JP5.1.3

    sudo apt-get install -y libopenblas-base libopenmpi-dev
    wget https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl -O torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
    pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
    
  3. Installe Torchvision v0.16.2 selon PyTorch v2.1.0

    sudo apt install -y libjpeg-dev zlib1g-dev
    git clone https://github.com/pytorch/vision torchvision
    cd torchvision
    git checkout v0.16.2
    python3 setup.py install --user
    

Visite la pagePyTorch pour Jetson pour accéder à toutes les différentes versions de PyTorch pour les différentes versions de JetPack. Pour une liste plus détaillée des compatibilités PyTorch et Torchvision, visite la pagePyTorch et Torchvision compatibility.

Installer onnxruntime-gpu

Le onnxruntime-gpu hébergé dans PyPI n'a pas de aarch64 pour la Jetson. Nous devons donc installer manuellement ce paquet. Ce paquet est nécessaire pour certaines exportations.

Tous différents onnxruntime-gpu Les paquets correspondant aux différentes versions de JetPack et de Python sont listés ici. Cependant, nous allons ici télécharger et installer onnxruntime-gpu 1.17.0 avec Python3.8 pour le JetPack que nous utilisons dans ce guide.

wget https://nvidia.box.com/shared/static/zostg6agm00fb6t5uisw51qi6kpcuwzd.whl -O onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
pip install onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl

Note

onnxruntime-gpu va automatiquement rétablir la version la plus récente de numpy. Nous devons donc réinstaller numpy à 1.23.5 pour résoudre un problème en l'exécutant :

pip install numpy==1.23.5

Exécuter sur JetPack 4.x

Ici, nous soutenons la course Ultralytics sur du matériel hérité tel que le Jetson Nano. Actuellement, nous utilisons Docker pour y parvenir.

Exécute la commande ci-dessous pour tirer le conteneur Docker et l'exécuter sur Jetson. Ceci est basé sur l'image docker l4t-cuda qui contient CUDA dans un environnement L4T.

t=ultralytics/ultralytics:latest-jetson-jetpack4 && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t

Utilise TensorRT sur NVIDIA Jetson

Parmi tous les formats d'exportation de modèles pris en charge par Ultralytics, TensorRT offre les meilleures performances d'inférence lorsque l'on travaille avec NVIDIA Jetson devices et notre recommandation est d'utiliser TensorRT avec Jetson. Nous avons également un document détaillé sur TensorRT ici.

Convertir le modèle en TensorRT et lancer l'inférence

Le modèle YOLOv8n au format PyTorch est converti en TensorRT pour effectuer une inférence avec le modèle exporté.

Exemple

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Export the model
model.export(format="engine")  # creates 'yolov8n.engine'

# Load the exported TensorRT model
trt_model = YOLO("yolov8n.engine")

# Run inference
results = trt_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to TensorRT format
yolo export model=yolov8n.pt format=engine  # creates 'yolov8n.engine'

# Run inference with the exported model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'

Note

Visite la page Exportation pour accéder à des arguments supplémentaires lors de l'exportation de modèles vers différents formats de modèles.

NVIDIA Jetson Orin YOLOv8 Benchmarks

YOLOv8 ont été effectués par le Ultralytics Équipe sur 10 formats de modèles différents mesurant vitesse et précision : PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Lite PaddlePaddle, NCNN. Les benchmarks ont été exécutés sur le Seeed Studio reComputer J4012 alimenté par l’appareil Jetson Orin NX 16 Go avec une précision FP32 avec une taille d’image d’entrée par défaut de 640.

Tableau de comparaison

Même si tous les modèles d'exportation fonctionnent avec NVIDIA Jetson, nous n'avons inclus que PyTorch, TorchScript, TensorRT dans le tableau comparatif ci-dessous parce qu'ils utilisent GPU sur la Jetson et qu'ils sont garantis de produire les meilleurs résultats. Toutes les autres exportations n'utilisent que le site CPU et les performances ne sont pas aussi bonnes que celles des trois exportations ci-dessus. Tu trouveras des repères pour toutes les exportations dans la section qui suit ce tableau.

NVIDIA L'écosystème Jetson

Tableau comparatif détaillé

Le tableau ci-dessous présente les résultats de référence pour cinq modèles différents (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) dans dix formats différents (PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Lite PaddlePaddle, NCNN), nous donnant l’état, la taille, la métrique mAP50-95(B) et le temps d’inférence pour chaque combinaison.

Performance

Format Statut Taille sur le disque (MB) mAP50-95(B) Temps d'inférence (ms/im)
PyTorch âś… 6.2 0.6381 14.3
TorchScript âś… 12.4 0.6117 13.3
ONNX âś… 12.2 0.6092 70.6
OpenVINO âś… 12.3 0.6092 104.2
TensorRT âś… 13.6 0.6117 8.9
TF SavedModel âś… 30.6 0.6092 141.74
TF GraphDef âś… 12.3 0.6092 199.93
TF Lite âś… 12.3 0.6092 349.18
PaddlePaddle âś… 24.4 0.6030 555
NCNN âś… 12.2 0.6092 32
Format Statut Taille sur le disque (MB) mAP50-95(B) Temps d'inférence (ms/im)
PyTorch âś… 21.5 0.6967 18
TorchScript âś… 43.0 0.7136 23.81
ONNX âś… 42.8 0.7136 185.55
OpenVINO âś… 42.9 0.7136 243.97
TensorRT âś… 44.0 0.7136 14.82
TF SavedModel âś… 107 0.7136 260.03
TF GraphDef âś… 42.8 0.7136 423.4
TF Lite âś… 42.8 0.7136 1046.64
PaddlePaddle âś… 85.5 0.7140 1464
NCNN âś… 42.7 0.7200 63
Format Statut Taille sur le disque (MB) mAP50-95(B) Temps d'inférence (ms/im)
PyTorch âś… 49.7 0.7370 36.4
TorchScript âś… 99.2 0.7285 53.58
ONNX âś… 99 0.7280 452.09
OpenVINO âś… 99.1 0.7280 544.36
TensorRT âś… 100.3 0.7285 33.21
TF SavedModel âś… 247.5 0.7280 543.65
TF GraphDef âś… 99 0.7280 906.63
TF Lite âś… 99 0.7280 2758.08
PaddlePaddle âś… 197.9 0.7280 3678
NCNN âś… 98.9 0.7260 135
Format Statut Taille sur le disque (MB) mAP50-95(B) Temps d'inférence (ms/im)
PyTorch âś… 83.7 0.7768 61.3
TorchScript âś… 167.2 0.7554 87.9
ONNX âś… 166.8 0.7551 852.29
OpenVINO âś… 167 0.7551 1012.6
TensorRT âś… 168.4 0.7554 51.23
TF SavedModel âś… 417.2 0.7551 990.45
TF GraphDef âś… 166.9 0.7551 1649.86
TF Lite âś… 166.9 0.7551 5652.37
PaddlePaddle âś… 333.6 0.7551 7114.67
NCNN âś… 166.8 0.7685 231.9
Format Statut Taille sur le disque (MB) mAP50-95(B) Temps d'inférence (ms/im)
PyTorch âś… 130.5 0.7759 93
TorchScript âś… 260.7 0.7472 135.1
ONNX âś… 260.4 0.7479 1296.13
OpenVINO âś… 260.6 0.7479 1502.15
TensorRT âś… 261.8 0.7469 84.53
TF SavedModel âś… 651.1 0.7479 1451.76
TF GraphDef âś… 260.5 0.7479 4029.36
TF Lite âś… 260.4 0.7479 8772.86
PaddlePaddle âś… 520.8 0.7479 10619.53
NCNN âś… 260.4 0.7646 376.38

Explore d'autres efforts d'analyse comparative de Seeed Studio fonctionnant sur différentes versions du matériel NVIDIA Jetson.

Reproduis nos résultats

Pour reproduire les repères ci-dessus Ultralytics sur tous les formats d' exportation, exécute ce code :

Exemple

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml", imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml imgsz=640

Note que les résultats des analyses comparatives peuvent varier en fonction de la configuration matérielle et logicielle exacte d'un système, ainsi que de la charge de travail actuelle du système au moment de l'exécution des analyses comparatives. Pour obtenir les résultats les plus fiables, utilise un ensemble de données contenant un grand nombre d'images, c'est-à-dire data='coco8.yaml' (4 val images), ordata='coco.yaml'` (5000 val images).

Meilleures pratiques lors de l'utilisation de NVIDIA Jetson

Lorsque tu utilises NVIDIA Jetson, il y a quelques bonnes pratiques à suivre afin d'obtenir des performances maximales sur NVIDIA Jetson exécutant YOLOv8.

  1. Activer le mode d'alimentation MAX

    L'activation du mode MAX Power sur la Jetson permet de s'assurer que tous les cœurs CPU, GPU sont activés.

    sudo nvpmodel -m 0
    
  2. Activer les horloges Jetson

    L'activation des horloges Jetson permet de s'assurer que tous les cœurs CPU, GPU sont cadencés à leur fréquence maximale.

    sudo jetson_clocks
    
  3. Installe l'application Jetson Stats

    Nous pouvons utiliser l'application jetson stats pour surveiller les températures des composants du système et vérifier d'autres détails du système tels que CPU, GPU, l'utilisation de la RAM, changer les modes d'alimentation, régler les horloges au maximum, vérifier les informations JetPack.

    sudo apt update
    sudo pip install jetson-stats
    sudo reboot
    jtop
    

Jetson Stats

Prochaines Ă©tapes

Félicitations pour avoir réussi à installer YOLOv8 sur ton NVIDIA Jetson ! Pour en savoir plus et obtenir de l'aide, consulte le guide Ultralytics YOLOv8 Docs!

FAQ

Comment déployer Ultralytics YOLOv8 sur les appareils NVIDIA Jetson ?

Le déploiement de Ultralytics YOLOv8 sur NVIDIA Jetson est un processus simple. Tout d'abord, flashe ton appareil Jetson avec le SDK JetPack de NVIDIA . Ensuite, tu peux soit utiliser une image Docker préconstruite pour une configuration rapide, soit installer manuellement les paquets requis. Les étapes détaillées de chaque approche se trouvent dans les sections Démarrer avec Docker et Démarrer sans Docker.

Quels repères de performance puis-je attendre des modèles YOLOv8 sur les appareils NVIDIA Jetson ?

YOLOv8 ont fait l'objet d'une analyse comparative sur divers appareils NVIDIA Jetson, ce qui a permis de constater des améliorations significatives en termes de performances. Par exemple, le format TensorRT offre les meilleures performances en matière d'inférence. Le tableau de la section Tableau comparatif détaillé offre une vue d'ensemble des mesures de performance telles que mAP50-95 et le temps d'inférence entre les différents formats de modèles.

Pourquoi devrais-je utiliser TensorRT pour déployer YOLOv8 sur NVIDIA Jetson ?

TensorRT est fortement recommandé pour le déploiement des modèles YOLOv8 sur NVIDIA Jetson en raison de ses performances optimales. Il accélère l'inférence en tirant parti des capacités de GPU de Jetson, ce qui garantit une efficacité et une vitesse maximales. Pour en savoir plus sur la façon de convertir en TensorRT et d'exécuter l'inférence, consulte la section Utiliser TensorRT sur NVIDIA Jetson.

Comment puis-je installer PyTorch et Torchvision sur NVIDIA Jetson ?

Pour installer PyTorch et Torchvision sur NVIDIA Jetson, désinstalle d'abord toutes les versions existantes qui ont pu être installées via pip. Ensuite, installe manuellement les versions PyTorch et Torchvision compatibles avec l'architecture ARM64 de la Jetson. Des instructions détaillées pour ce processus sont fournies dans la section Installer PyTorch et Torchvision.

Quelles sont les meilleures pratiques pour maximiser les performances sur NVIDIA Jetson lorsque tu utilises YOLOv8?

Pour maximiser les performances sur NVIDIA Jetson avec YOLOv8, suis ces bonnes pratiques :

  1. Active le mode MAX Power pour utiliser tous les cœurs CPU et GPU .
  2. Active les horloges Jetson pour faire fonctionner tous les cœurs à leur fréquence maximale.
  3. Installe l'application Jetson Stats pour surveiller les métriques du système.

Pour les commandes et les détails supplémentaires, reporte-toi à la section Meilleures pratiques lors de l'utilisation de NVIDIA Jetson.



Créé le 2024-04-02, Mis à jour le 2024-07-05
Auteurs : glenn-jocher (9), RizwanMunawar (1), lakshanthad (3), Ahelsamahy (1), Burhan-Q (2)

Commentaires