Ultralytics YOLO11 en NVIDIA Jetson utilizando DeepStream SDK y TensorRT
Observa: Cómo ejecutar múltiples flujos con DeepStream SDK en Jetson Nano utilizando Ultralytics YOLO11
Esta completa guía proporciona un recorrido detallado para implementar Ultralytics YOLO11 en NVIDIA dispositivos Jetson utilizando DeepStream SDK y TensorRT. Aquí utilizamos TensorRT para maximizar el rendimiento de la inferencia en la plataforma 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.
¿Qué es NVIDIA DeepStream?
NVIDIADeepStream SDK es un completo kit de herramientas de análisis de streaming basado en GStreamer para el procesamiento multisensor basado en IA y la comprensión de vídeo, audio e imágenes. Es ideal para desarrolladores de IA de visión, socios de software, nuevas empresas y fabricantes de equipos originales que crean aplicaciones y servicios de IVA (análisis inteligente de vídeo). Ahora puede crear canales de procesamiento de flujos que incorporen redes neuronales y otras tareas de procesamiento complejas como el seguimiento, la codificación y descodificación de vídeo y el renderizado de vídeo. Estos canales permiten el análisis en tiempo real de datos de vídeo, imágenes y sensores. La compatibilidad multiplataforma de DeepStream le ofrece una forma más rápida y sencilla de desarrollar aplicaciones y servicios de IA de visión in situ, en el perímetro y en la nube.
Requisitos previos
Antes de empezar a seguir esta guía:
- Visita nuestra documentación, Guía de inicio rápido: NVIDIA Jetson con Ultralytics YOLO11 para configurar su dispositivo NVIDIA Jetson con Ultralytics YOLO11
-
Instale DeepStream SDK según la versión de JetPack
- Para JetPack 4.6.4, instale DeepStream 6.0.1
- Para JetPack 5.1.3, instale DeepStream 6.3
- For JetPack 6.1, install DeepStream 7.1
Consejo
En esta guía hemos utilizado el método del paquete Debian para instalar DeepStream SDK en el dispositivo Jetson. También puedes visitar DeepStream SDK on Jetson (Archived) para acceder a versiones anteriores de DeepStream.
Configuración de DeepStream para YOLO11
Aquí estamos usando marcoslucianops/DeepStream-Yolo repositorio GitHub que incluye NVIDIA DeepStream SDK soporte para YOLO modelos. Agradecemos los esfuerzos de marcoslucianops por sus contribuciones.
-
Install Ultralytics with necessary dependencies
-
Clone the DeepStream-Yolo repository
-
Copy the
export_yoloV8.py
file fromDeepStream-Yolo/utils
directory to theultralytics
carpetaNota
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
También puede utilizar un modelo YOLO11 entrenado a medida.
-
Convertir el modelo en ONNX
Pase los siguientes argumentos al comando anterior
Para DeepStream 6.0.1, utilice opset 12 o inferior. El opset por defecto es 16.
Para cambiar el tamaño de inferencia (por defecto: 640)
Ejemplo para 1280:
Para simplificar el modelo ONNX (DeepStream >= 6.0)
Para utilizar el tamaño de lote dinámico (DeepStream >= 6.1)
Para utilizar el tamaño de lote estático (ejemplo para tamaño de lote = 4)
-
Copy the generated
.onnx
model file andlabels.txt
file to theDeepStream-Yolo
carpeta -
Configure la versión CUDA de acuerdo con la versión de JetPack instalada
Para JetPack 4.6.4:
Para JetPack 5.1.3:
For Jetpack 6.1:
-
Compilar la biblioteca
-
Editar el
config_infer_primary_yoloV8.txt
file according to your model (for YOLO11s with 80 classes) -
Editar el
deepstream_app_config
archivo -
También puedes cambiar la fuente de vídeo en
deepstream_app_config
archivo. Aquí se carga un archivo de vídeo por defecto
Ejecutar Inferencia
Nota
Se tardará mucho tiempo en generar el archivo del motor TensorRT antes de iniciar la inferencia. Así que por favor sea paciente.
Consejo
If you want to convert the model to FP16 precision, simply set model-engine-file=model_b1_gpu0_fp16.engine
y network-mode=2
en config_infer_primary_yoloV8.txt
Calibración INT8
Si desea utilizar la precisión INT8 para la inferencia, debe seguir los siguientes pasos
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.
-
Establecer
OPENCV
variable de entorno -
Compilar la biblioteca
-
Para el conjunto de datos COCO, descargue el val2017extraer y mover a
DeepStream-Yolo
carpeta -
Crear un nuevo directorio para las imágenes de calibración
-
Ejecute lo siguiente para seleccionar 1000 imágenes aleatorias del conjunto de datos COCO para ejecutar la calibración
Nota
NVIDIA recomienda al menos 500 imágenes para obtener una buena precisión. En este ejemplo, se han elegido 1000 imágenes para obtener una mayor precisión (más imágenes = más precisión). Se puede ajustar desde head -1000. Por ejemplo, para 2000 imágenes, la cabeza -2000. Este proceso puede llevar mucho tiempo.
-
Crear el
calibration.txt
archivo con todas las imágenes seleccionadas -
Establecer variables de entorno
Nota
Valores más altos de INT8_CALIB_BATCH_SIZE resultarán en mayor precisión y velocidad de calibración. Ajústelo en función de su memoria GPU .
-
Actualizar el
config_infer_primary_yoloV8.txt
archivoEn
A
Ejecutar Inferencia
Configuración MultiStream
Para configurar varios flujos en una única aplicación de deepstream, puedes realizar los siguientes cambios en el archivo deepstream_app_config.txt
archivo
-
Cambie las filas y columnas para construir una visualización de cuadrícula según el número de flujos que desee tener. Por ejemplo, para 4 flujos, podemos añadir 2 filas y 2 columnas.
-
Establecer
num-sources=4
y añadauri
de los 4 flujos
Ejecutar Inferencia
Resultados de referencia
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.
Cuadro comparativo
Cuadro comparativo detallado
Rendimiento
Formato | Estado | Tiempo de inferencia (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 8.64 |
TensorRT (FP16) | ✅ | 5.27 |
TensorRT (INT8) | ✅ | 4.54 |
Formato | Estado | Tiempo de inferencia (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 14.53 |
TensorRT (FP16) | ✅ | 7.91 |
TensorRT (INT8) | ✅ | 6.05 |
Formato | Estado | Tiempo de inferencia (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 32.05 |
TensorRT (FP16) | ✅ | 15.55 |
TensorRT (INT8) | ✅ | 10.43 |
Formato | Estado | Tiempo de inferencia (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 39.68 |
TensorRT (FP16) | ✅ | 19.88 |
TensorRT (INT8) | ✅ | 13.64 |
Formato | Estado | Tiempo de inferencia (ms/im) |
---|---|---|
TensorRT (FP32) | ✅ | 80.65 |
TensorRT (FP16) | ✅ | 39.06 |
TensorRT (INT8) | ✅ | 22.83 |
Agradecimientos
Esta guía fue creada inicialmente por nuestros amigos de Seeed Studio, Lakshantha y Elaine.
PREGUNTAS FRECUENTES
¿Cómo se configura Ultralytics YOLO11 en un dispositivo NVIDIA Jetson?
Para configurar Ultralytics YOLO11 en un dispositivo NVIDIA Jetson, primero debe instalar el SDK de DeepStream compatible con su versión de JetPack. Siga la guía paso a paso de nuestra Guía de inicio rápido para configurar su NVIDIA Jetson para la implementación de YOLO11 .
¿Cuál es la ventaja de utilizar TensorRT con YOLO11 en NVIDIA Jetson?
El uso de TensorRT con YOLO11 optimiza el modelo para la inferencia, lo que reduce significativamente la latencia y mejora el rendimiento en los dispositivos Jetson NVIDIA . TensorRT proporciona una inferencia de aprendizaje profundo de alto rendimiento y baja latencia a través de la fusión de capas, la calibración de precisión y el autoajuste del núcleo. Esto conduce a una ejecución más rápida y eficiente, especialmente útil para aplicaciones en tiempo real como el análisis de vídeo y las máquinas autónomas.
¿Puedo ejecutar Ultralytics YOLO11 con DeepStream SDK en diferentes equipos Jetson de NVIDIA ?
Sí, la guía para desplegar Ultralytics YOLO11 con el SDK DeepStream y TensorRT es compatible con toda la gama Jetson de NVIDIA . Esto incluye dispositivos como el Jetson Orin NX 16GB con JetPack 5.1.3 y el Jetson Nano 4GB con JetPack 4.6.4. Consulte la sección Configuración de DeepStream para YOLO11 para conocer los pasos detallados.
¿Cómo puedo convertir un modelo YOLO11 a ONNX para DeepStream?
Para convertir un modelo YOLO11 al formato ONNX para su despliegue con DeepStream, utilice la función utils/export_yoloV8.py
del DeepStream-Yolo repositorio.
Aquí tienes un comando de ejemplo:
Para más detalles sobre la conversión de modelos, consulte nuestra sección de exportación de modelos.
¿Cuáles son las pruebas de rendimiento de YOLO en 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
- FP16 Precisión: 7,94 ms/im, 126 FPS
- INT8 Precision: 5.95 ms/im, 168 FPS
Estas pruebas ponen de manifiesto la eficacia y capacidad de utilizar modelos YOLO11 optimizados para TensorRT en el hardware NVIDIA Jetson. Para más información, consulta nuestra sección de resultados de pruebas.