Ultralytics YOLO26 auf NVIDIA Jetson mit DeepStream SDK und TensorRT
Ansehen: Wie man Ultralytics YOLO26-Modelle mit NVIDIA Deepstream auf Jetson Orin NX verwendet 🚀
Diese umfassende Anleitung bietet eine detaillierte Schritt-für-Schritt-Anleitung zur Bereitstellung von Ultralytics YOLO26 auf NVIDIA Jetson Geräten mithilfe des DeepStream SDK und TensorRT. Hier verwenden wir TensorRT, um die Inferenzleistung auf der Jetson-Plattform zu maximieren.

Hinweis
Dieser Leitfaden wurde mit dem NVIDIA Jetson Orin Nano Super Developer Kit mit der neuesten stabilen JetPack-Version von JP6.1, Seeed Studio reComputer J4012 auf Basis von NVIDIA Jetson Orin NX 16GB mit JetPack-Version von JP5.1.3 und Seeed Studio reComputer J1020 v2 auf Basis von NVIDIA Jetson Nano 4GB mit JetPack-Version von JP4.6.4 getestet. Es wird erwartet, dass es auf der gesamten NVIDIA Jetson Hardware-Palette funktioniert, einschließlich der neuesten und älteren Modelle.
Was ist NVIDIA DeepStream?
Das NVIDIA DeepStream SDK ist ein komplettes Streaming-Analyse-Toolkit, das auf GStreamer basiert und für KI-basierte Multisensor-Verarbeitung, Video-, Audio- und Bildverständnis entwickelt wurde. Es ist ideal für Vision-KI-Entwickler, Softwarepartner, Startups und OEMs, die IVA-Anwendungen (Intelligent Video Analytics) und -Dienste entwickeln. Sie können jetzt Stream-Verarbeitungspipelines erstellen, die neuronale Netze und andere komplexe Verarbeitungsaufgaben wie Tracking, Videocodierung / -decodierung und Videorendering beinhalten. Diese Pipelines ermöglichen Echtzeit-Analysen von Video-, Bild- und Sensordaten. Die Multiplattform-Unterstützung von DeepStream bietet Ihnen eine schnellere und einfachere Möglichkeit, Vision-KI-Anwendungen und -Dienste On-Premise, am Edge und in der Cloud zu entwickeln.
Voraussetzungen
Bevor Sie dieser Anleitung folgen:
- Besuchen Sie unsere Dokumentation, den Quick Start Guide: NVIDIA Jetson mit Ultralytics YOLO26, um Ihr NVIDIA Jetson Gerät mit Ultralytics YOLO26 einzurichten.
- Installieren DeepStream SDK entsprechend der JetPack-Version
- Für JetPack 4.6.4 installieren Sie DeepStream 6.0.1.
- Für JetPack 5.1.3 installieren Sie DeepStream 6.3.
- Für JetPack 6.1 installieren Sie DeepStream 7.1.
Tipp
In dieser Anleitung haben wir die Debian-Paketmethode zur Installation des DeepStream SDK auf dem Jetson-Gerät verwendet. Sie können auch das DeepStream SDK auf Jetson (Archiv) besuchen, um auf ältere Versionen von DeepStream zuzugreifen.
DeepStream-Konfiguration für YOLO26
Hier verwenden wir das marcoslucianops/DeepStream-Yolo GitHub-Repository, das NVIDIA DeepStream SDK-Unterstützung für YOLO-Modelle beinhaltet. Wir schätzen die Bemühungen von marcoslucianops für seine Beiträge!
Ultralytics mit den notwendigen Abhängigkeiten installieren
cd ~ pip install -U pip git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e ".[export]" onnxslimKlonen Sie das DeepStream-Yolo-Repository
cd ~ git clone https://github.com/marcoslucianops/DeepStream-YoloKopieren Sie die
export_yolo26.pyDatei vonDeepStream-Yolo/utilsVerzeichnis auf dasultralyticsOrdnercp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics cd ultralyticsLaden Sie das Ultralytics YOLO26 detect-Modell (.pt) Ihrer Wahl von den YOLO26 releases herunter. Hier verwenden wir yolo26s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.ptHinweis
Sie können auch ein benutzerdefiniert trainiertes YOLO26-Modell verwenden.
Modell in ONNX konvertieren
python3 export_yolo26.py -w yolo26s.ptÜbergeben Sie die folgenden Argumente an den obigen Befehl
Für DeepStream 5.1 entfernen Sie die
--dynamicArgument und verwendeopset12 oder niedriger. Die Standardeinstellungopsetist 17.--opset 12So ändern Sie die Inferenzgröße (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 dynamische Batch-Größen zu verwenden (DeepStream >= 6.1)
--dynamicUm statische Batch-Größen zu verwenden (Beispiel für Batch-Größe = 4)
--batch 4Kopieren Sie die generierte
.onnxModelldatei undlabels.txtDatei zurDeepStream-YoloOrdnercp yolo26s.pt.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-YoloLegen Sie die CUDA-Version entsprechend der installierten JetPack-Version fest
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.6Bibliothek kompilieren
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_YoloBearbeiten Sie die
config_infer_primary_yolo26.txtDatei entsprechend Ihrem Modell (für YOLO26s mit 80 Klassen)[property] ... onnx-file=yolo26s.pt.onnx ... num-detected-classes=80 ...Bearbeiten Sie die
deepstream_app_configDatei definiert... [primary-gie] ... config-file=config_infer_primary_yolo26.txtSie können auch die Videoquelle ändern in
deepstream_app_configDatei. 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.txt
Hinweis
Es dauert lange, die TensorRT-Engine-Datei zu generieren, bevor mit der Inferenz begonnen wird. Bitte haben Sie also Geduld.

Tipp
Wenn Sie das Modell in FP16-Genauigkeit konvertieren möchten, setzen Sie einfach model-engine-file=model_b1_gpu0_fp16.engine und network-mode=2 innerhalb config_infer_primary_yolo26.txt
INT8-Kalibrierung
Wenn Sie INT8-Präzision für die Inferenz verwenden möchten, müssen Sie die folgenden Schritte befolgen:
Hinweis
Aktuell funktioniert INT8 nicht mit TensorRT 10.x. Dieser Abschnitt des Leitfadens wurde mit TensorRT 8.x getestet, von dem erwartet wird, dass er funktioniert.
Set
OPENCVUmgebungsvariableexport OPENCV=1Bibliothek kompilieren
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_YoloFür den COCO-Datensatz laden Sie die val2017, extrahieren und verschieben Sie nach
DeepStream-YoloOrdnerErstellen Sie ein neues Verzeichnis für Kalibrierungsbilder
mkdir calibrationFühren Sie 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/ doneHinweis
NVIDIA empfiehlt mindestens 500 Bilder, um eine gute Genauigkeit zu erzielen. In diesem Beispiel werden 1000 Bilder ausgewählt, um eine bessere Genauigkeit zu erzielen (mehr Bilder = mehr Genauigkeit). Sie können dies über head -1000 einstellen. Zum Beispiel für 2000 Bilder: head -2000. Dieser Vorgang kann lange dauern.
Erstellen Sie das
calibration.txtDatei mit allen ausgewählten Bildernrealpath calibration/*jpg > calibration.txtUmgebungsvariablen festlegen
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1Hinweis
Höhere INT8_CALIB_BATCH_SIZE-Werte führen zu höherer Genauigkeit und schnellerer Kalibrierungsgeschwindigkeit. Stellen Sie diese entsprechend Ihrem GPU-Speicher ein.
Aktualisiere den
config_infer_primary_yolo26.txtDatei definiertVon
... model-engine-file=model_b1_gpu0_fp32.engine #int8-calib-file=calib.table ... network-mode=0 ...Um
... 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.txt
Multi-Stream-Einrichtung
Ansehen: Wie man mehrere Streams mit dem DeepStream SDK auf Jetson Nano mit Ultralytics YOLO26 ausführt 🎉
Um mehrere Streams unter einer einzigen DeepStream-Anwendung einzurichten, nehmen Sie die folgenden Änderungen an der deepstream_app_config.txt Datei:
Ändern Sie die Zeilen und Spalten, um eine Rasteranzeige entsprechend der Anzahl der gewünschten Streams zu erstellen. Für 4 Streams können wir beispielsweise 2 Zeilen und 2 Spalten hinzufügen.
[tiled-display] rows=2 columns=2Set
num-sources=4und fügen Sie dieuriEinträge für alle vier Streams.[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 NVIDIA Jetson Orin NX 16GB abschneiden.
Vergleichsübersicht

Detaillierte Vergleichstabelle
Performance
| Format | Status | Inferenzzeit (ms/Bild) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
| Format | Status | Inferenzzeit (ms/Bild) |
|---|---|---|
| TensorRT (FP32) | ✅ | 14.53 |
| TensorRT (FP16) | ✅ | 7.91 |
| TensorRT (INT8) | ✅ | 6.05 |
| Format | Status | Inferenzzeit (ms/Bild) |
|---|---|---|
| TensorRT (FP32) | ✅ | 32.05 |
| TensorRT (FP16) | ✅ | 15.55 |
| TensorRT (INT8) | ✅ | 10.43 |
| Format | Status | Inferenzzeit (ms/Bild) |
|---|---|---|
| TensorRT (FP32) | ✅ | 39.68 |
| TensorRT (FP16) | ✅ | 19.88 |
| TensorRT (INT8) | ✅ | 13.64 |
| Format | Status | Inferenzzeit (ms/Bild) |
|---|---|---|
| TensorRT (FP32) | ✅ | 80.65 |
| TensorRT (FP16) | ✅ | 39.06 |
| TensorRT (INT8) | ✅ | 22.83 |
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, müssen Sie zunächst das DeepStream SDK installieren, das mit Ihrer JetPack-Version kompatibel ist. Befolgen Sie die Schritt-für-Schritt-Anleitung in unserem Quick Start Guide, um Ihr NVIDIA Jetson für die YOLO26-Bereitstellung zu konfigurieren.
Welchen Vorteil bietet die Verwendung von TensorRT mit YOLO26 auf NVIDIA Jetson?
Die Verwendung von TensorRT mit YOLO26 optimiert das Modell für die Inferenz, wodurch die Latenz erheblich reduziert und der Durchsatz auf NVIDIA Jetson Geräten verbessert wird. TensorRT ermöglicht eine hochperformante, latenzarme Deep Learning-Inferenz 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 unterschiedlicher NVIDIA Jetson Hardware ausführen?
Ja, die Anleitung zur Bereitstellung von Ultralytics YOLO26 mit dem DeepStream SDK und TensorRT ist mit der gesamten 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. Detaillierte Schritte finden Sie im Abschnitt DeepStream Configuration for YOLO26.
Wie kann ich ein YOLO26-Modell für DeepStream in ONNX konvertieren?
Um ein YOLO26-Modell in das ONNX-Format für die Bereitstellung mit DeepStream zu konvertieren, verwenden Sie die utils/export_yolo26.py Skript aus dem DeepStream-Yolo Repository.
Hier ist ein Beispielbefehl:
python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplify
Weitere Informationen zur Modellkonvertierung finden Sie in unserem Abschnitt zum Modellexport.
Was sind die Performance-Benchmarks für YOLO auf NVIDIA Jetson Orin NX?
Die Leistung von YOLO26-Modellen auf 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/Bild, 168 FPS
Diese Benchmarks unterstreichen die Effizienz und Leistungsfähigkeit der Verwendung von TensorRT-optimierten YOLO26-Modellen auf NVIDIA Jetson-Hardware. Für weitere Details siehe unseren Abschnitt Benchmark-Ergebnisse.