Ultralytics YOLO26 en NVIDIA Jetson usando DeepStream SDK y TensorRT#
Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀
Esta guía completa ofrece un recorrido detallado para implementar Ultralytics YOLO26 en dispositivos NVIDIA Jetson usando DeepStream SDK y TensorRT. Aquí usamos TensorRT para maximizar el rendimiento de la inferencia en la plataforma Jetson.
Esta guía explica la configuración de DeepStream para YOLO26, la calibración INT8, la configuración multistream y los resultados de las pruebas de rendimiento.

Esta guía se ha probado con NVIDIA Jetson Orin Nano Super Developer Kit ejecutando la versión estable más reciente de JetPack, JP6.1, Seeed Studio reComputer J4012, basado en NVIDIA Jetson Orin NX 16GB y ejecutando la versión JP5.1.3 de JetPack, y Seeed Studio reComputer J1020 v2, basado en NVIDIA Jetson Nano 4GB y ejecutando 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?#
El DeepStream SDK de NVIDIA es un kit de herramientas completo de análisis de streaming basado en GStreamer para el procesamiento multisensor basado en IA, así como para la comprensión de vídeo, audio e imágenes. Es ideal para desarrolladores de IA para visión, socios de software, startups y OEM que crean aplicaciones y servicios de IVA (analítica de vídeo inteligente). Ahora puedes crear canalizaciones de procesamiento de streams 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 vídeo, imágenes y datos de sensores. La compatibilidad multiplataforma de DeepStream te ofrece una forma más rápida y sencilla de desarrollar aplicaciones y servicios de IA para visión en las instalaciones, en el edge 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 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 del paquete Debian para instalar DeepStream SDK en el dispositivo Jetson. También puedes visitar 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 NVIDIA DeepStream SDK para modelos YOLO. ¡Agradecemos el trabajo de marcoslucianops 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 de 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) # creates 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))
nms=False exporta la cabeza sin NMS, y agnostic_nms=True mantiene una única clase por detección para que cluster-mode=4 (sin agrupamiento) en la configuración de DeepStream no dibuje una caja dos veces. 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 export arguments para ver la lista completa.
-
Copia el archivo de modelo
.onnxgenerado y el archivolabels.txta 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 cambia el tamaño de 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 predeterminado... [source0] ... uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
Ejecuta la inferencia#
deepstream-app -c deepstream_app_config.txtSe tardará bastante en generar el archivo del motor TensorRT antes de iniciar 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, debes seguir los pasos siguientes:
Actualmente, INT8 no funciona con TensorRT 10.x. Esta sección de la guía se ha probado con TensorRT 8.x, con el que se espera que funcione.
-
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 al menos 500 imágenes para obtener una buena precisión. En este ejemplo, se eligen 1000 imágenes para obtener una mayor precisión (más imágenes = mayor precisión). Puedes establecerlo mediante head -1000. Por ejemplo, para 2000 imágenes, 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 darán como resultado una mayor precisión y una calibración más rápida. Establécelo 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 compilar el motor INT8 e iniciar la inferencia:
deepstream-app -c deepstream_app_config.txtConfiguración multistream#
Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀
Para configurar varios streams en una sola aplicación de DeepStream, realiza los cambios siguientes en el archivo deepstream_app_config.txt:
-
Cambia las filas y columnas para crear una cuadrícula según el número de streams que quieras tener. Por ejemplo, para 4 streams, podemos añadir 2 filas y 2 columnas.
[tiled-display] rows=2 columns=2 -
Añade un grupo
[sourceN]independiente para cada stream, 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 multistream#
Ejecuta el mismo comando para iniciar todos los streams en la vista 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, con un tamaño de entrada de 640x640 en NVIDIA Jetson Orin NX 16GB. 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 fue creada inicialmente por nuestros amigos de Seeed Studio, Lakshantha y Elaine.
Preguntas frecuentes#
Para configurar Ultralytics YOLO26 en un dispositivo NVIDIA Jetson, primero debes 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 tu NVIDIA Jetson para implementar YOLO26.
Usar TensorRT con YOLO26 optimiza el modelo para la inferencia, lo que reduce significativamente la latencia y mejora el rendimiento en dispositivos NVIDIA Jetson. TensorRT proporciona inferencia de deep learning de alto rendimiento y baja latencia mediante la fusión de capas, la calibración de precisión y el ajuste automático de kernels. Esto permite 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.
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 16GB con JetPack 5.1.3 y Jetson Nano 4GB con JetPack 4.6.4. Consulta la sección Configuración de DeepStream para YOLO26 para obtener instrucciones detalladas.
Exporta el modelo con la cabeza sin NMS utilizando el exportador de Ultralytics, 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) # creates '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 detalles sobre la conversión de modelos, consulta nuestra model export section.Para ejecutar 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 val2017 de COCO, selecciona unas 1000 imágenes de calibración, establece las variables de entorno
INT8_CALIB_IMG_PATHyINT8_CALIB_BATCH_SIZEy 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 streams en una sola aplicación de DeepStream, edita el archivo
deepstream_app_config.txtpara añadir una cuadrícula de vista en mosaico y enumerar el URI de cada fuente. Establecerowsycolumnsdentro de[tiled-display]para crear la cuadrícula, añade un grupo[sourceN]independiente por stream con su propiouriynum-sources=1, y ajusta la cuadrícula al número de streams. Consulta la sección Configuración multistream para ver un ejemplo completo.El rendimiento de los modelos YOLO11 en NVIDIA Jetson Orin NX 16GB varía según los niveles de precisión de TensorRT. Por ejemplo, los modelos YOLO11s alcanzan:
- 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
Estas pruebas de rendimiento ponen de manifiesto la eficiencia y capacidad de usar modelos YOLO11 optimizados con TensorRT en hardware NVIDIA Jetson. Para obtener más información, consulta nuestra sección de Resultados de las pruebas de rendimiento.