Ultralytics YOLO11 on NVIDIA Jetson using DeepStream SDK and TensorRT
Guarda: How to Run Multiple Streams with DeepStream SDK on Jetson Nano using Ultralytics YOLO11
This comprehensive guide provides a detailed walkthrough for deploying Ultralytics YOLO11 on NVIDIA Jetson devices using DeepStream SDK and TensorRT. Here we use TensorRT to maximize the inference performance on the Jetson platform.
Nota
Questa guida è stata testata sia con Seeed Studio reComputer J4012, che si basa su NVIDIA Jetson Orin NX 16GB con la release JetPack JP5.1.3, sia con Seeed Studio reComputer J1020 v2, che si basa su NVIDIA Jetson Nano 4GB con la release JetPack JP4.6.4. Si prevede che funzionerà su tutta la gamma di hardware NVIDIA Jetson, compresi quelli più recenti e quelli legacy.
Che cos'è NVIDIA DeepStream?
NVIDIA's DeepStream SDK is a complete streaming analytics toolkit based on GStreamer for AI-based multi-sensor processing, video, audio, and image understanding. It's ideal for vision AI developers, software partners, startups, and OEMs building IVA (Intelligent Video Analytics) apps and services. You can now create stream-processing pipelines that incorporate neural networks and other complex processing tasks like tracking, video encoding/decoding, and video rendering. These pipelines enable real-time analytics on video, image, and sensor data. DeepStream's multi-platform support gives you a faster, easier way to develop vision AI applications and services on-premise, at the edge, and in the cloud.
Prerequisiti
Prima di iniziare a seguire questa guida:
- Visit our documentation, Quick Start Guide: NVIDIA Jetson with Ultralytics YOLO11 to set up your NVIDIA Jetson device with Ultralytics YOLO11
Installa DeepStream SDK secondo la versione di JetPack
- Per JetPack 4.6.4, installa DeepStream 6.0.1
- Per JetPack 5.1.3, installa DeepStream 6.3
Suggerimento
In questa guida abbiamo utilizzato il metodo del pacchetto Debian per installare DeepStream SDK sul dispositivo Jetson. Puoi anche visitare la pagina DeepStream SDK su Jetson (Archiviato) per accedere alle versioni precedenti di DeepStream.
DeepStream Configuration for YOLO11
Qui utilizziamo il repository GitHub marcoslucianops/DeepStream-Yolo che include il supporto dell'SDK DeepStream NVIDIA per i modelli YOLO . Apprezziamo gli sforzi di marcoslucianops per il suo contributo!
Installare le dipendenze
Clonare il seguente repository
Download Ultralytics YOLO11 detection model (.pt) of your choice from YOLO11 releases. Here we use yolov8s.pt.
Nota
You can also use a custom trained YOLO11 model.
Converti il modello in ONNX
Passare gli argomenti seguenti al comando precedente
Per DeepStream 6.0.1, utilizzare opset 12 o inferiore. L'opset predefinito è 16.
Per modificare la dimensione dell'inferenza (default: 640)
Esempio per 1280:
Per semplificare il ONNX modello (DeepStream >= 6.0)
Per utilizzare la dimensione batch dinamica (DeepStream >= 6.1)
Per utilizzare batch size statico (esempio per batch-size = 4)
Imposta la versione di CUDA in base alla versione di JetPack installata
Per JetPack 4.6.4:
Per JetPack 5.1.3:
Compilare la libreria
Modificare il file
config_infer_primary_yoloV8.txt
file in base al tuo modello (per YOLOv8s con 80 classi)Modificare il file
deepstream_app_config
fileÈ inoltre possibile modificare la sorgente video in
deepstream_app_config
file. Qui viene caricato un file video predefinito
Eseguire l'inferenza
Nota
Ci vorrà molto tempo per generare il file TensorRT motore prima di avviare l'inferenza. Quindi, per favore, sii paziente.
Suggerimento
If you want to convert the model to FP16 precision, simply set model-engine-file=model_b1_gpu0_fp16.engine
e network-mode=2
all'interno config_infer_primary_yoloV8.txt
Calibrazione INT8
Se vuoi utilizzare la precisione INT8 per l'inferenza, devi seguire i seguenti passaggi
Mettere
OPENCV
variabile d'ambienteCompilare la libreria
Per il set di dati COCO, scarica il file val2017, estrarre e spostare in
DeepStream-Yolo
cartellaCreare una nuova directory per le immagini di calibrazione
Eseguire quanto segue per selezionare 1000 immagini casuali dal set di dati COCO per eseguire la calibrazione
Nota
NVIDIA recommends at least 500 images to get a good accuracy. On this example, 1000 images are chosen to get better accuracy (more images = more accuracy). You can set it from head -1000. For example, for 2000 images, head -2000. This process can take a long time.
Creare il file
calibration.txt
file con tutte le immagini selezionateImpostare le variabili di ambiente
Nota
Valori più alti di INT8_CALIB_BATCH_SIZE si tradurranno in una maggiore precisione e velocità di calibrazione. Impostalo in base alla memoria di GPU .
Aggiorna il file
config_infer_primary_yoloV8.txt
fileDa
A
Eseguire l'inferenza
Configurazione MultiStream
Per configurare più flussi in un'unica applicazione deepstream, è possibile apportare le seguenti modifiche al file deepstream_app_config.txt
file
Modificare le righe e le colonne per creare una visualizzazione a griglia in base al numero di flussi che si desidera avere. Ad esempio, per 4 flussi, possiamo aggiungere 2 righe e 2 colonne.
Mettere
num-sources=4
e aggiungiuri
di tutti e 4 i corsi d'acqua
Eseguire l'inferenza
Risultati del benchmark
La seguente tabella riassume le prestazioni dei modelli YOLOv8s a diversi livelli di precisione TensorRT con una dimensione di input di 640x640 su NVIDIA Jetson Orin NX 16GB.
Nome del modello | Precisione | Tempo di inferenza (ms/im) | FPS |
---|---|---|---|
YOLOv8s | FP32 | 15.63 | 64 |
FP16 | 7.94 | 126 | |
INT8 | 5.53 | 181 |
Riconoscimenti
Questa guida è stata inizialmente creata dai nostri amici di Seeed Studio, Lakshantha ed Elaine.
DOMANDE FREQUENTI
How do I set up Ultralytics YOLO11 on an NVIDIA Jetson device?
To set up Ultralytics YOLO11 on an NVIDIA Jetson device, you first need to install the DeepStream SDK compatible with your JetPack version. Follow the step-by-step guide in our Quick Start Guide to configure your NVIDIA Jetson for YOLO11 deployment.
What is the benefit of using TensorRT with YOLO11 on NVIDIA Jetson?
Using TensorRT with YOLO11 optimizes the model for inference, significantly reducing latency and improving throughput on NVIDIA Jetson devices. TensorRT provides high-performance, low-latency deep learning inference through layer fusion, precision calibration, and kernel auto-tuning. This leads to faster and more efficient execution, particularly useful for real-time applications like video analytics and autonomous machines.
Can I run Ultralytics YOLO11 with DeepStream SDK across different NVIDIA Jetson hardware?
Yes, the guide for deploying Ultralytics YOLO11 with the DeepStream SDK and TensorRT is compatible across the entire NVIDIA Jetson lineup. This includes devices like the Jetson Orin NX 16GB with JetPack 5.1.3 and the Jetson Nano 4GB with JetPack 4.6.4. Refer to the section DeepStream Configuration for YOLO11 for detailed steps.
How can I convert a YOLO11 model to ONNX for DeepStream?
To convert a YOLO11 model to ONNX format for deployment with DeepStream, use the utils/export_yoloV8.py
dallo script DeepStream-Yolo deposito.
Ecco un esempio di comando:
Per maggiori dettagli sulla conversione dei modelli, consulta la nostra sezione sull'esportazione dei modelli.
What are the performance benchmarks for YOLO on NVIDIA Jetson Orin NX?
The performance of YOLO11 models on NVIDIA Jetson Orin NX 16GB varies based on TensorRT precision levels. For example, YOLOv8s models achieve:
- Precisione FP32: 15,63 ms/im, 64 FPS
- Precisione FP16: 7,94 ms/im, 126 FPS
- Precisione INT8: 5,53 ms/im, 181 FPS
These benchmarks underscore the efficiency and capability of using TensorRT-optimized YOLO11 models on NVIDIA Jetson hardware. For further details, see our Benchmark Results section.