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 abrangente fornece um passo a passo detalhado para implantar o Ultralytics YOLO26 em dispositivos NVIDIA Jetson usando o DeepStream SDK e o TensorRT. Aqui, usamos o TensorRT para maximizar o desempenho de inferência na plataforma Jetson.

Este guia aborda a configuração do DeepStream para o YOLO26, calibração INT8, configuração multi-stream e resultados de benchmark.

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.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.onnx
    ...
    num-detected-classes=80
    ...
    parse-bbox-func-name=NvDsInferParseYolo
    ...
Configurações de precisão do YOLO26

O YOLO26 redimensiona a entrada com preenchimento central e executa sem NMS. Para obter a melhor precisão, adicione o seguinte à seção [property] do arquivo config_infer_primary_yolo26.txt:

[property]
...
maintain-aspect-ratio=1
symmetric-padding=1
cluster-mode=4
...
  1. Edite o arquivo deepstream_app_config

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yolo26.txt
  2. 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 INT8#

Execute o mesmo comando para construir o motor INT8 e iniciar a 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. Adicione um grupo [sourceN] separado para cada fluxo, cada um com seu próprio uri e num-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

Link to this sectionExecutar inferência Multi-Stream#

Execute o mesmo comando para iniciar todos os fluxos na exibição em grade:

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

Link to this sectionResultados de benchmark#

Os benchmarks a seguir resumem o desempenho dos modelos YOLO11 em diferentes níveis de precisão do TensorRT com um tamanho de entrada de 640x640 no NVIDIA Jetson Orin NX 16GB. O YOLO26 utiliza o mesmo fluxo de trabalho de exportação e inferência do DeepStream descrito acima.

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 sectionComo executo a inferência INT8 com o YOLO26 no DeepStream?#

Para executar a inferência INT8, calibre o modelo em um conjunto de imagens representativo e altere a configuração do DeepStream para o modo INT8. Baixe as imagens COCO val2017, selecione cerca de 1000 imagens de calibração, defina as variáveis de ambiente INT8_CALIB_IMG_PATH e INT8_CALIB_BATCH_SIZE, então atualize o config_infer_primary_yolo26.txt com model-engine-file=model_b1_gpu0_int8.engine, int8-calib-file=calib.table e network-mode=1. Veja a seção Calibração INT8 para os passos completos. O INT8 atualmente requer o TensorRT 8.x.

Link to this sectionComo executo múltiplos fluxos de câmera com o DeepStream no Jetson?#

Para processar múltiplos fluxos em uma única aplicação DeepStream, edite o arquivo deepstream_app_config.txt para adicionar uma grade de exibição e liste cada URI de origem. Defina rows e columns em [tiled-display] para construir a grade, adicione um grupo [sourceN] separado para cada fluxo com seu próprio uri e num-sources=1, e ajuste a grade para acomodar o número de fluxos. Veja a seção Configuração Multi-Stream para um exemplo completo.

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

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

  • Precisão FP32: 14,53 ms/im, 68,8 FPS
  • Precisão FP16: 7,91 ms/im, 126 FPS
  • Precisão INT8: 6,05 ms/im, 165 FPS

Esses benchmarks reforçam a eficiência e a capacidade de usar modelos YOLO11 otimizados pelo TensorRT em hardware NVIDIA Jetson. Para mais detalhes, consulte nossa seção Resultados de Benchmark.

Comentários