Ultralytics YOLO11 no NVIDIA Jetson usando DeepStream SDK e TensorRT
Assista: Como usar modelos Ultralytics YOLO11 com NVIDIA Deepstream no Jetson Orin NX 🚀
Este guia abrangente fornece um passo a passo detalhado para implementar o Ultralytics YOLO11 em dispositivos NVIDIA Jetson usando o DeepStream SDK e TensorRT. Aqui, usamos o TensorRT para maximizar o desempenho da inferência na plataforma Jetson.

Nota
Este guia foi testado com o NVIDIA Jetson Orin Nano Super Developer Kit executando a versão JetPack estável mais recente do JP6.1, Seeed Studio reComputer J4012 que é baseado no NVIDIA Jetson Orin NX 16GB executando a versão JetPack do JP5.1.3 e Seeed Studio reComputer J1020 v2 que é baseado no NVIDIA Jetson Nano 4GB executando a versão JetPack do JP4.6.4. Espera-se que funcione em toda a linha de hardware NVIDIA Jetson, incluindo as versões mais recentes e legadas.
O que é NVIDIA DeepStream?
O DeepStream SDK da NVIDIA é um kit de ferramentas completo de análise de streaming baseado em GStreamer para processamento multi-sensor baseado em IA, vídeo, áudio e compreensão de imagem. É ideal para desenvolvedores de visão de IA, parceiros de software, startups e OEMs que criam aplicações e serviços de IVA (Intelligent Video Analytics). Agora você pode criar pipelines de processamento de stream 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 sensor. O suporte multi-plataforma do DeepStream oferece uma maneira mais rápida e fácil de desenvolver aplicações e serviços de visão de IA on-premise, 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 YOLO11 para configurar seu dispositivo NVIDIA Jetson com Ultralytics YOLO11.
- Instalar DeepStream SDK de acordo com a versão do JetPack
- Para JetPack 4.6.4, instale o DeepStream 6.0.1
- Para JetPack 5.1.3, instale o DeepStream 6.3
- Para JetPack 6.1, instale o DeepStream 7.1
Dica
Neste guia, utilizamos 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 YOLO11
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!
-
Instalar 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 -
Copiar o
export_yolo11.pyficheiro deDeepStream-Yolo/utilsdiretório para oultralyticspastacp ~/DeepStream-Yolo/utils/export_yolo11.py ~/ultralytics cd ultralytics -
Baixe o modelo de detecção Ultralytics YOLO11 (.pt) de sua escolha em YOLO11 releases. Aqui usamos yolo11s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s.ptNota
Você também pode usar um modelo YOLO11 treinado personalizado.
-
Converter modelo para ONNX
python3 export_yolo11.py -w yolo11s.ptPasse os argumentos abaixo para o comando acima
Para DeepStream 5.1, remova o
--dynamicarg e useopset12 ou inferior. O padrãoopseté 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 o tamanho de lote dinâmico (DeepStream >= 6.1)
--dynamicPara usar o tamanho de lote estático (exemplo para tamanho de lote = 4)
--batch 4 -
Copiar o gerado
.onnxarquivo de modelo elabels.txtficheiro para oDeepStream-Yolopastacp yolo11s.pt.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
Defina a versão do CUDA de acordo com a versão do JetPack instalada.
Para JetPack 4.6.4:
export CUDA_VER=10.2Para JetPack 5.1.3:
export CUDA_VER=11.4Para Jetpack 6.1:
export CUDA_VER=12.6 -
Compile a biblioteca
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Editar o
config_infer_primary_yolo11.txtarquivo de acordo com seu modelo (para YOLO11s com 80 classes)[property] ... onnx-file=yolo11s.pt.onnx ... num-detected-classes=80 ... -
Editar o
deepstream_app_configarquivo... [primary-gie] ... config-file=config_infer_primary_yolo11.txt -
Você também pode alterar a fonte do vídeo em
deepstream_app_configficheiro. Aqui, um ficheiro 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.txt
Nota
Levará um longo tempo para gerar o arquivo de engine TensorRT antes de iniciar a inferência. Portanto, por favor, seja paciente.

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 config_infer_primary_yolo11.txt
Calibração INT8
Se você quiser usar a 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.
-
Definir
OPENCVvariável de ambienteexport 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
DeepStream-Yolopasta -
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 executar a calibração
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ doneNota
A NVIDIA recomenda pelo menos 500 imagens para obter uma boa precisão. Neste exemplo, 1000 imagens são escolhidas para obter uma melhor precisão (mais imagens = mais precisão). Você pode configurá-lo em head -1000. Por exemplo, para 2000 imagens, head -2000. Este processo pode demorar muito.
-
Criar o
calibration.txtficheiro com todas as imagens selecionadasrealpath calibration/*jpg > calibration.txt -
Definir variáveis de ambiente
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1Nota
Valores mais altos de INT8_CALIB_BATCH_SIZE resultarão em mais precisão e maior velocidade de calibração. Defina-o de acordo com a sua memória GPU.
-
Atualize o
config_infer_primary_yolo11.txtarquivoDe
... 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
deepstream-app -c deepstream_app_config.txt
Configuração MultiStream
Assista: Como Executar Múltiplos Fluxos com DeepStream SDK no Jetson Nano usando Ultralytics YOLO11 🎉
Para configurar múltiplos fluxos sob uma única aplicação deepstream, você pode fazer as seguintes alterações no deepstream_app_config.txt arquivo
-
Altere as linhas e colunas para construir uma exibição em grade de acordo com o número de streams que você deseja ter. Por exemplo, para 4 streams, podemos adicionar 2 linhas e 2 colunas.
[tiled-display] rows=2 columns=2 -
Definir
num-sources=4e adicioneuride todos os 4 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
Executar Inferência
deepstream-app -c deepstream_app_config.txt

Resultados de Benchmark
Os benchmarks a seguir resumem o desempenho dos modelos YOLO11 em diferentes níveis de precisão TensorRT com um tamanho de entrada de 640x640 no NVIDIA Jetson Orin NX 16GB.
Gráfico de Comparação

Tabela de Comparação Detalhada
Desempenho
| Formato | Status | Tempo de inferência (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
| Formato | Status | Tempo de inferência (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 14.53 |
| TensorRT (FP16) | ✅ | 7.91 |
| TensorRT (INT8) | ✅ | 6.05 |
| Formato | Status | Tempo de inferência (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 32.05 |
| TensorRT (FP16) | ✅ | 15.55 |
| TensorRT (INT8) | ✅ | 10.43 |
| Formato | Status | Tempo de inferência (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 39.68 |
| TensorRT (FP16) | ✅ | 19.88 |
| TensorRT (INT8) | ✅ | 13.64 |
| Formato | Status | Tempo de inferência (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 80.65 |
| TensorRT (FP16) | ✅ | 39.06 |
| TensorRT (INT8) | ✅ | 22.83 |
Agradecimentos
Este guia foi inicialmente criado por nossos amigos da Seeed Studio, Lakshantha e Elaine.
FAQ
Como configurar o Ultralytics YOLO11 em um dispositivo NVIDIA Jetson?
Para configurar o Ultralytics YOLO11 em um dispositivo NVIDIA Jetson, você primeiro precisa instalar o DeepStream SDK compatível com sua versão do JetPack. Siga o guia passo a passo no nosso Guia de Início Rápido para configurar seu NVIDIA Jetson para a implantação do YOLO11.
Qual é o benefício de usar TensorRT com YOLO11 no NVIDIA Jetson?
Usar o TensorRT com YOLO11 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 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.
Posso executar o Ultralytics YOLO11 com o DeepStream SDK em diferentes hardwares NVIDIA Jetson?
Sim, o guia para implantar o Ultralytics YOLO11 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 YOLO11 para obter etapas detalhadas.
Como posso converter um modelo YOLO11 para ONNX para DeepStream?
Para converter um modelo YOLO11 para o formato ONNX para implantação com DeepStream, use o utils/export_yolo11.py script de DeepStream-Yolo repositório.
Aqui está um comando de exemplo:
python3 utils/export_yolo11.py -w yolo11s.pt --opset 12 --simplify
Para obter mais detalhes sobre a conversão de modelos, consulte a nossa seção de exportação de modelos.
Quais 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 com base nos níveis de precisão do TensorRT. Por exemplo, os modelos YOLO11s 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
Esses benchmarks ressaltam a eficiência e a capacidade de usar modelos YOLO11 otimizados para TensorRT no hardware NVIDIA Jetson. Para mais detalhes, consulte nossa seção de Resultados de Benchmark.