Ultralytics YOLO26 en NVIDIA Jetson con DeepStream SDK y TensorRT#
Ver: Cómo usar los modelos Ultralytics YOLO26 con NVIDIA Deepstream en Jetson Orin NX 🚀
Esta guía completa explica detalladamente cómo implementar Ultralytics YOLO26 en dispositivos NVIDIA Jetson con DeepStream SDK y TensorRT. Aquí usamos TensorRT para maximizar el rendimiento de la inferencia en la plataforma Jetson.
Esta guía explica cómo configurar DeepStream para YOLO26, realizar la calibración INT8, configurar varios flujos y consultar los resultados de las pruebas de rendimiento.

Esta guía se ha probado con el NVIDIA Jetson Orin Nano Super Developer Kit, que ejecuta la versión JP6.1 de JetPack, con el Seeed Studio reComputer J4012, basado en NVIDIA Jetson Orin NX de 16 GB y con la versión JP5.1.3 de JetPack, y con el Seeed Studio reComputer J1020 v2, basado en NVIDIA Jetson Nano de 4 GB y con la versión JP4.6.4 de JetPack. Se espera que funcione en toda la gama de hardware NVIDIA Jetson, incluidos los modelos más recientes y los antiguos.
¿Qué es NVIDIA DeepStream?#
DeepStream SDK de NVIDIA es un conjunto de herramientas completo de análisis de flujos basado en GStreamer para el procesamiento multisensor con IA y la comprensión de vídeo, audio e imágenes. Es ideal para desarrolladores de IA visual, socios de software, startups y fabricantes de equipos originales que desarrollan aplicaciones y servicios de análisis de vídeo inteligente (IVA). Ahora puedes crear canalizaciones de procesamiento de flujos que incorporen redes neuronales y otras tareas de procesamiento complejas, como el seguimiento, la codificación y decodificación de vídeo, y la renderización de vídeo. Estas canalizaciones permiten realizar análisis en tiempo real de datos de vídeo, imágenes y sensores. La compatibilidad multiplataforma de DeepStream te ofrece una forma más rápida y sencilla de desarrollar aplicaciones y servicios de IA visual en tus instalaciones, en el edge y en la nube.
Requisitos previos#
Antes de seguir esta guía:
- Consulta nuestra documentación, Guía de inicio rápido: NVIDIA Jetson con Ultralytics YOLO26, para configurar tu dispositivo NVIDIA Jetson con Ultralytics YOLO26
- Instala DeepStream SDK según la versión de JetPack
- Para JetPack 4.6.4, instala DeepStream 6.0.1
- Para JetPack 5.1.3, instala DeepStream 6.3
- Para JetPack 6.1, instala DeepStream 7.1
- Para JetPack 7.1, instala DeepStream 9.0
En esta guía hemos utilizado el método de paquetes Debian para instalar DeepStream SDK en el dispositivo Jetson. También puedes consultar DeepStream SDK en Jetson (archivado) para acceder a versiones antiguas de DeepStream.
Configuración de DeepStream para YOLO26#
Aquí usamos el repositorio de GitHub marcoslucianops/DeepStream-Yolo, que incluye compatibilidad con los modelos YOLO para NVIDIA DeepStream SDK. ¡Agradecemos a marcoslucianops su esfuerzo y sus contribuciones!
-
Instala Ultralytics con las dependencias necesarias
pip install ultralytics onnx onnxslim -
Clona el repositorio DeepStream-Yolo
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
Descarga el modelo de detección Ultralytics YOLO26 (.pt) que prefieras desde el proyecto YOLO26. Aquí usamos yolo26s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
También puedes usar un modelo YOLO26 entrenado a medida.
-
Convierte el modelo a ONNX y escribe el archivo
labels.txtdel que DeepStream lee los nombres de las clasesfrom ultralytics import YOLO model = YOLO("yolo26s.pt") model.export(format="onnx", nms=False, agnostic_nms=True) # crea 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))
nms=False exporta el cabezal sin NMS y agnostic_nms=True conserva una sola clase por detección para que cluster-mode=4 (sin agrupamiento) en la configuración de DeepStream no dibuje dos veces un cuadro. Añade imgsz=1280 para cambiar el tamaño de inferencia (predeterminado: 640), batch=4 para un tamaño de lote de 4 (el lote exportado es estático, por lo que debe coincidir con batch-size en la configuración de DeepStream) y opset=12 para TensorRT 8.2 o anterior (DeepStream 6.0.1 y versiones anteriores). Consulta los argumentos de exportación para ver la lista completa.
-
Copia el archivo de modelo generado
.onnxy el archivolabels.txten la carpetaDeepStream-Yolocp yolo26s.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
Establece la versión de CUDA según la versión de JetPack instalada
Para JetPack 4.6.4:
export CUDA_VER=10.2Para JetPack 5.1.3:
export CUDA_VER=11.4Para JetPack 6.1:
export CUDA_VER=12.6Para JetPack 7.1:
export CUDA_VER=13.0 -
Compila la biblioteca
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Edita el archivo
config_infer_primary_yolo26.txtsegún tu modelo (para YOLO26s con 80 clases)[property] ... onnx-file=yolo26s.onnx ... num-detected-classes=80 ... parse-bbox-func-name=NvDsInferParseYolo ...
YOLO26 redimensiona la entrada con relleno centrado y se ejecuta sin NMS. Para obtener la mejor precisión, añade lo siguiente a la sección [property] de config_infer_primary_yolo26.txt:
[property]
...
maintain-aspect-ratio=1
symmetric-padding=1
cluster-mode=4
...-
Edita el archivo
deepstream_app_config... [primary-gie] ... config-file=config_infer_primary_yolo26.txt -
También puedes cambiar la fuente de vídeo en el archivo
deepstream_app_config. Aquí se carga un archivo de vídeo de forma predeterminada... [source0] ... uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
Ejecuta la inferencia#
deepstream-app -c deepstream_app_config.txtLa generación del archivo del motor TensorRT tardará bastante antes de que comience la inferencia. Ten paciencia.

Si quieres convertir el modelo a precisión FP16, solo tienes que establecer model-engine-file=model_b1_gpu0_fp16.engine y network-mode=2 dentro de config_infer_primary_yolo26.txt
Calibración INT8#
Si quieres usar precisión INT8 para la inferencia, sigue estos pasos:
Actualmente, INT8 no funciona con TensorRT 10.x. Esta sección de la guía se ha probado con TensorRT 8.x, que debería funcionar.
-
Establece la variable de entorno
OPENCVexport OPENCV=1 -
Compila la biblioteca
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Para el conjunto de datos COCO, descarga val2017, extráelo y muévelo a la carpeta
DeepStream-Yolo -
Crea un directorio nuevo para las imágenes de calibración
mkdir calibration -
Ejecuta lo siguiente para seleccionar 1000 imágenes aleatorias del conjunto de datos COCO y realizar la calibración
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ done
NVIDIA recomienda usar al menos 500 imágenes para obtener una buena precisión. En este ejemplo se eligen 1000 imágenes para conseguir una mayor precisión (a más imágenes, mayor precisión). Puedes cambiar el número con head -1000. Por ejemplo, para 2000 imágenes, usa head -2000. Este proceso puede tardar bastante.
-
Crea el archivo
calibration.txtcon todas las imágenes seleccionadasrealpath calibration/*jpg > calibration.txt -
Establece las variables de entorno
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1
Los valores más altos de INT8_CALIB_BATCH_SIZE ofrecen mayor precisión y aceleran la calibración. Ajústalo según la memoria de tu GPU.
-
Actualiza el archivo
config_infer_primary_yolo26.txtDe
... model-engine-file=model_b1_gpu0_fp32.engine #int8-calib-file=calib.table ... network-mode=0 ...A
... model-engine-file=model_b1_gpu0_int8.engine int8-calib-file=calib.table ... network-mode=1 ...
Ejecuta la inferencia INT8#
Ejecuta el mismo comando para crear el motor INT8 e iniciar la inferencia:
deepstream-app -c deepstream_app_config.txtConfiguración de varios flujos#
Ver: Cómo ejecutar inferencias con varias secuencias usando Ultralytics YOLO26 y NVIDIA DeepStream en Jetson Orin 🚀
Para configurar varios flujos en una sola aplicación DeepStream, haz los siguientes cambios en el archivo deepstream_app_config.txt:
-
Cambia las filas y las columnas para crear una cuadrícula según el número de flujos que quieras usar. Por ejemplo, para 4 flujos, puedes añadir 2 filas y 2 columnas.
[tiled-display] rows=2 columns=2 -
Añade un grupo
[sourceN]independiente para cada flujo, cada uno con su propiouriynum-sources=1.[source0] enable=1 type=3 uri=file:///path/to/video1.mp4 num-sources=1 [source1] enable=1 type=3 uri=file:///path/to/video2.mp4 num-sources=1 [source2] enable=1 type=3 uri=file:///path/to/video3.mp4 num-sources=1 [source3] enable=1 type=3 uri=file:///path/to/video4.mp4 num-sources=1
Ejecuta la inferencia con varios flujos#
Ejecuta el mismo comando para iniciar todos los flujos en la visualización en mosaico:
deepstream-app -c deepstream_app_config.txt
Resultados de las pruebas de rendimiento#
Las siguientes pruebas de rendimiento resumen el rendimiento de los modelos YOLO11 con distintos niveles de precisión de TensorRT y un tamaño de entrada de 640x640 en NVIDIA Jetson Orin NX de 16 GB. YOLO26 utiliza el mismo flujo de trabajo de exportación e inferencia de DeepStream descrito anteriormente.
Gráfico comparativo#

Tabla comparativa detallada#
| Formato | Estado | Tiempo de inferencia (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
Agradecimientos#
Esta guía la crearon inicialmente nuestros amigos de Seeed Studio, Lakshantha y Elaine.
Preguntas frecuentes#
Para configurar Ultralytics YOLO26 en un dispositivo NVIDIA Jetson, primero tienes que instalar DeepStream SDK compatible con tu versión de JetPack. Sigue la guía paso a paso de nuestra Guía de inicio rápido para configurar NVIDIA Jetson para implementar YOLO26.
El uso de TensorRT con YOLO26 optimiza el modelo para la inferencia, reduce considerablemente la latencia y mejora el rendimiento en los dispositivos NVIDIA Jetson. TensorRT ofrece inferencia de aprendizaje profundo de alto rendimiento y baja latencia mediante la fusión de capas, la calibración de precisión y la optimización automática de kernels. Esto permite una ejecución más rápida y eficiente, especialmente útil en aplicaciones en tiempo real, como el análisis de vídeo y las máquinas autónomas.
Sí, la guía para implementar Ultralytics YOLO26 con DeepStream SDK y TensorRT es compatible con toda la gama NVIDIA Jetson. Esto incluye dispositivos como Jetson Orin NX de 16 GB con JetPack 5.1.3 y Jetson Nano de 4 GB con JetPack 4.6.4. Consulta la sección Configuración de DeepStream para YOLO26 para ver los pasos detallados.
Exporta el modelo con el exportador de Ultralytics y el cabezal sin NMS, y escribe el archivo
labels.txtdel que DeepStream lee los nombres de las clases:from ultralytics import YOLO model = YOLO("yolo26s.pt") model.export(format="onnx", nms=False, agnostic_nms=True) # crea 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))Añade
opset=12para TensorRT 8.2 o anterior (DeepStream 6.0.1 y versiones anteriores). Para obtener más información sobre la conversión de modelos, consulta nuestra sección sobre exportación de modelos.Para ejecutar la inferencia INT8, calibra el modelo con un conjunto representativo de imágenes y cambia la configuración de DeepStream al modo INT8. Descarga las imágenes COCO val2017, selecciona unas 1000 imágenes de calibración, establece las variables de entorno
INT8_CALIB_IMG_PATHyINT8_CALIB_BATCH_SIZEy, después, actualizaconfig_infer_primary_yolo26.txtconmodel-engine-file=model_b1_gpu0_int8.engine,int8-calib-file=calib.tableynetwork-mode=1. Consulta la sección Calibración INT8 para ver todos los pasos. Actualmente, INT8 requiere TensorRT 8.x.Para procesar varios flujos en una sola aplicación DeepStream, edita el archivo
deepstream_app_config.txtpara añadir una cuadrícula de visualización en mosaico y enumerar cada URI de origen. Establecerowsycolumnsen[tiled-display]para crear la cuadrícula, añade un grupo[sourceN]independiente por flujo con sus propiosuriynum-sources=1, y ajusta la cuadrícula al número de flujos. Consulta la sección Configuración de varios flujos para ver un ejemplo completo.El rendimiento de los modelos YOLO11 en NVIDIA Jetson Orin NX de 16 GB varía según los niveles de precisión de TensorRT. Por ejemplo, los modelos YOLO11s consiguen:
- Precisión FP32: 14.53 ms/im, 68.8 FPS
- Precisión FP16: 7.91 ms/im, 126 FPS
- Precisión INT8: 6.05 ms/im, 165 FPS
Estos benchmarks destacan la eficiencia y la capacidad que ofrece el uso de modelos YOLO11 optimizados para TensorRT en hardware NVIDIA Jetson. Para obtener más información, consulta la sección Resultados de los benchmarks.