Zum Inhalt springen

Schnellstartanleitung: 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 Möglichkeiten von YOLOv8 auf diesen kleinen und leistungsstarken GerĂ€ten.

NVIDIA Jetson Ökosystem

Hinweis

Diese Anleitung wurde 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. Wenn du diese Anleitung fĂŒr Ă€ltere Jetson-GerĂ€te wie den Jetson Nano verwendest (dieser wird nur bis JP4.6.4 unterstĂŒtzt), kann nicht garantiert werden, dass sie funktioniert. Es wird jedoch erwartet, dass sie auf allen Jetson Orin, Xavier NX und AGX Xavier GerĂ€ten mit JP5.1.3 funktioniert.

Was ist NVIDIA Jetson?

NVIDIA Jetson ist eine Reihe von Embedded Computing Boards, die beschleunigte KI (kĂŒnstliche Intelligenz) auf Edge Devices 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 in 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 im Vergleich zu herkömmlichen GPU-Computing-GerĂ€ten weniger Strom.

NVIDIA Jetson Serie Vergleich

Jetson Orin ist die neueste Iteration 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 NVIDIA Ampere-Architektur-GPU mit 1024 Kernen und 32 Tensor Kernen NVIDIA Ampere-Architektur-GPU mit 1024 Kernen und 32 Tensor Kernen 512 Kerne NVIDIA Volta Architektur GPU mit 64 Tensor Kernen 384 Kerne NVIDIA Voltaℱ Architektur GPU mit 48 Tensor Kernen 128-Kern NVIDIA Maxwellℱ Architektur GPU
GPU Max Frequenz 1,3 GHz 918 MHz 625 MHz 1377 MHz 1100 MHz 921MHz
CPU 12-Kern NVIDIA ArmÂź Cortex A78AE v8.2 64-bit CPU 3MB L2 + 6MB L3 8-Kern NVIDIA ArmÂź Cortex A78AE v8.2 64-bit CPU 2MB L2 + 4MB L3 6-Kern ArmÂź CortexÂź-A78AE v8.2 64-bit CPU 1,5MB L2 + 4MB L3 8-Kern NVIDIA Carmel ArmÂźv8.2 64-bit CPU 8MB L2 + 4MB L3 6-Kern NVIDIA Carmel ArmÂźv8.2 64-bit CPU 6MB L2 + 4MB L3 Quad-Core ArmÂź CortexÂź-A57 MPCore Prozessor
CPU Max 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?

Das NVIDIA JetPack SDK, das die Jetson-Module antreibt, ist die umfassendste Lösung und bietet eine vollstĂ€ndige Entwicklungsumgebung fĂŒr die Erstellung von durchgĂ€ngig 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 fĂŒr die 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 Konversations-KI.

Flash JetPack fĂŒr 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 diesen Link besuchen, um ein Image herunterzuladen und eine SD-Karte mit JetPack zum Booten des GerÀts vorzubereiten.
  2. Wenn du ein anderes NVIDIA Development Kit besitzt, kannst du diesen Link besuchen, um JetPack mit dem SDK Manager auf das GerÀt zu flashen.
  3. Wenn du ein Seeed Studio reComputer J4012 GerÀt besitzt, kannst du diesen Link besuchen, um JetPack auf die mitgelieferte SSD zu flashen.
  4. Wenn du ein anderes GerĂ€t eines Drittanbieters besitzt, das mit dem NVIDIA Jetson Modul betrieben wird, empfehlen wir dir, das Flashen per Kommandozeile unter diesem Link durchzufĂŒhren.

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.

Mit Docker beginnen

Der schnellste Weg, um mit Ultralytics YOLOv8 auf dem NVIDIA Jetson loszulegen, ist die Verwendung eines vorgefertigten Docker-Images fĂŒr den Jetson.

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 && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t

Start ohne Docker

Ultralytics Paket installieren

Hier werden wir das ultralyics-Paket auf dem Jetson mit optionalen AbhĂ€ngigkeiten installieren, damit wir die PyTorch Modelle in andere Formate exportieren können. Wir werden uns hauptsĂ€chlich auf die Exporte von NVIDIA TensorRT konzentrieren, da TensoRT 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
  1. Installiere ultralytics Pip-Paket mit optionalen AbhÀngigkeiten
pip install ultralytics[export]
  1. 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
  1. 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
  1. 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 dieser Seite findest du alle verschiedenen Versionen von PyTorch fĂŒr die verschiedenen JetPack-Versionen. Eine ausfĂŒhrlichere Liste der PyTorch, Torchvision-KompatibilitĂ€t findest du hier.

TensorRT auf NVIDIA Jetson verwenden

Von allen Modellexportformaten, die von Ultralytics unterstĂŒtzt werden, liefert TensorRT die beste Inferenzleistung bei der Arbeit mit NVIDIA Jetson-GerĂ€ten und wir empfehlen, 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'

Argumente

SchlĂŒssel Wert Beschreibung
format 'engine' Format zum Exportieren in
imgsz 640 BildgrĂ¶ĂŸe als Skalar oder (h, w) Liste, z.B. (640, 480)
half False FP16 Quantisierung

NVIDIA Jetson Orin YOLOv8 Benchmarks

YOLOv8 Die folgenden Benchmarks wurden vom Ultralytics Team auf 3 verschiedenen Modellformaten durchgefĂŒhrt, um die Geschwindigkeit und Genauigkeit zu messen: PyTorch, TorchScript und TensorRT. Die Benchmarks wurden auf dem Seeed Studio reComputer J4012 mit einem Jetson Orin NX 16GB mit FP32-Genauigkeit und einer Standard-EingangsgrĂ¶ĂŸe von 640 Bildern durchgefĂŒhrt.

NVIDIA Jetson Ökosystem
Modell Format Status GrĂ¶ĂŸe (MB) mAP50-95(B) Inferenzzeit (ms/im)
YOLOv8n PyTorch ✅ 6.2 0.4473 14.3
YOLOv8n TorchScript ✅ 12.4 0.4520 13.3
YOLOv8n TensorRT ✅ 13.6 0.4520 8.7
YOLOv8s PyTorch ✅ 21.5 0.5868 18
YOLOv8s TorchScript ✅ 43.0 0.5971 23.9
YOLOv8s TensorRT ✅ 44.0 0.5965 14.82
YOLOv8m PyTorch ✅ 49.7 0.6101 36.4
YOLOv8m TorchScript ✅ 99.2 0.6125 53.34
YOLOv8m TensorRT ✅ 100.3 0.6123 33.28
YOLOv8l PyTorch ✅ 83.7 0.6588 61.3
YOLOv8l TorchScript ✅ 167.2 0.6587 85.21
YOLOv8l TensorRT ✅ 168.3 0.6591 51.34
YOLOv8x PyTorch ✅ 130.5 0.6650 93
YOLOv8x TorchScript ✅ 260.7 0.6651 135.3
YOLOv8x TensorRT ✅ 261.8 0.6645 84.5

Diese Tabelle zeigt die Benchmark-Ergebnisse fĂŒr fĂŒnf verschiedene Modelle (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) in drei verschiedenen Formaten (PyTorch, TorchScript, TensorRT) und gibt den Status, die GrĂ¶ĂŸe, die mAP50-95(B)-Metrik und die Inferenzzeit fĂŒr jede Kombination an.

Unter diesem Link findest du weitere Benchmarking-Tests von Seeed Studio mit verschiedenen Versionen der NVIDIA Jetson Hardware.

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 COCO128 dataset for all all export formats
results = model.benchmarks(data='coco128.yaml', imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO128 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco128.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='coco128.yaml' (128 val images), ordata='coco.yaml'` (5000 val-Bilder).

Hinweis

Derzeit funktionieren nur PyTorch, Torchscript und TensorRT mit den Benchmarking-Tools. Wir werden sie aktualisieren, um in Zukunft auch andere Exporte zu unterstĂŒtzen.

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- und GPU-Kerne eingeschaltet.

    sudo nvpmodel -m 0
    

  2. Jetson-Uhren einschalten

    Wenn du Jetson Clocks aktivierst, wird sichergestellt, dass alle CPU- und 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. die CPU-, GPU- und RAM-Auslastung anzeigen, den Energiemodus Ă€ndern, die maximale Taktfrequenz einstellen und 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! Weitere Anleitungen und UnterstĂŒtzung findest du unter Ultralytics YOLOv8 Docs!



Erstellt am 2024-04-02, Aktualisiert am 2024-04-02
Autoren: Burhan-Q (1), lakshanthad (1)

Kommentare