Ultralytics YOLO26 auf NVIDIA Jetson mit DeepStream SDK und TensorRT
Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀
Dieser umfassende Leitfaden bietet eine detaillierte Anleitung für die Bereitstellung von Ultralytics YOLO26 auf NVIDIA Jetson-Geräten unter Verwendung des DeepStream SDK und TensorRT. Hier setzen wir TensorRT ein, um die Inferenzleistung auf der Jetson-Plattform zu maximieren.

Dieser Leitfaden wurde mit dem NVIDIA Jetson Orin Nano Super Developer Kit unter der neuesten stabilen JetPack-Version JP6.1, dem Seeed Studio reComputer J4012, das auf dem NVIDIA Jetson Orin NX 16GB basiert und mit der JetPack-Version JP5.1.3 läuft, sowie dem Seeed Studio reComputer J1020 v2, das auf dem NVIDIA Jetson Nano 4GB basiert und die JetPack-Version JP4.6.4 nutzt, getestet. Es wird erwartet, dass er auf der gesamten NVIDIA Jetson-Hardware-Reihe funktioniert, einschließlich neuester und älterer Modelle.
Was ist NVIDIA DeepStream?
NVIDIA's DeepStream SDK ist ein komplettes Streaming-Analytics-Toolkit auf GStreamer-Basis für KI-gestützte Multi-Sensor-Verarbeitung, Video-, Audio- und Bildanalyse. Es ist ideal für Vision-KI-Entwickler, Software-Partner, Startups und OEMs, die IVA-Apps (Intelligent Video Analytics) und -Dienste entwickeln. Du kannst jetzt Stream-Processing-Pipelines erstellen, die neuronale Netze und andere komplexe Verarbeitungsaufgaben wie Tracking, Videokodierung/-dekodierung und Videorendering integrieren. Diese Pipelines ermöglichen Echtzeitanalysen von Video-, Bild- und Sensordaten. DeepStreams plattformübergreifende Unterstützung bietet dir einen schnelleren und einfacheren Weg, Vision-KI-Anwendungen und -Dienste lokal (on-premise), am Edge und in der Cloud zu entwickeln.
Voraussetzungen
Bevor du diesem Leitfaden folgst:
- Besuche unsere Dokumentation, Quick Start Guide: NVIDIA Jetson with Ultralytics YOLO26, um dein NVIDIA Jetson-Gerät für Ultralytics YOLO26 einzurichten.
- Installiere das DeepStream SDK entsprechend deiner JetPack-Version.
- Installiere für JetPack 4.6.4 DeepStream 6.0.1.
- Installiere für JetPack 5.1.3 DeepStream 6.3.
- Installiere für JetPack 6.1 DeepStream 7.1.
- Installiere für JetPack 7.1 DeepStream 9.0.
In diesem Leitfaden haben wir die Debian-Paketmethode zur Installation des DeepStream SDK auf dem Jetson-Gerät verwendet. Du kannst auch DeepStream SDK on Jetson (Archived) besuchen, um auf ältere Versionen von DeepStream zuzugreifen.
DeepStream-Konfiguration für YOLO26
Hier verwenden wir das GitHub-Repository marcoslucianops/DeepStream-Yolo, das NVIDIA DeepStream SDK-Unterstützung für YOLO-Modelle enthält. Wir danken marcoslucianops für seine Beiträge!
-
Installiere Ultralytics mit den notwendigen Abhängigkeiten
cd ~ pip install -U pip git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e ".[export]" onnxslim -
Klon das DeepStream-Yolo-Repository
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
Kopiere die
export_yolo26.py-Datei aus demDeepStream-Yolo/utils-Verzeichnis in denultralytics-Ordnercp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics cd ultralytics -
Lade das Ultralytics YOLO26-Erkennungsmodell (.pt) deiner Wahl aus den YOLO26 releases herunter. Hier verwenden wir yolo26s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
Du kannst auch ein benutzerdefiniertes YOLO26-Modell verwenden.
-
Modell in ONNX konvertieren
python3 export_yolo26.py -w yolo26s.pt
Entferne für DeepStream 5.1 das Argument --dynamic und verwende opset 12 oder niedriger. Das Standard-opset ist 17.
--opset 12Um die Inferenzgröße zu ändern (Standard: 640)
-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTHBeispiel für 1280:
-s 1280
or
-s 1280 1280Um das ONNX-Modell zu vereinfachen (DeepStream >= 6.0)
--simplifyUm eine dynamische Batch-Größe zu verwenden (DeepStream >= 6.1)
--dynamicUm eine statische Batch-Größe zu verwenden (Beispiel für Batch-Größe = 4)
--batch 4-
Kopiere die generierte
.onnx-Modelldatei und dielabels.txt-Datei in denDeepStream-Yolo-Ordnercp yolo26s.pt.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
Stelle die CUDA-Version entsprechend der installierten JetPack-Version ein
Für JetPack 4.6.4:
export CUDA_VER=10.2Für JetPack 5.1.3:
export CUDA_VER=11.4Für JetPack 6.1:
export CUDA_VER=12.6 -
Kompiliere die Bibliothek
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Bearbeite die
config_infer_primary_yolo26.txt-Datei gemäß deinem Modell (für YOLO26s mit 80 Klassen)[property] ... onnx-file=yolo26s.pt.onnx ... num-detected-classes=80 ... -
Bearbeite die
deepstream_app_config-Datei... [primary-gie] ... config-file=config_infer_primary_yolo26.txt -
Du kannst auch die Videoquelle in der
deepstream_app_config-Datei ändern. Hier wird eine Standard-Videodatei geladen... [source0] ... uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
Inferenz ausführen
deepstream-app -c deepstream_app_config.txtEs wird eine Weile dauern, die TensorRT-Engine-Datei zu generieren, bevor die Inferenz startet. Bitte hab also etwas Geduld.

Wenn du das Modell auf FP16-Präzision konvertieren möchtest, setze einfach model-engine-file=model_b1_gpu0_fp16.engine und network-mode=2 innerhalb der config_infer_primary_yolo26.txt
INT8-Kalibrierung
Wenn du INT8-Präzision für die Inferenz verwenden möchtest, musst du die folgenden Schritte ausführen:
Derzeit funktioniert INT8 nicht mit TensorRT 10.x. Dieser Teil des Leitfadens wurde mit TensorRT 8.x getestet, womit es funktionieren sollte.
-
Setze die
OPENCV-Umgebungsvariableexport OPENCV=1 -
Kompiliere die Bibliothek
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Lade für den COCO-Datensatz val2017 herunter, entpacke ihn und verschiebe ihn in den
DeepStream-Yolo-Ordner -
Erstelle ein neues Verzeichnis für Kalibrierungsbilder
mkdir calibration -
Führe Folgendes aus, um 1000 zufällige Bilder aus dem COCO-Datensatz für die Kalibrierung auszuwählen
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ done
NVIDIA empfiehlt mindestens 500 Bilder, um eine gute Genauigkeit zu erzielen. In diesem Beispiel werden 1000 Bilder gewählt, um eine bessere Genauigkeit zu erhalten (mehr Bilder = höhere Genauigkeit). Du kannst dies mit head -1000 festlegen. Für 2000 Bilder beispielsweise head -2000. Dieser Vorgang kann lange dauern.
-
Erstelle die
calibration.txt-Datei mit allen ausgewählten Bildernrealpath calibration/*jpg > calibration.txt -
Setze die Umgebungsvariablen
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1
Höhere Werte für INT8_CALIB_BATCH_SIZE führen zu höherer Genauigkeit und schnellerer Kalibrierung. Stelle sie entsprechend deinem GPU-Speicher ein.
-
Aktualisiere die
config_infer_primary_yolo26.txt-DateiVon
... model-engine-file=model_b1_gpu0_fp32.engine #int8-calib-file=calib.table ... network-mode=0 ...Zu
... model-engine-file=model_b1_gpu0_int8.engine int8-calib-file=calib.table ... network-mode=1 ...
Inferenz ausführen
deepstream-app -c deepstream_app_config.txtMultiStream-Einrichtung
Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀
Um mehrere Streams unter einer einzigen DeepStream-Anwendung einzurichten, nimm die folgenden Änderungen in der deepstream_app_config.txt-Datei vor:
-
Ändere die Zeilen und Spalten, um ein Raster-Display entsprechend der Anzahl der Streams zu erstellen, die du haben möchtest. Zum Beispiel können wir für 4 Streams 2 Zeilen und 2 Spalten hinzufügen.
[tiled-display] rows=2 columns=2 -
Setze
num-sources=4und füge dieuri-Einträge für alle vier Streams hinzu.[source0] enable=1 type=3 uri=path/to/video1.jpg uri=path/to/video2.jpg uri=path/to/video3.jpg uri=path/to/video4.jpg num-sources=4
Inferenz ausführen
deepstream-app -c deepstream_app_config.txt
Benchmark-Ergebnisse
Die folgenden Benchmarks fassen zusammen, wie YOLO26-Modelle bei verschiedenen TensorRT-Präzisionsstufen mit einer Eingabegröße von 640x640 auf einem NVIDIA Jetson Orin NX 16GB abschneiden.
Vergleichstabelle

Detaillierte Vergleichstabelle
| Format | Status | Inferenzzeit (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
Danksagungen
Dieser Leitfaden wurde ursprünglich von unseren Freunden bei Seeed Studio, Lakshantha und Elaine, erstellt.
FAQ
Wie richte ich Ultralytics YOLO26 auf einem NVIDIA Jetson-Gerät ein?
Um Ultralytics YOLO26 auf einem NVIDIA Jetson-Gerät einzurichten, musst du zuerst das DeepStream SDK installieren, das mit deiner JetPack-Version kompatibel ist. Folge der Schritt-für-Schritt-Anleitung in unserem Quick Start Guide, um dein NVIDIA Jetson für die YOLO26-Bereitstellung zu konfigurieren.
Was ist der Vorteil der Verwendung von TensorRT mit YOLO26 auf NVIDIA Jetson?
Die Verwendung von TensorRT mit YOLO26 optimiert das Modell für die Inferenz, was die Latenz erheblich reduziert und den Durchsatz auf NVIDIA Jetson-Geräten verbessert. TensorRT bietet eine leistungsstarke Inferenz mit geringer Latenz für Deep Learning durch Layer-Fusion, Präzisionskalibrierung und Kernel-Auto-Tuning. Dies führt zu einer schnelleren und effizienteren Ausführung, was besonders nützlich für Echtzeitanwendungen wie Videoanalyse und autonome Maschinen ist.
Kann ich Ultralytics YOLO26 mit dem DeepStream SDK auf verschiedener NVIDIA Jetson-Hardware ausführen?
Ja, der Leitfaden für die Bereitstellung von Ultralytics YOLO26 mit dem DeepStream SDK und TensorRT ist über die gesamte NVIDIA Jetson-Produktreihe kompatibel. Dies umfasst Geräte wie den Jetson Orin NX 16GB mit JetPack 5.1.3 und den Jetson Nano 4GB mit JetPack 4.6.4. Siehe den Abschnitt DeepStream Configuration for YOLO26 für detaillierte Schritte.
Wie kann ich ein YOLO26-Modell für DeepStream in ONNX konvertieren?
Um ein YOLO26-Modell für die Bereitstellung mit DeepStream in das ONNX-Format zu konvertieren, verwende das utils/export_yolo26.py-Skript aus dem DeepStream-Yolo-Repository.
Hier ist ein Beispielbefehl:
python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplifyWeitere Details zur Modellkonvertierung findest du in unserem Modell-Export-Abschnitt.
Was sind die Leistungs-Benchmarks für YOLO auf NVIDIA Jetson Orin NX?
Die Leistung von YOLO26-Modellen auf dem NVIDIA Jetson Orin NX 16GB variiert je nach TensorRT-Präzisionsstufen. Zum Beispiel erreichen YOLO26s-Modelle:
- FP32-Präzision: 14,6 ms/im, 68,5 FPS
- FP16-Präzision: 7,94 ms/im, 126 FPS
- INT8-Präzision: 5,95 ms/im, 168 FPS
Diese Benchmarks unterstreichen die Effizienz und Leistungsfähigkeit der Verwendung von TensorRT-optimierten YOLO26-Modellen auf NVIDIA Jetson-Hardware. Weitere Details findest du in unserem Abschnitt Benchmark Results.