Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO26 auf NVIDIA Jetson mit dem 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 nutzen wir TensorRT, um die Inferenzleistung auf der Jetson-Plattform zu maximieren.

NVIDIA DeepStream SDK on Jetson platform
Hinweis

Dieser Leitfaden wurde mit dem NVIDIA Jetson Orin Nano Super Developer Kit getestet, das mit dem neuesten stabilen JetPack-Release JP6.1 läuft, dem Seeed Studio reComputer J4012, das auf dem NVIDIA Jetson Orin NX 16GB basiert und mit dem JetPack-Release JP5.1.3 läuft, sowie dem Seeed Studio reComputer J1020 v2, das auf dem NVIDIA Jetson Nano 4GB basiert und mit dem JetPack-Release JP4.6.4 läuft. Es wird erwartet, dass er auf der gesamten NVIDIA Jetson-Hardware-Reihe funktioniert, einschließlich aktueller und älterer Modelle.

Link to this sectionWas ist NVIDIA DeepStream?#

NVIDIA's DeepStream SDK ist ein vollständiges Streaming-Analytics-Toolkit auf Basis von GStreamer für KI-gestützte Multi-Sensor-Verarbeitung, Video-, Audio- und Bildverständnis. Es ist ideal für Vision-KI-Entwickler, Softwarepartner, Startups und OEMs, die IVA (Intelligent Video Analytics) Apps 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. Die Multi-Plattform-Unterstützung von DeepStream bietet dir einen schnelleren und einfacheren Weg, Vision-KI-Anwendungen und -Dienste lokal, an der Edge und in der Cloud zu entwickeln.

Link to this sectionVoraussetzungen#

Bevor du diesem Leitfaden folgst:

Tipp

In diesem Leitfaden haben wir die Debian-Paketmethode zur Installation des DeepStream SDK auf dem Jetson-Gerät verwendet. Du kannst auch das DeepStream SDK on Jetson (Archived) besuchen, um auf ältere Versionen von DeepStream zuzugreifen.

Link to this sectionDeepStream-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!

  1. Installiere Ultralytics mit den erforderlichen Abhängigkeiten.

    cd ~
    pip install -U pip
    git clone https://github.com/ultralytics/ultralytics
    cd ultralytics
    pip install -e ".[export]" onnxslim
  2. Kone das DeepStream-Yolo Repository.

    cd ~
    git clone https://github.com/marcoslucianops/DeepStream-Yolo
  3. Kopiere die export_yolo26.py-Datei aus dem DeepStream-Yolo/utils-Verzeichnis in den ultralytics-Ordner.

    cp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics
    cd ultralytics
  4. Lade ein 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
Hinweis

Du kannst auch ein benutzerdefiniertes YOLO26-Modell verwenden.

  1. Konvertiere das Modell in ONNX.

    python3 export_yolo26.py -w yolo26s.pt
Übergebe die unten stehenden Argumente an den obigen Befehl.

Entferne für DeepStream 5.1 das --dynamic-Argument und verwende opset 12 oder niedriger. Das Standard-opset ist 17.

--opset 12

Um die Inferenzgröße zu ändern (Standard: 640)

-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTH

Beispiel für 1280:

-s 1280
or
-s 1280 1280

Um das ONNX-Modell zu vereinfachen (DeepStream >= 6.0)

--simplify

Um dynamische Batch-Größen zu verwenden (DeepStream >= 6.1)

--dynamic

Um statische Batch-Größen zu verwenden (Beispiel für Batch-Größe = 4)

--batch 4
  1. Kopiere die generierte .onnx-Modelldatei und die labels.txt-Datei in den DeepStream-Yolo-Ordner.

    cp yolo26s.pt.onnx labels.txt ~/DeepStream-Yolo
    cd ~/DeepStream-Yolo
  2. Setze die CUDA-Version entsprechend der installierten JetPack-Version.

    Für JetPack 4.6.4:

    export CUDA_VER=10.2

    Für JetPack 5.1.3:

    export CUDA_VER=11.4

    Für JetPack 6.1:

    export CUDA_VER=12.6
  3. Kompiliere die Bibliothek.

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
  4. Bearbeite die Datei config_infer_primary_yolo26.txt entsprechend deinem Modell (für YOLO26s mit 80 Klassen).

    [property]
    ...
    onnx-file=yolo26s.pt.onnx
    ...
    num-detected-classes=80
    ...
  5. Bearbeite die Datei deepstream_app_config.

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yolo26.txt
  6. 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

Link to this sectionFühre die Inferenz aus.#

deepstream-app -c deepstream_app_config.txt
Hinweis

Es wird eine Weile dauern, die TensorRT-Engine-Datei zu generieren, bevor die Inferenz startet. Bitte habe also etwas Geduld.

YOLO26 with deepstream
Tipp

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 von config_infer_primary_yolo26.txt.

Link to this sectionINT8-Kalibrierung#

Wenn du INT8-Präzision für die Inferenz verwenden möchtest, musst du die folgenden Schritte befolgen:

Hinweis

Derzeit funktioniert INT8 nicht mit TensorRT 10.x. Dieser Abschnitt des Leitfadens wurde mit TensorRT 8.x getestet, bei dem das funktionieren sollte.

  1. Setze die OPENCV-Umgebungsvariable.

    export OPENCV=1
  2. Kompiliere die Bibliothek.

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
  3. Für den COCO-Datensatz lade val2017 herunter, entpacke ihn und verschiebe ihn in den DeepStream-Yolo-Ordner.

  4. Erstelle ein neues Verzeichnis für Kalibrierungsbilder.

    mkdir calibration
  5. 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
Hinweis

NVIDIA empfiehlt mindestens 500 Bilder, um eine gute Genauigkeit zu erzielen. In diesem Beispiel werden 1000 Bilder gewählt, um eine bessere Genauigkeit zu erreichen (mehr Bilder = mehr Genauigkeit). Du kannst dies über head -1000 einstellen. Zum Beispiel für 2000 Bilder: head -2000. Dieser Prozess kann lange dauern.

  1. Erstelle die calibration.txt-Datei mit allen ausgewählten Bildern.

    realpath calibration/*jpg > calibration.txt
  2. Setze die Umgebungsvariablen.

    export INT8_CALIB_IMG_PATH=calibration.txt
    export INT8_CALIB_BATCH_SIZE=1
Hinweis

Höhere INT8_CALIB_BATCH_SIZE-Werte führen zu mehr Genauigkeit und einer schnelleren Kalibrierungsgeschwindigkeit. Setze diesen Wert entsprechend deinem GPU-Speicher.

  1. Aktualisiere die Datei config_infer_primary_yolo26.txt.

    Von

    ...
    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
    ...

Link to this sectionFühre die Inferenz aus.#

deepstream-app -c deepstream_app_config.txt

Link to this sectionMultiStream-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 an der deepstream_app_config.txt-Datei vor:

  1. Ändere die Zeilen und Spalten, um eine Rasteranzeige 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
  2. Setze num-sources=4 und füge die uri-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

Link to this sectionFühre die Inferenz aus.#

deepstream-app -c deepstream_app_config.txt
DeepStream multi-camera streaming configuration

Link to this sectionBenchmark-Ergebnisse#

Die folgenden Benchmarks fassen zusammen, wie YOLO26-Modelle bei verschiedenen TensorRT-Präzisionsstufen mit einer Eingabegröße von 640x640 auf dem NVIDIA Jetson Orin NX 16GB abschneiden.

Link to this sectionVergleichsdiagramm#

NVIDIA Jetson DeepStream performance benchmarks

Link to this sectionDetaillierte Vergleichstabelle#

Leistung
FormatStatusInferenzzeit (ms/im)
TensorRT (FP32)8.64
TensorRT (FP16)5.27
TensorRT (INT8)4.54

Link to this sectionDanksagungen#

Dieser Leitfaden wurde ursprünglich von unseren Freunden bei Seeed Studio, Lakshantha und Elaine, erstellt.

Link to this sectionFAQ#

Link to this sectionWie 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 deinen NVIDIA Jetson für die YOLO26-Bereitstellung zu konfigurieren.

Link to this sectionWas 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 hochperformante Inferenz mit niedriger 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 Videoanalysen und autonome Maschinen ist.

Link to this sectionKann ich Ultralytics YOLO26 mit dem DeepStream SDK auf verschiedenen NVIDIA Jetson-Hardware-Systemen ausführen?#

Ja, der Leitfaden für die Bereitstellung von Ultralytics YOLO26 mit dem DeepStream SDK und TensorRT ist mit der gesamten NVIDIA Jetson-Reihe kompatibel. Dies beinhaltet 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-Konfiguration für YOLO26 für detaillierte Schritte.

Link to this sectionWie 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 --simplify

Weitere Details zur Modellkonvertierung findest du in unserem Modell-Export-Abschnitt.

Link to this sectionWas sind die Performance-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äzisionsstufe. Zum Beispiel erreichen YOLO26s-Modelle:

  • FP32-Präzision: 14.6 ms/Bild, 68.5 FPS
  • FP16-Präzision: 7.94 ms/Bild, 126 FPS
  • INT8-Präzision: 5,95 ms/Bild, 168 FPS

Diese Benchmarks unterstreichen die Effizienz und Leistungsfähigkeit des Einsatzes von TensorRT-optimierten YOLO26-Modellen auf NVIDIA Jetson-Hardware. Weitere Details findest du in unserem Abschnitt Benchmark Results.

Kommentare