Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO26 no NVIDIA Jetson usando DeepStream SDK e TensorRT#



Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀

Este guia completo fornece um passo a passo detalhado para implantar o Ultralytics YOLO26 em dispositivos NVIDIA Jetson usando o DeepStream SDK e TensorRT. Aqui usamos o TensorRT para maximizar o desempenho de inferência na plataforma Jetson.

NVIDIA DeepStream SDK on Jetson platform
Nota

Este guia foi testado com NVIDIA Jetson Orin Nano Super Developer Kit executando a versão estável mais recente do JetPack JP6.1, Seeed Studio reComputer J4012 que é baseado no NVIDIA Jetson Orin NX 16GB executando a versão do JetPack JP5.1.3 e Seeed Studio reComputer J1020 v2 que é baseado no NVIDIA Jetson Nano 4GB executando a versão do JetPack JP4.6.4. Espera-se que funcione em toda a linha de hardware NVIDIA Jetson, incluindo modelos recentes e legados.

Link to this sectionO que é o NVIDIA DeepStream?#

NVIDIA's DeepStream SDK é um kit de ferramentas completo de análise de streaming baseado em GStreamer para processamento multissensor baseado em IA, compreensão de vídeo, áudio e imagem. É ideal para desenvolvedores de IA de visão, parceiros de software, startups e OEMs que criam aplicativos e serviços de IVA (Intelligent Video Analytics). Agora você pode criar pipelines de processamento de fluxo que incorporam redes neurais e outras tarefas complexas de processamento, como rastreamento, codificação/decodificação de vídeo e renderização de vídeo. Esses pipelines permitem análise em tempo real de dados de vídeo, imagem e sensores. O suporte multiplataforma do DeepStream oferece uma maneira mais rápida e fácil de desenvolver aplicativos e serviços de IA de visão localmente, na borda e na nuvem.

Link to this sectionPré-requisitos#

Antes de começar a seguir este guia:

Dica

Neste guia, usamos o método de pacote Debian para instalar o DeepStream SDK no dispositivo Jetson. Você também pode visitar o DeepStream SDK no Jetson (Arquivado) para acessar versões legadas do DeepStream.

Link to this sectionConfiguração do DeepStream para YOLO26#

Aqui estamos usando o repositório GitHub marcoslucianops/DeepStream-Yolo que inclui suporte ao NVIDIA DeepStream SDK para modelos YOLO. Agradecemos os esforços de marcoslucianops por suas contribuições!

  1. Instale o Ultralytics com as dependências necessárias

    cd ~
    pip install -U pip
    git clone https://github.com/ultralytics/ultralytics
    cd ultralytics
    pip install -e ".[export]" onnxslim
  2. Clone o repositório DeepStream-Yolo

    cd ~
    git clone https://github.com/marcoslucianops/DeepStream-Yolo
  3. Copie o arquivo export_yolo26.py do diretório DeepStream-Yolo/utils para a pasta ultralytics

    cp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics
    cd ultralytics
  4. Baixe o modelo de detecção Ultralytics YOLO26 (.pt) de sua escolha a partir dos lançamentos do YOLO26. Aqui usamos o yolo26s.pt.

    wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
Nota
  1. Converta o modelo para ONNX

    python3 export_yolo26.py -w yolo26s.pt
Passe os argumentos abaixo para o comando acima

Para o DeepStream 5.1, remova o argumento --dynamic e use opset 12 ou inferior. O opset padrão é 17.

--opset 12

Para alterar o tamanho da inferência (padrão: 640)

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

Exemplo para 1280:

-s 1280
or
-s 1280 1280

Para simplificar o modelo ONNX (DeepStream >= 6.0)

--simplify

Para usar tamanho de lote (batch-size) dinâmico (DeepStream >= 6.1)

--dynamic

Para usar tamanho de lote (batch-size) estático (exemplo para batch-size = 4)

--batch 4
  1. Copie o arquivo de modelo .onnx gerado e o arquivo labels.txt para a pasta DeepStream-Yolo

    cp yolo26s.pt.onnx labels.txt ~/DeepStream-Yolo
    cd ~/DeepStream-Yolo
  2. Defina a versão do CUDA de acordo com a versão do JetPack instalada

    Para o JetPack 4.6.4:

    export CUDA_VER=10.2

    Para o JetPack 5.1.3:

    export CUDA_VER=11.4

    Para o JetPack 6.1:

    export CUDA_VER=12.6
  3. Compile a biblioteca

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
  4. Edite o arquivo config_infer_primary_yolo26.txt de acordo com seu modelo (para YOLO26s com 80 classes)

    [property]
    ...
    onnx-file=yolo26s.pt.onnx
    ...
    num-detected-classes=80
    ...
  5. Edite o arquivo deepstream_app_config

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yolo26.txt
  6. Você também pode alterar a fonte de vídeo no arquivo deepstream_app_config. Aqui, um arquivo de vídeo padrão é carregado

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

Link to this sectionExecutar inferência#

deepstream-app -c deepstream_app_config.txt
Nota

Levará um tempo para gerar o arquivo de mecanismo TensorRT antes de iniciar a inferência. Portanto, por favor, seja paciente.

YOLO26 with deepstream
Dica

Se você quiser converter o modelo para precisão FP16, basta definir model-engine-file=model_b1_gpu0_fp16.engine e network-mode=2 dentro do config_infer_primary_yolo26.txt

Link to this sectionCalibração INT8#

Se você deseja usar precisão INT8 para inferência, você precisa seguir os passos abaixo:

Nota

Atualmente, o INT8 não funciona com o TensorRT 10.x. Esta seção do guia foi testada com o TensorRT 8.x, que deve funcionar.

  1. Defina a variável de ambiente OPENCV

    export OPENCV=1
  2. Compile a biblioteca

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
  3. Para o conjunto de dados COCO, baixe o val2017, extraia e mova para a pasta DeepStream-Yolo

  4. Crie um novo diretório para imagens de calibração

    mkdir calibration
  5. Execute o seguinte para selecionar 1000 imagens aleatórias do conjunto de dados COCO para realizar a calibração

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

A NVIDIA recomenda pelo menos 500 imagens para obter uma boa precisão. Neste exemplo, 1000 imagens são escolhidas para obter melhor precisão (mais imagens = mais precisão). Você pode definir isso a partir de head -1000. Por exemplo, para 2000 imagens, head -2000. Este processo pode levar muito tempo.

  1. Crie o arquivo calibration.txt com todas as imagens selecionadas

    realpath calibration/*jpg > calibration.txt
  2. Defina variáveis de ambiente

    export INT8_CALIB_IMG_PATH=calibration.txt
    export INT8_CALIB_BATCH_SIZE=1
Nota

Valores mais altos de INT8_CALIB_BATCH_SIZE resultarão em maior precisão e velocidade de calibração mais rápida. Defina de acordo com a memória da sua GPU.

  1. Atualize o arquivo config_infer_primary_yolo26.txt

    De

    ...
    model-engine-file=model_b1_gpu0_fp32.engine
    #int8-calib-file=calib.table
    ...
    network-mode=0
    ...

    Para

    ...
    model-engine-file=model_b1_gpu0_int8.engine
    int8-calib-file=calib.table
    ...
    network-mode=1
    ...

Link to this sectionExecutar inferência#

deepstream-app -c deepstream_app_config.txt

Link to this sectionConfiguração MultiStream#



Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀

Para configurar vários fluxos em um único aplicativo DeepStream, faça as seguintes alterações no arquivo deepstream_app_config.txt:

  1. Altere as linhas e colunas para criar uma exibição em grade de acordo com o número de fluxos que deseja ter. Por exemplo, para 4 fluxos, podemos adicionar 2 linhas e 2 colunas.

    [tiled-display]
    rows=2
    columns=2
  2. Defina num-sources=4 e adicione as entradas uri para todos os quatro fluxos.

    [source0]
    enable=1
    type=3
    uri=path/to/video1.jpg
    uri=path/to/video2.jpg
    uri=path/to/video3.jpg
    uri=path/to/video4.jpg
    num-sources=4

Link to this sectionExecutar inferência#

deepstream-app -c deepstream_app_config.txt
DeepStream multi-camera streaming configuration

Link to this sectionResultados de benchmark#

Os benchmarks a seguir resumem como os modelos YOLO26 funcionam em diferentes níveis de precisão do TensorRT com um tamanho de entrada de 640x640 no NVIDIA Jetson Orin NX 16GB.

Link to this sectionGráfico de comparação#

NVIDIA Jetson DeepStream performance benchmarks

Link to this sectionTabela de comparação detalhada#

Desempenho
FormatoStatusTempo de inferência (ms/im)
TensorRT (FP32)8.64
TensorRT (FP16)5.27
TensorRT (INT8)4.54

Link to this sectionAgradecimentos#

Este guia foi criado inicialmente por nossos amigos da Seeed Studio, Lakshantha e Elaine.

Link to this sectionFAQ#

Link to this sectionComo configuro o Ultralytics YOLO26 em um dispositivo NVIDIA Jetson?#

Para configurar o Ultralytics YOLO26 em um dispositivo NVIDIA Jetson, primeiro você precisa instalar o DeepStream SDK compatível com sua versão do JetPack. Siga o guia passo a passo em nosso Guia de Início Rápido para configurar seu NVIDIA Jetson para a implantação do YOLO26.

Link to this sectionQual é o benefício de usar o TensorRT com o YOLO26 no NVIDIA Jetson?#

Usar o TensorRT com o YOLO26 otimiza o modelo para inferência, reduzindo significativamente a latência e melhorando o rendimento em dispositivos NVIDIA Jetson. O TensorRT fornece inferência de aprendizado profundo de alto desempenho e baixa latência através de fusão de camadas, calibração de precisão e ajuste automático de kernel. Isso leva a uma execução mais rápida e eficiente, particularmente útil para aplicações em tempo real, como análise de vídeo e máquinas autônomas.

Link to this sectionPosso executar o Ultralytics YOLO26 com o DeepStream SDK em diferentes hardwares NVIDIA Jetson?#

Sim, o guia para implantar o Ultralytics YOLO26 com o DeepStream SDK e o TensorRT é compatível com toda a linha NVIDIA Jetson. Isso inclui dispositivos como o Jetson Orin NX 16GB com JetPack 5.1.3 e o Jetson Nano 4GB com JetPack 4.6.4. Consulte a seção Configuração do DeepStream para YOLO26 para obter etapas detalhadas.

Link to this sectionComo posso converter um modelo YOLO26 para ONNX para o DeepStream?#

Para converter um modelo YOLO26 para o formato ONNX para implantação com o DeepStream, use o script utils/export_yolo26.py do repositório DeepStream-Yolo.

Aqui está um exemplo de comando:

python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplify

Para obter mais detalhes sobre a conversão de modelos, confira nossa seção de exportação de modelos.

Link to this sectionQuais são os benchmarks de desempenho para YOLO no NVIDIA Jetson Orin NX?#

O desempenho dos modelos YOLO26 no NVIDIA Jetson Orin NX 16GB varia de acordo com os níveis de precisão do TensorRT. Por exemplo, os modelos YOLO26s alcançam:

  • Precisão FP32: 14.6 ms/im, 68.5 FPS
  • Precisão FP16: 7.94 ms/im, 126 FPS
  • Precisão INT8: 5,95 ms/im, 168 FPS

Estes benchmarks destacam a eficiência e a capacidade de usar modelos YOLO26 otimizados para TensorRT em hardware NVIDIA Jetson. Para mais detalhes, consulte nossa seção de Resultados de Benchmark.

Comentários