Zum Inhalt springen

Schnellstart-Anleitung: NVIDIA Jetson mit Ultralytics YOLOv8

Dieser umfassende Leitfaden bietet eine detaillierte Anleitung für den Einsatz von Ultralytics YOLOv8 auf NVIDIA Jetson-Geräten. Außerdem zeigt er anhand von Leistungsbenchmarks die Fähigkeiten von YOLOv8 auf diesen kleinen und leistungsstarken Geräten.



Pass auf: So richtest du NVIDIA Jetson mit Ultralytics YOLOv8

NVIDIA Jetson Ă–kosystem

Hinweis

Diese Anleitung wurde sowohl mit dem Seeed Studio reComputer J4012 getestet, der auf dem NVIDIA Jetson Orin NX 16GB basiert und auf dem die neueste stabile JetPack-Version JP5.1.3 läuft, als auch mit dem Seeed Studio reComputer J1020 v2, der auf dem NVIDIA Jetson Nano 4GB basiert und auf dem die JetPack-Version JP4.6.1 läuft. Es wird erwartet, dass es mit der gesamten NVIDIA Jetson-Hardware-Reihe funktioniert, einschließlich der neuesten und der älteren.

Was ist NVIDIA Jetson?

NVIDIA Jetson ist eine Reihe von Embedded Computing Boards, die beschleunigte KI (künstliche Intelligenz) auf Edge-Geräte bringen sollen. Diese kompakten und leistungsstarken Geräte basieren auf der GPU Architektur von NVIDIA und sind in der Lage, komplexe KI-Algorithmen und Deep-Learning-Modelle direkt auf dem Gerät auszuführen, ohne auf Cloud-Computing-Ressourcen angewiesen zu sein. Jetson Boards werden häufig in der Robotik, in autonomen Fahrzeugen, in der Industrieautomatisierung und anderen Anwendungen eingesetzt, bei denen KI-Inferenzen lokal mit geringer Latenz und hoher Effizienz ausgeführt werden müssen. Außerdem basieren diese Boards auf der ARM64-Architektur und verbrauchen weniger Strom als herkömmliche GPU Computing-Geräte.

NVIDIA Jetson Serie Vergleich

Jetson Orin ist die neueste Generation der NVIDIA Jetson-Familie, die auf der NVIDIA Ampere-Architektur basiert und im Vergleich zu den vorherigen Generationen eine drastisch verbesserte KI-Leistung bietet. In der folgenden Tabelle werden einige der Jetson-Geräte im Ökosystem verglichen.

Jetson AGX Orin 64GB Jetson Orin NX 16GB Jetson Orin Nano 8GB Jetson AGX Xavier Jetson Xavier NX Jetson Nano
KI Leistung 275 TOPS 100 TOPS 40 TOPs 32 TOPS 21 TOPS 472 GFLOPS
GPU 2048 Kerne NVIDIA Ampere-Architektur GPU mit 64 Tensor Kernen 1024 Kerne NVIDIA Ampere-Architektur GPU mit 32 Tensor Kernen 1024 Kerne NVIDIA Ampere-Architektur GPU mit 32 Tensor Kernen 512 Kerne NVIDIA Volta Architektur GPU mit 64 Tensor Kernen 384 Kerne NVIDIA Volta™ Architektur GPU mit 48 Tensor Kernen 128 Kerne NVIDIA Maxwell™ Architektur GPU
GPU Maximale Frequenz 1,3 GHz 918 MHz 625 MHz 1377 MHz 1100 MHz 921MHz
CPU 12 Kerne NVIDIA Arm® Cortex A78AE v8.2 64-bit CPU 3MB L2 + 6MB L3 8 Kerne NVIDIA Arm® Cortex A78AE v8.2 64-bit CPU 2MB L2 + 4MB L3 6-Core Arm® Cortex®-A78AE v8.2 64-bit CPU 1.5MB L2 + 4MB L3 8 Kerne NVIDIA Carmel Arm®v8.2 64-bit CPU 8MB L2 + 4MB L3 6 Kerne NVIDIA Carmel Arm®v8.2 64-bit CPU 6MB L2 + 4MB L3 Quad-Core Arm® Cortex®-A57 MPCore Prozessor
CPU Maximale Frequenz 2,2 GHz 2,0 GHz 1,5 GHz 2,2 GHz 1,9 GHz 1.43GHz
Speicher 64GB 256-bit LPDDR5 204.8GB/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"

Eine detailliertere Vergleichstabelle findest du im Abschnitt Technische Daten auf der offiziellen NVIDIA Jetson-Seite.

Was ist NVIDIA JetPack?

NVIDIA Das JetPack SDK, das die Jetson-Module antreibt, ist die umfassendste Lösung und bietet eine vollständige Entwicklungsumgebung für die Entwicklung von durchgängigen beschleunigten KI-Anwendungen und verkürzt die Markteinführungszeit. JetPack umfasst Jetson Linux mit Bootloader, Linux-Kernel, Ubuntu-Desktop-Umgebung und einem kompletten Satz von Bibliotheken zur Beschleunigung von GPU Computing, Multimedia, Grafik und Computer Vision. Außerdem enthält es Beispiele, Dokumentationen und Entwickler-Tools für den Host-Computer und das Developer Kit und unterstützt SDKs auf höherer Ebene wie DeepStream für Streaming Video Analytics, Isaac für Robotik und Riva für Conversational AI.

Flash JetPack auf NVIDIA Jetson

Der erste Schritt, nachdem du ein NVIDIA Jetson-Gerät in die Hände bekommen hast, ist das Flashen des NVIDIA JetPack auf das Gerät. Es gibt verschiedene Möglichkeiten, NVIDIA Jetson-Geräte zu flashen.

  1. Wenn du ein offizielles NVIDIA Development Kit wie das Jetson Orin Nano Developer Kit besitzt, kannst du ein Image herunterladen und eine SD-Karte mit JetPack zum Booten des Geräts vorbereiten.
  2. Wenn du ein anderes NVIDIA Development Kit besitzt, kannst du JetPack mit dem SDK Manager auf das Gerät flashen.
  3. Wenn du ein Seeed Studio reComputer J4012-Gerät besitzt, kannst du JetPack auf die mitgelieferte SSD flashen und wenn du ein Seeed Studio reComputer J1020 v2-Gerät besitzt, kannst du JetPack auf die eMMC/SSD flashen.
  4. Wenn du ein anderes Gerät eines Drittanbieters besitzt, das mit dem NVIDIA Jetson-Modul betrieben wird, wird empfohlen, das Kommandozeilenflashen zu befolgen.

Hinweis

Bei den oben genannten Methoden 3 und 4 gibst du nach dem Flashen des Systems und dem Booten des Geräts bitte "sudo apt update && sudo apt install nvidia-jetpack -y" auf dem Geräteterminal ein, um alle übrigen benötigten JetPack-Komponenten zu installieren.

Läuft auf JetPack 5.x

Wenn du einen Jetson Xavier NX, AGX Xavier, AGX Orin, Orin Nano oder Orin NX besitzt, der JetPack 5.x unterstützt, kannst du dieser Anleitung weiter folgen. Wenn du jedoch ein älteres Gerät wie den Jetson Nano besitzt, fahre bitte mit Ausführen mit JetPack 4.x fort.

Einrichten Ultralytics

Es gibt zwei Möglichkeiten, das Ultralytics Paket auf NVIDIA Jetson einzurichten, um dein nächstes Computer Vision Projekt zu erstellen. Du kannst eine von beiden nutzen.

Mit Docker beginnen

Der schnellste Weg, um mit Ultralytics YOLOv8 auf NVIDIA Jetson loszulegen, ist, ein vorgefertigtes Docker-Image fĂĽr Jetson zu verwenden.

Führe den unten stehenden Befehl aus, um den Docker-Container zu ziehen und auf dem Jetson auszuführen. Dies basiert auf dem l4t-pytorch Docker-Image, das PyTorch und Torchvision in einer Python3-Umgebung enthält.

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

Wenn du das getan hast, fahre mit dem Abschnitt TensorRT auf NVIDIA Jetson verwenden fort.

Start ohne Docker

Ultralytics Paket installieren

Hier werden wir das Ultralytics Paket mit optionalen Abhängigkeiten auf dem Jetson installieren, damit wir die PyTorch Modelle in andere Formate exportieren können. Wir werden uns hauptsächlich auf NVIDIA TensorRT Exporte konzentrieren, weil TensorRT dafür sorgt, dass wir die maximale Leistung aus den Jetson-Geräten herausholen können.

  1. Paketliste aktualisieren, pip installieren und auf den neuesten Stand bringen

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Installiere ultralytics Pip-Paket mit optionalen Abhängigkeiten

    pip install ultralytics[export]
    
  3. Das Gerät neu starten

    sudo reboot
    
Installiere PyTorch und Torchvision

Die obige ultralytics Installation wird Torch und Torchvision installieren. Diese beiden ĂĽber pip installierten Pakete sind jedoch nicht kompatibel mit der Jetson-Plattform, die auf der ARM64-Architektur basiert. Deshalb mĂĽssen wir PyTorch pip wheel manuell installieren und Torchvision aus dem Quellcode kompilieren und installieren.

  1. Deinstalliere die aktuell installierte PyTorch und Torchvision

    pip uninstall torch torchvision
    
  2. Installiere PyTorch 2.1.0 gemäß 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. Installiere Torchvision v0.16.2 gemäß 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
    

Auf der SeitePyTorch für Jetson findest du alle verschiedenen Versionen von PyTorch für verschiedene JetPack-Versionen. Eine detailliertere Liste der PyTorch, Torchvision-Kompatibilität findest du auf der SeitePyTorch und Torchvision-Kompatibilität.

Installiere onnxruntime-gpu

Die onnxruntime-gpu Paket, das in PyPI gehostet wird, hat keine aarch64 Binärdateien für den Jetson. Wir müssen dieses Paket also manuell installieren. Dieses Paket wird für einige der Exporte benötigt.

Alle unterschiedlich onnxruntime-gpu Pakete, die den verschiedenen JetPack- und Python -Versionen entsprechen, sind aufgelistet hier. Hier werden wir jedoch herunterladen und installieren onnxruntime-gpu 1.17.0 mit Python3.8 UnterstĂĽtzung fĂĽr das JetPack, das wir fĂĽr diesen Leitfaden verwenden.

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

Hinweis

onnxruntime-gpu wird die Numpy-Version automatisch auf die neueste Version zurĂĽckgesetzt. Wir mĂĽssen also numpy neu installieren, um 1.23.5 um ein Problem zu beheben, indem du es ausfĂĽhrst:

pip install numpy==1.23.5

Läuft auf JetPack 4.x

Hier unterstützen wir beim Ausführen Ultralytics auf älterer Hardware wie dem Jetson Nano. Derzeit verwenden wir Docker, um dies zu erreichen.

Führe den folgenden Befehl aus, um den Docker-Container zu ziehen und auf Jetson auszuführen. Dies basiert auf dem l4t-cuda Docker-Image, das CUDA in einer L4T-Umgebung enthält.

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

Verwende TensorRT auf NVIDIA Jetson

Von allen Modellexportformaten, die von Ultralytics unterstützt werden, liefert TensorRT die beste Inferenzleistung, wenn du mit NVIDIA Jetson-Geräten arbeitest. Unsere Empfehlung ist, TensorRT mit Jetson zu verwenden. Wir haben auch ein ausführliches Dokument zu TensorRT hier.

Modell in TensorRT umwandeln und Inferenz durchfĂĽhren

Das Modell YOLOv8n im Format PyTorch wird in TensorRT konvertiert, um die Inferenz mit dem exportierten Modell durchzufĂĽhren.

Beispiel

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'

Hinweis

Besuche die Seite Exportieren, um zusätzliche Argumente beim Exportieren von Modellen in verschiedene Modellformate zu erhalten

NVIDIA Jetson Orin YOLOv8 Benchmarks

YOLOv8 Benchmarks wurden von der Ultralytics Team an 10 verschiedenen Modellformaten zur Messung von Geschwindigkeit und Genauigkeit: PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Leicht PaddlePaddle, NCNN. Die Benchmarks wurden auf dem Seeed Studio reComputer J4012 mit einem Jetson Orin NX 16-GB-Gerät mit FP32-Präzision und einer Standard-Eingabebildgröße von 640 durchgeführt.

Vergleichstabelle

Obwohl alle Modellexporte mit NVIDIA Jetson funktionieren, haben wir nur PyTorch, TorchScript und TensorRT in die untenstehende Vergleichstabelle aufgenommen, weil sie GPU auf dem Jetson verwenden und garantiert die besten Ergebnisse liefern. Alle anderen Exporte nutzen nur die CPU und die Leistung ist nicht so gut wie die der drei oben genannten. Benchmarks fĂĽr alle Exporte findest du im Abschnitt nach diesem Diagramm.

NVIDIA Jetson Ă–kosystem

Detaillierte Vergleichstabelle

Die folgende Tabelle zeigt die Benchmark-Ergebnisse für fünf verschiedene Modelle (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) in zehn verschiedenen Formaten (PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Leicht PaddlePaddle, NCNN), die uns den Status, die Größe, die mAP50-95(B)-Metrik und die Inferenzzeit für jede Kombination gibt.

Leistung

Format Status Größe auf der Festplatte (MB) mAP50-95(B) Inferenzzeit (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 Status Größe auf der Festplatte (MB) mAP50-95(B) Inferenzzeit (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 Status Größe auf der Festplatte (MB) mAP50-95(B) Inferenzzeit (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 Status Größe auf der Festplatte (MB) mAP50-95(B) Inferenzzeit (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 Status Größe auf der Festplatte (MB) mAP50-95(B) Inferenzzeit (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

Erkunde weitere Benchmarking-Versuche von Seeed Studio, die auf verschiedenen Versionen der NVIDIA Jetson Hardware laufen.

Reproduziere unsere Ergebnisse

Um die oben genannten Ultralytics Benchmarks fĂĽr alle Exportformate zu reproduzieren, fĂĽhre diesen Code aus:

Beispiel

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

Beachte, dass die Benchmarking-Ergebnisse je nach der genauen Hardware- und Softwarekonfiguration eines Systems sowie der aktuellen Arbeitsbelastung des Systems zum Zeitpunkt der Durchführung der Benchmarks variieren können. Die zuverlässigsten Ergebnisse erhältst du, wenn du einen Datensatz mit einer großen Anzahl von Bildern verwendest, d. h. data='coco8.yaml' (4 val images), ordata='coco.yaml'` (5000 val-Bilder).

Best Practices bei der Verwendung von NVIDIA Jetson

Bei der Verwendung von NVIDIA Jetson gibt es einige Best Practices zu beachten, um die maximale Leistung auf dem NVIDIA Jetson mit YOLOv8 zu erreichen.

  1. MAX Power Modus aktivieren

    Wenn du den MAX Power Mode auf dem Jetson aktivierst, werden alle CPU, GPU Kerne eingeschaltet.

    sudo nvpmodel -m 0
    
  2. Jetson-Uhren einschalten

    Wenn du Jetson Clocks aktivierst, wird sichergestellt, dass alle CPU, GPU Kerne mit ihrer maximalen Frequenz getaktet sind.

    sudo jetson_clocks
    
  3. Jetson Stats Anwendung installieren

    Mit der Anwendung jetson stats können wir die Temperaturen der Systemkomponenten überwachen und andere Systemdetails überprüfen, wie z.B. CPU, GPU, RAM-Auslastung, Stromsparmodi ändern, maximale Taktraten einstellen, JetPack-Informationen überprüfen

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

Jetson-Statistiken

Nächste Schritte

Herzlichen GlĂĽckwunsch zur erfolgreichen Einrichtung von YOLOv8 auf deinem NVIDIA Jetson! FĂĽr weitere Informationen und UnterstĂĽtzung besuche den Leitfaden unter Ultralytics YOLOv8 Docs!

FAQ

Wie kann ich Ultralytics YOLOv8 auf NVIDIA Jetson-Geräten einsetzen?

Der Einsatz von Ultralytics YOLOv8 auf NVIDIA Jetson-Geräten ist ein unkomplizierter Prozess. Flashe zunächst dein Jetson-Gerät mit dem NVIDIA JetPack SDK. Dann kannst du entweder ein vorgefertigtes Docker-Image für eine schnelle Einrichtung verwenden oder die benötigten Pakete manuell installieren. Detaillierte Schritte für beide Vorgehensweisen findest du in den Abschnitten Start mit Docker und Start ohne Docker.

Welche Leistungsvergleiche kann ich von YOLOv8 Modellen auf NVIDIA Jetson-Geräten erwarten?

YOLOv8 Modelle wurden auf verschiedenen NVIDIA Jetson-Geräten getestet und zeigten deutliche Leistungsverbesserungen. Zum Beispiel liefert das Format TensorRT die beste Inferenzleistung. Die Tabelle im Abschnitt Detaillierte Vergleichstabelle bietet einen umfassenden Überblick über Leistungskennzahlen wie mAP50-95 und Inferenzzeit für verschiedene Modellformate.

Warum sollte ich TensorRT fĂĽr die Bereitstellung von YOLOv8 auf NVIDIA Jetson verwenden?

TensorRT wird für den Einsatz von YOLOv8 Modellen auf NVIDIA Jetson aufgrund seiner optimalen Leistung dringend empfohlen. Es beschleunigt die Inferenz, indem es die GPU Fähigkeiten des Jetson nutzt und so für maximale Effizienz und Geschwindigkeit sorgt. Erfahre mehr über die Konvertierung in TensorRT und die Durchführung von Inferenzen im Abschnitt TensorRT auf NVIDIA Jetson verwenden.

Wie kann ich PyTorch und Torchvision auf NVIDIA Jetson installieren?

Um PyTorch und Torchvision auf NVIDIA Jetson zu installieren, deinstalliere zunächst alle vorhandenen Versionen, die du eventuell über pip installiert hast. Dann installierst du manuell die kompatiblen Versionen von PyTorch und Torchvision für die ARM64-Architektur des Jetson. Detaillierte Anweisungen für diesen Vorgang findest du im Abschnitt PyTorch und Torchvision installieren.

Was sind die besten Methoden, um die Leistung auf NVIDIA Jetson zu maximieren, wenn du YOLOv8 verwendest?

Um die Leistung auf NVIDIA Jetson mit YOLOv8 zu maximieren, befolge diese Best Practices:

  1. Aktiviere den MAX Power Mode, um alle CPU und GPU Kerne zu nutzen.
  2. Aktiviere Jetson Clocks, um alle Kerne mit ihrer maximalen Frequenz zu betreiben.
  3. Installiere die Anwendung Jetson Stats zur Ăśberwachung der Systemmetriken.

Befehle und weitere Details findest du im Abschnitt Best Practices bei der Verwendung von NVIDIA Jetson.



Erstellt 2024-04-02, Aktualisiert 2024-07-05
Autoren: glenn-jocher (9), RizwanMunawar (1), lakshanthad (3), Ahelsamahy (1), Burhan-Q (2)

Kommentare