Ir al contenido

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.

DeepStream en NVIDIA Jetson

Nota

Esta gu铆a ha sido probada tanto con Seeed Studio reComputer J4012 que est谩 basado en NVIDIA Jetson Orin NX 16GB ejecutando JetPack JP5.1.3 como con Seeed Studio reComputer J1020 v2 que est谩 basado en NVIDIA Jetson Nano 4GB ejecutando JetPack JP4.6.4. Se espera que funcione en toda la gama de hardware Jetson, incluyendo los m谩s recientes y los heredados. Se espera que funcione en toda la gama de hardware NVIDIA Jetson, incluyendo los m谩s recientes y los heredados.

驴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:

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.

  1. Instalar dependencias

    pip install cmake
    pip install onnxsim
    
  2. Clone el siguiente repositorio

    git clone https://github.com/marcoslucianops/DeepStream-Yolo
    cd DeepStream-Yolo
    
  3. Descargue Ultralytics YOLO11 modelo de detecci贸n (.pt) de su elecci贸n de las versiones deYOLO11 . Aqu铆 utilizamos yolov8s.pt.

    wget https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8s.pt
    

    Nota

    Tambi茅n puede utilizar un modelo YOLO11 entrenado a medida.

  4. Convertir el modelo en ONNX

    python3 utils/export_yoloV8.py -w yolov8s.pt
    

    Pase los siguientes argumentos al comando anterior

    Para DeepStream 6.0.1, utilice opset 12 o inferior. El opset por defecto es 16.

    --opset 12
    

    Para cambiar el tama帽o de inferencia (por defecto: 640)

    -s SIZE
    --size SIZE
    -s HEIGHT WIDTH
    --size HEIGHT WIDTH
    

    Ejemplo para 1280:

    -s 1280
    or
    -s 1280 1280
    

    Para simplificar el modelo ONNX (DeepStream >= 6.0)

    --simplify
    

    Para utilizar el tama帽o de lote din谩mico (DeepStream >= 6.1)

    --dynamic
    

    Para utilizar el tama帽o de lote est谩tico (ejemplo para tama帽o de lote = 4)

    --batch 4
    
  5. Configure la versi贸n CUDA de acuerdo con la versi贸n de JetPack instalada

    Para JetPack 4.6.4:

    export CUDA_VER=10.2
    

    Para JetPack 5.1.3:

    export CUDA_VER=11.4
    
  6. Compilar la biblioteca

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  7. Editar el config_infer_primary_yoloV8.txt seg煤n su modelo (para YOLOv8s con 80 clases)

    [property]
    ...
    onnx-file=yolov8s.onnx
    ...
    num-detected-classes=80
    ...
    
  8. Editar el deepstream_app_config archivo

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yoloV8.txt
    
  9. Tambi茅n puedes cambiar la fuente de v铆deo en deepstream_app_config archivo. Aqu铆 se carga un archivo de v铆deo por defecto

    ...
    [source0]
    ...
    uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
    

Ejecutar Inferencia

deepstream-app -c deepstream_app_config.txt

Nota

Se tardar谩 mucho tiempo en generar el archivo del motor TensorRT antes de iniciar la inferencia. As铆 que por favor sea paciente.

YOLO11 con deepstream

Consejo

Si desea convertir el modelo a FP16 precisi贸nbasta con establecer 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

  1. Establecer OPENCV variable de entorno

    export OPENCV=1
    
  2. Compilar la biblioteca

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  3. Para el conjunto de datos COCO, descargue el val2017extraer y mover a DeepStream-Yolo carpeta

  4. Crear un nuevo directorio para las im谩genes de calibraci贸n

    mkdir calibration
    
  5. Ejecute lo siguiente para seleccionar 1000 im谩genes aleatorias del conjunto de datos COCO para ejecutar la calibraci贸n

    for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do \
        cp ${jpg} calibration/; \
    done
    

    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.

  6. Crear el calibration.txt archivo con todas las im谩genes seleccionadas

    realpath calibration/*jpg > calibration.txt
    
  7. Establecer variables de entorno

    export INT8_CALIB_IMG_PATH=calibration.txt
    export INT8_CALIB_BATCH_SIZE=1
    

    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 .

  8. Actualizar el config_infer_primary_yoloV8.txt archivo

    En

    ...
    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
    ...
    

Ejecutar Inferencia

deepstream-app -c deepstream_app_config.txt

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

  1. 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.

    [tiled-display]
    rows=2
    columns=2
    
  2. Establecer num-sources=4 y a帽ada uri de los 4 flujos

    [source0]
    enable=1
    type=3
    uri=<path_to_video>
    uri=<path_to_video>
    uri=<path_to_video>
    uri=<path_to_video>
    num-sources=4
    

Ejecutar Inferencia

deepstream-app -c deepstream_app_config.txt
Configuraci贸n multisecuencia

Resultados de referencia

La siguiente tabla resume el rendimiento de los modelos YOLOv8s a diferentes niveles de precisi贸n TensorRT con un tama帽o de entrada de 640x640 en NVIDIA Jetson Orin NX 16GB.

Nombre del modelo Precisi贸n Tiempo de inferencia (ms/im) FPS
YOLOv8s FP32 15.63 64
FP16 7.94 126
INT8 5.53 181

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:

python3 utils/export_yoloV8.py -w yolov8s.pt --opset 12 --simplify

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?

El rendimiento de los modelos YOLO11 en NVIDIA Jetson Orin NX 16GB var铆a en funci贸n de los niveles de precisi贸n TensorRT . Por ejemplo, los modelos YOLOv8s alcanzan:

  • FP32 Precisi贸n: 15,63 ms/im, 64 FPS
  • FP16 Precisi贸n: 7,94 ms/im, 126 FPS
  • INT8 Precisi贸n: 5,53 ms/im, 181 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.

Creado hace 5 meses 鉁忥笍 Actualizado hace 2 meses

Comentarios