Ultralytics YOLO11 su NVIDIA Jetson utilizzando DeepStream SDK e TensorRT
Guarda: Come eseguire flussi multipli con DeepStream SDK su Jetson Nano utilizzando Ultralytics YOLO11
Questa guida completa fornisce una guida dettagliata per l'implementazione di Ultralytics YOLO11 su NVIDIA dispositivi Jetson utilizzando DeepStream SDK e TensorRT. Qui utilizziamo TensorRT per massimizzare le prestazioni di inferenza sulla piattaforma Jetson.
Nota
This guide has been tested with NVIDIA Jetson Orin Nano Super Developer Kit running the latest stable JetPack release of JP6.1, Seeed Studio reComputer J4012 which is based on NVIDIA Jetson Orin NX 16GB running JetPack release of JP5.1.3 and Seeed Studio reComputer J1020 v2 which is based on NVIDIA Jetson Nano 4GB running JetPack release of JP4.6.4. It is expected to work across all the NVIDIA Jetson hardware lineup including latest and legacy.
Che cos'è NVIDIA DeepStream?
NVIDIADeepStream SDK è un toolkit completo per l'analisi dello streaming basato su GStreamer per l'elaborazione multisensore basata sull'intelligenza artificiale, la comprensione di video, audio e immagini. È ideale per gli sviluppatori di AI vision, i partner software, le startup e gli OEM che realizzano applicazioni e servizi IVA (Intelligent Video Analytics). È ora possibile creare pipeline di elaborazione dei flussi che incorporano reti neurali e altre attività di elaborazione complesse come il tracking, la codifica/decodifica video e il rendering video. Queste pipeline consentono l'analisi in tempo reale di dati video, immagini e sensori. Il supporto multipiattaforma di DeepStream offre un modo più rapido e semplice per sviluppare applicazioni e servizi di IA di visione in sede, sul bordo e nel cloud.
Prerequisiti
Prima di iniziare a seguire questa guida:
- Visitate la nostra documentazione, Guida rapida: NVIDIA Jetson con Ultralytics YOLO11 per configurare il vostro dispositivo NVIDIA Jetson con Ultralytics YOLO11
-
Installare DeepStream SDK in base alla versione di JetPack
- Per JetPack 4.6.4, installare DeepStream 6.0.1
- Per JetPack 5.1.3, installare DeepStream 6.3
- For JetPack 6.1, install DeepStream 7.1
Suggerimento
In questa guida abbiamo utilizzato il metodo del pacchetto Debian per installare DeepStream SDK sul dispositivo Jetson. È inoltre possibile visitare la pagina DeepStream SDK su Jetson (archiviata) per accedere alle versioni precedenti di DeepStream.
Configurazione di DeepStream per YOLO11
Qui stiamo usando il repository GitHub marcoslucianops/DeepStream-Yolo che include il supporto dell'SDK DeepStream NVIDIA per i modelli YOLO . Apprezziamo gli sforzi di marcoslucianops per i suoi contributi!
-
Install Ultralytics with necessary dependencies
-
Clone the DeepStream-Yolo repository
-
Copy the
export_yoloV8.py
file fromDeepStream-Yolo/utils
directory to theultralytics
cartellaNota
export_yoloV8.py
works for both YOLOv8 and YOLO11 models. -
Download Ultralytics YOLO11 detection model (.pt) of your choice from YOLO11 releases. Here we use yolo11s.pt.
Nota
È anche possibile utilizzare un modello YOLO11 addestrato in modo personalizzato.
-
Convertire il modello in ONNX
Passate i seguenti argomenti al comando sopra indicato
Per DeepStream 6.0.1, utilizzare l'opset 12 o inferiore. L'opset predefinito è 16.
Per modificare la dimensione dell'inferenza (default: 640)
Esempio per 1280:
Per semplificare il modello ONNX (DeepStream >= 6.0)
Per utilizzare la dimensione dinamica del batch (DeepStream >= 6.1)
Per utilizzare una dimensione di batch statica (esempio per batch-size = 4)
-
Copy the generated
.onnx
model file andlabels.txt
file to theDeepStream-Yolo
cartella -
Impostare la versione di CUDA in base alla versione di JetPack installata
Per JetPack 4.6.4:
Per JetPack 5.1.3:
For Jetpack 6.1:
-
Compilare la libreria
-
Modificare il
config_infer_primary_yoloV8.txt
file according to your model (for YOLO11s with 80 classes) -
Modificare il
deepstream_app_config
file -
È inoltre possibile cambiare 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 del motore TensorRT prima di avviare l'inferenza. Si prega quindi di avere pazienza.
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 si desidera utilizzare la precisione INT8 per l'inferenza, è necessario seguire i seguenti passaggi
Nota
Currently INT8 does not work with TensorRT 10.x. This section of the guide has been tested with TensorRT 8.x which is expected to work.
-
Set
OPENCV
variabile d'ambiente -
Compilare la libreria
-
Per il set di dati COCO, scaricare il file val2017, estrarre e spostare in
DeepStream-Yolo
cartella -
Creare 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 raccomanda almeno 500 immagini per ottenere una buona precisione. In questo esempio, sono state scelte 1000 immagini per ottenere una maggiore precisione (più immagini = maggiore precisione). Si può impostare da testa -1000. Ad esempio, per 2000 immagini, testa -2000. Questo processo può richiedere molto tempo.
-
Creare il
calibration.txt
file con tutte le immagini selezionate -
Impostare le variabili d'ambiente
Nota
Valori più alti di INT8_CALIB_BATCH_SIZE garantiscono una maggiore precisione e una maggiore velocità di calibrazione. Impostarlo in base alla memoria di GPU .
-
Aggiornare il
config_infer_primary_yoloV8.txt
fileDa
A
Eseguire l'inferenza
Configurazione MultiStream
Per impostare più flussi sotto un'unica applicazione deepstream, si possono apportare le seguenti modifiche al file deepstream_app_config.txt
file
-
Modificare le righe e le colonne per creare una griglia di visualizzazione in base al numero di flussi che si desidera avere. Ad esempio, per 4 flussi, si possono aggiungere 2 righe e 2 colonne.
-
Set
num-sources=4
e aggiungereuri
di tutti e 4 i flussi
Eseguire l'inferenza
Risultati del benchmark
The following benchmarks summarizes how YOLO11 models perform at different TensorRT precision levels with an input size of 640x640 on NVIDIA Jetson Orin NX 16GB.
Tabella di confronto
Tabella di confronto dettagliata
Prestazioni
Formato | Stato | Tempo di inferenza (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 8.64 |
TensorRT (FP16) | ✅ | 5.27 |
TensorRT (INT8) | ✅ | 4.54 |
Formato | Stato | Tempo di inferenza (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 14.53 |
TensorRT (FP16) | ✅ | 7.91 |
TensorRT (INT8) | ✅ | 6.05 |
Formato | Stato | Tempo di inferenza (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 32.05 |
TensorRT (FP16) | ✅ | 15.55 |
TensorRT (INT8) | ✅ | 10.43 |
Formato | Stato | Tempo di inferenza (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 39.68 |
TensorRT (FP16) | ✅ | 19.88 |
TensorRT (INT8) | ✅ | 13.64 |
Formato | Stato | Tempo di inferenza (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 80.65 |
TensorRT (FP16) | ✅ | 39.06 |
TensorRT (INT8) | ✅ | 22.83 |
Ringraziamenti
Questa guida è stata inizialmente creata dai nostri amici di Seeed Studio, Lakshantha ed Elaine.
FAQ
Come si configura Ultralytics YOLO11 su un dispositivo NVIDIA Jetson?
Per configurare Ultralytics YOLO11 su un dispositivo NVIDIA Jetson, occorre innanzitutto installare l' SDK DeepStream compatibile con la propria versione di JetPack. Per configurare il dispositivo NVIDIA Jetson per la distribuzione di YOLO11 , seguire la guida passo passo contenuta nella nostra Guida rapida.
Qual è il vantaggio di utilizzare TensorRT con YOLO11 su NVIDIA Jetson?
L'uso di TensorRT con YOLO11 ottimizza il modello per l'inferenza, riducendo significativamente la latenza e migliorando il throughput sui dispositivi NVIDIA Jetson. TensorRT offre un'inferenza di deep learning ad alte prestazioni e bassa latenza grazie alla fusione dei livelli, alla calibrazione di precisione e all'autotuning del kernel. Ciò consente un'esecuzione più rapida ed efficiente, particolarmente utile per applicazioni in tempo reale come l'analisi video e le macchine autonome.
È possibile eseguire Ultralytics YOLO11 con DeepStream SDK su diversi hardware NVIDIA Jetson?
Sì, la guida per la distribuzione di Ultralytics YOLO11 con l'SDK DeepStream e TensorRT è compatibile con l'intera gamma di Jetson NVIDIA . Questo include dispositivi come Jetson Orin NX 16GB con JetPack 5.1.3 e Jetson Nano 4GB con JetPack 4.6.4. Per informazioni dettagliate, consultare la sezione Configurazione di DeepStream per YOLO11.
Come posso convertire un modello YOLO11 in ONNX per DeepStream?
Per convertire un modello YOLO11 in formato ONNX per la distribuzione con DeepStream, usare il metodo utils/export_yoloV8.py
dallo script DeepStream-Yolo deposito.
Ecco un esempio di comando:
Per maggiori dettagli sulla conversione dei modelli, consultate la nostra sezione sull'esportazione dei modelli.
Quali sono i benchmark delle prestazioni di YOLO su NVIDIA Jetson Orin NX?
The performance of YOLO11 models on NVIDIA Jetson Orin NX 16GB varies based on TensorRT precision levels. For example, YOLO11s models achieve:
- FP32 Precision: 14.6 ms/im, 68.5 FPS
- Precisione FP16: 7,94 ms/im, 126 FPS
- INT8 Precision: 5.95 ms/im, 168 FPS
Questi benchmark sottolineano l'efficienza e la capacità di utilizzare i modelli TensorRT ottimizzati YOLO11 sull'hardware NVIDIA Jetson. Per ulteriori dettagli, consultare la sezione Risultati dei benchmark.