Ultralytics 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 de múltiplos fluxos e resultados de benchmark.

Este guia foi testado com o 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 da NVIDIA Jetson, incluindo as versões mais recentes e legadas.
O que é o NVIDIA DeepStream?#
O DeepStream SDK da NVIDIA é um kit de ferramentas de análise de streaming completo baseado no GStreamer para processamento multissensor baseado em IA, compreensão de vídeo, áudio e imagem. É ideal para desenvolvedores de visão computacional por IA, parceiros de software, startups e OEMs que criam aplicativos e serviços de IVA (Análise Inteligente de Vídeo). Agora você pode criar pipelines de processamento de fluxo que incorporam redes neurais e outras tarefas de processamento complexas, como rastreamento, codificação/decodificação de vídeo e renderização de vídeo. Esses pipelines permitem análises em tempo real em 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 visão computacional por IA no local, na borda e na nuvem.
Pré-requisitos#
Antes de começar a seguir este guia:
- Visite nossa documentação, Guia de Início Rápido: NVIDIA Jetson com Ultralytics YOLO26, para configurar seu dispositivo NVIDIA Jetson com o Ultralytics YOLO26
- Instale o DeepStream SDK de acordo com a versão do JetPack
- Para o JetPack 4.6.4, instale o DeepStream 6.0.1
- Para o JetPack 5.1.3, instale o DeepStream 6.3
- Para o JetPack 6.1, instale o DeepStream 7.1
- Para o JetPack 7.1, instale o DeepStream 9.0
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.
Configuração do DeepStream para YOLO26#
Aqui estamos usando o repositório do GitHub marcoslucianops/DeepStream-Yolo, que inclui suporte do NVIDIA DeepStream SDK para modelos YOLO. Agradecemos os esforços de marcoslucianops por suas contribuições!
-
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 -
Clone o repositório DeepStream-Yolo
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
Copie o arquivo
export_yolo26.pydo diretórioDeepStream-Yolo/utilspara a pastaultralyticscp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics cd ultralytics -
Baixe um modelo de detecção Ultralytics YOLO26 (.pt) de sua escolha no projeto YOLO26. Aqui usamos yolo26s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
Você também pode usar um modelo YOLO26 treinado de forma personalizada.
-
Converta o modelo para ONNX
python3 export_yolo26.py -w yolo26s.pt
Para o DeepStream 5.1, remova o argumento --dynamic e use opset 12 ou inferior. O opset padrão é 17.
--opset 12Para alterar o tamanho da inferência (padrão: 640)
-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTHExemplo para 1280:
-s 1280
or
-s 1280 1280Para simplificar o modelo ONNX (DeepStream >= 6.0)
--simplifyPara usar tamanho de lote (batch-size) dinâmico (DeepStream >= 6.1)
--dynamicPara usar tamanho de lote (batch-size) estático (exemplo para batch-size = 4)
--batch 4-
Copie o arquivo de modelo
.onnxgerado e o arquivolabels.txtpara a pastaDeepStream-Yolocp yolo26s.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
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.2Para o JetPack 5.1.3:
export CUDA_VER=11.4Para o JetPack 6.1:
export CUDA_VER=12.6 -
Compile a biblioteca
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Edite o arquivo
config_infer_primary_yolo26.txtde acordo com o seu modelo (para o YOLO26s com 80 classes)[property] ... onnx-file=yolo26s.onnx ... num-detected-classes=80 ... parse-bbox-func-name=NvDsInferParseYolo ...
O YOLO26 redimensiona a entrada com preenchimento central e executa sem NMS. Para obter a melhor precisão, adicione o seguinte à seção [property] de config_infer_primary_yolo26.txt:
[property]
...
maintain-aspect-ratio=1
symmetric-padding=1
cluster-mode=4
...-
Edite o arquivo
deepstream_app_config... [primary-gie] ... config-file=config_infer_primary_yolo26.txt -
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
Executar inferência#
deepstream-app -c deepstream_app_config.txtLevará um tempo para gerar o arquivo de mecanismo TensorRT antes de iniciar a inferência. Portanto, por favor, seja paciente.

Se você quiser converter o modelo para a precisão FP16, basta definir model-engine-file=model_b1_gpu0_fp16.engine e network-mode=2 dentro de config_infer_primary_yolo26.txt
Calibração INT8#
Se você deseja usar precisão INT8 para inferência, você precisa seguir os passos abaixo:
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.
-
Defina a variável de ambiente
OPENCVexport OPENCV=1 -
Compile a biblioteca
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Para o conjunto de dados COCO, baixe o val2017, extraia e mova para a pasta
DeepStream-Yolo -
Crie um novo diretório para imagens de calibração
mkdir calibration -
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
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 configurá-lo com head -1000. Por exemplo, para 2000 imagens, head -2000. Esse processo pode demorar um pouco.
-
Crie o arquivo
calibration.txtcom todas as imagens selecionadasrealpath calibration/*jpg > calibration.txt -
Defina variáveis de ambiente
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1
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.
-
Atualize o arquivo
config_infer_primary_yolo26.txtDe
... 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 ...
Executar inferência INT8#
Execute o mesmo comando para construir o motor INT8 e iniciar a inferência:
deepstream-app -c deepstream_app_config.txtConfiguração MultiStream#
Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀
Para configurar vários fluxos sob um único aplicativo DeepStream, faça as seguintes alterações no arquivo deepstream_app_config.txt:
-
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 -
Adicione um grupo
[sourceN]separado para cada fluxo, cada um com seu própriourienum-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
Executar 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
Resultados de benchmark#
Os seguintes benchmarks 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 usa o mesmo fluxo de trabalho de exportação e inferência do DeepStream descrito acima.
Gráfico de comparação#

Tabela de comparação detalhada#
| Formato | Status | Tempo de inferência (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
Agradecimentos#
Este guia foi criado inicialmente por nossos amigos da Seeed Studio, Lakshantha e Elaine.
FAQ#
Para configurar o Ultralytics YOLO26 em um dispositivo NVIDIA Jetson, primeiro você precisa instalar o DeepStream SDK compatível com a sua versão do JetPack. Siga o guia passo a passo em nosso Guia de Início Rápido para configurar o seu NVIDIA Jetson para a implantação do YOLO26.
O uso do TensorRT com o YOLO26 otimiza o modelo para inferência, reduzindo significativamente a latência e melhorando a taxa de transferência em dispositivos NVIDIA Jetson. O TensorRT fornece inferência de deep learning de alto desempenho e baixa latência por meio de fusão de camadas, calibração de precisão e auto-ajuste de kernels. Isso leva a uma execução mais rápida e eficiente, o que é particularmente útil para aplicativos em tempo real, como análise de vídeo e máquinas autônomas.
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 o JetPack 5.1.3 e o Jetson Nano 4GB com o JetPack 4.6.4. Consulte a seção Configuração do DeepStream para o YOLO26 para ver as etapas detalhadas.
Para converter um modelo YOLO26 para o formato ONNX para implantação com o DeepStream, use o script
utils/export_yolo26.pydo repositório DeepStream-Yolo.Aqui está um exemplo de comando:
python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplifyPara obter mais detalhes sobre a conversão de modelos, confira nossa seção de exportação de modelos.
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 do COCO val2017, selecione cerca de 1000 imagens de calibração, defina as variáveis de ambiente
INT8_CALIB_IMG_PATHeINT8_CALIB_BATCH_SIZEe, em seguida, atualizeconfig_infer_primary_yolo26.txtcommodel-engine-file=model_b1_gpu0_int8.engine,int8-calib-file=calib.tableenetwork-mode=1. Consulte a seção Calibração INT8 para ver todas as etapas. O INT8 atualmente requer o TensorRT 8.x.Para processar múltiplos fluxos em um único aplicativo DeepStream, edite o arquivo
deepstream_app_config.txtpara adicionar uma grade de exibição em mosaico e listar cada URI de origem. Definarowsecolumnsem[tiled-display]para construir a grade, adicione um grupo[sourceN]separado por fluxo com seu própriourienum-sources=1, e ajuste a grade para se adequar ao número de fluxos. Consulte a seção Configuração de Múltiplos Fluxos para ver um exemplo completo.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
Estes benchmarks destacam a eficiência e a capacidade de usar modelos YOLO11 otimizados para TensorRT em hardware NVIDIA Jetson. Para mais detalhes, consulte nossa seção de Resultados de Benchmark.