Ultralytics YOLO26 na NVIDIA Jetson usando DeepStream SDK e TensorRT#
Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀
Este guia abrangente apresenta um passo a passo detalhado para implementar o Ultralytics YOLO26 em dispositivos NVIDIA Jetson usando o DeepStream SDK e o TensorRT. Aqui, usamos o TensorRT para maximizar o desempenho da inferência na plataforma Jetson.
Este guia aborda a configuração do DeepStream para YOLO26, a calibração INT8, a configuração de vários streams e os 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, a JP6.1, o Seeed Studio reComputer J4012, baseado no NVIDIA Jetson Orin NX de 16 GB e executando a versão JP5.1.3 do JetPack, e o Seeed Studio reComputer J1020 v2, baseado no NVIDIA Jetson Nano de 4 GB e executando a versão JP4.6.4 do JetPack. Espera-se que funcione em toda a linha de hardware NVIDIA Jetson, incluindo os modelos mais recentes e os legados.
O que é o NVIDIA DeepStream?#
O DeepStream SDK da NVIDIA é um kit de ferramentas completo de análise de streams baseado no GStreamer para processamento multissensor orientado por IA, compreensão de vídeo, áudio e imagens. É ideal para desenvolvedores de IA para visão, parceiros de software, startups e OEMs que desenvolvem aplicações e serviços de IVA (análise de vídeo inteligente). Agora, você pode criar pipelines de processamento de streams 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álises 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 aplicações e serviços de IA para visão no local, na borda e na nuvem.
Pré-requisitos#
Antes de começar a seguir este guia:
- Consulte a nossa documentação, Guia de início rápido: NVIDIA Jetson com Ultralytics YOLO26, para configurar o 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 instalação por pacote Debian do DeepStream SDK no dispositivo Jetson. Você também pode consultar o DeepStream SDK no Jetson (arquivado) para acessar versões legadas do DeepStream.
Configuração do DeepStream para YOLO26#
Aqui, usamos o repositório do GitHub marcoslucianops/DeepStream-Yolo, que inclui suporte do NVIDIA DeepStream SDK para modelos YOLO. Agradecemos os esforços de marcoslucianops pelas suas contribuições!
-
Instale o Ultralytics com as dependências necessárias
pip install ultralytics onnx onnxslim -
Clone o repositório DeepStream-Yolo
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
Transfira um modelo de deteção Ultralytics YOLO26 (.pt) à sua escolha a partir do projeto YOLO26. Aqui, usamos o 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.
-
Converte o modelo para ONNX e escreve o ficheiro
labels.txta partir do qual o DeepStream lê os nomes das classesfrom 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 a cabeça sem NMS, e agnostic_nms=True mantém uma única classe por deteção para que cluster-mode=4 (sem agrupamento) na configuração do DeepStream não desenhe uma caixa duas vezes. Adiciona imgsz=1280 para alterar o tamanho da inferência (predefinição: 640), batch=4 para um tamanho de lote de 4 (o lote exportado é estático, pelo que deve corresponder a batch-size na configuração do DeepStream) e opset=12 para TensorRT 8.2 ou anterior (DeepStream 6.0.1 e anterior). Vê os export arguments para a lista completa.
-
Copie o ficheiro de modelo
.onnxgerado e o ficheirolabels.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 instalada do JetPack
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.6Para o JetPack 7.1:
export CUDA_VER=13.0 -
Compile a biblioteca
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Edite o ficheiro
config_infer_primary_yolo26.txtde acordo com o seu modelo (para 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 centralizado e é executado sem NMS. Para obter a melhor precisão, adicione o seguinte à secção [property] de config_infer_primary_yolo26.txt:
[property]
...
maintain-aspect-ratio=1
symmetric-padding=1
cluster-mode=4
...-
Edite o ficheiro
deepstream_app_config... [primary-gie] ... config-file=config_infer_primary_yolo26.txt -
Você também pode alterar a fonte de vídeo no ficheiro
deepstream_app_config. Aqui, é carregado um ficheiro de vídeo predefinido... [source0] ... uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
Execute a inferência#
deepstream-app -c deepstream_app_config.txtA geração do ficheiro do mecanismo TensorRT demorará bastante tempo antes do início da inferência. Portanto, aguarde com paciência.

Se 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 quiser usar a precisão INT8 para a inferência, você precisa seguir os passos abaixo:
Atualmente, INT8 não funciona com o TensorRT 10.x. Esta secção do guia foi testada com o TensorRT 8.x, que deverá 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, transfira o val2017, extraia-o e mova-o para a pasta
DeepStream-Yolo -
Crie um novo diretório para as 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, são escolhidas 1000 imagens para obter uma precisão melhor (mais imagens = mais precisão). Você pode definir esse valor a partir de head -1000. Por exemplo, para 2000 imagens, use head -2000. Este processo pode demorar bastante tempo.
-
Crie o ficheiro
calibration.txtcom todas as imagens selecionadasrealpath calibration/*jpg > calibration.txt -
Defina as 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 numa calibração mais rápida. Defina-o de acordo com a memória da sua GPU.
-
Atualize o ficheiro
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 ...
Execute a inferência INT8#
Execute o mesmo comando para criar o mecanismo INT8 e iniciar a inferência:
deepstream-app -c deepstream_app_config.txtConfiguração de vários streams#
Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀
Para configurar vários streams numa única aplicação DeepStream, faça as seguintes alterações no ficheiro deepstream_app_config.txt:
-
Altere as linhas e as colunas para criar uma apresentação em grelha de acordo com o número de streams que você pretende ter. Por exemplo, para 4 streams, podemos adicionar 2 linhas e 2 colunas.
[tiled-display] rows=2 columns=2 -
Adicione um grupo
[sourceN]separado para cada stream, cada um com o 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
Execute a inferência em vários streams#
Execute o mesmo comando para iniciar todos os streams na apresentação lado a lado:
deepstream-app -c deepstream_app_config.txt
Resultados de benchmark#
Os benchmarks seguintes 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 de 16 GB. 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 | Estado | Tempo de inferência (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
Agradecimentos#
Este guia foi criado originalmente pelos nossos amigos da Seeed Studio, Lakshantha e Elaine.
Perguntas frequentes#
Para configurar o Ultralytics YOLO26 num dispositivo NVIDIA Jetson, primeiro você precisa instalar o DeepStream SDK compatível com a sua versão do JetPack. Siga o passo a passo no nosso Guia de início rápido para configurar a sua NVIDIA Jetson para a implementação do YOLO26.
Usar TensorRT com YOLO26 otimiza o modelo para inferência, reduzindo significativamente a latência e melhorando o throughput em dispositivos NVIDIA Jetson. O TensorRT oferece inferência de deep learning de alto desempenho e baixa latência por meio da fusão de camadas, calibração de precisão e ajuste automático de kernels. Isso resulta numa 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.
Sim, o guia para implementar 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 de 16 GB com JetPack 5.1.3 e o Jetson Nano de 4 GB com JetPack 4.6.4. Consulte a secção Configuração do DeepStream para YOLO26 para obter instruções detalhadas.
Exporta o modelo com a cabeça sem NMS utilizando o exportador Ultralytics, e escreve o ficheiro
labels.txta partir do qual o DeepStream lê os nomes das classes: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()))Adiciona
opset=12para TensorRT 8.2 ou anterior (DeepStream 6.0.1 e anterior). Para mais detalhes sobre a conversão de modelos, consulta a nossa model export section.Para executar a inferência INT8, calibre o modelo num conjunto representativo de imagens e altere a configuração do DeepStream para o modo INT8. Transfira as imagens val2017 do COCO, 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 secção Calibração INT8 para ver todos os passos. Atualmente, INT8 requer o TensorRT 8.x.Para processar vários streams numa única aplicação DeepStream, edite o ficheiro
deepstream_app_config.txtpara adicionar uma grelha de apresentação lado a lado e listar cada URI de origem. Definarowsecolumnsem[tiled-display]para criar a grelha, adicione um grupo[sourceN]separado por stream com o seu própriourienum-sources=1e ajuste a grelha para se adequar ao número de streams. Consulte a secção Configuração de vários streams para ver um exemplo completo.O desempenho dos modelos YOLO11 no NVIDIA Jetson Orin NX de 16 GB 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 pelo TensorRT no hardware NVIDIA Jetson. Para obter mais detalhes, consulte a nossa secção Resultados de benchmark.