Ultralytics YOLO11 em NVIDIA Jetson usando DeepStream SDK e TensorRT
Ver: Como executar vários fluxos com o DeepStream SDK no Jetson Nano usando Ultralytics YOLO11
Este guia abrangente fornece um passo a passo detalhado para implantar Ultralytics YOLO11 em NVIDIA dispositivos Jetson usando DeepStream SDK e TensorRT. Aqui usamos TensorRT para maximizar o desempenho da inferência na plataforma Jetson.
Nota
Este guia foi testado com o Seeed Studio reComputer J4012, que se baseia no NVIDIA Jetson Orin NX 16GB com a versão JetPack do JP5.1.3 e com o Seeed Studio reComputer J1020 v2, que se baseia no NVIDIA Jetson Nano 4GB com a versão JetPack do JP4.6.4. Espera-se que funcione em toda a linha de hardware NVIDIA Jetson, incluindo o mais recente e o mais antigo.
O que é o NVIDIA DeepStream?
NVIDIAO DeepStream SDK da Microsoft é um kit de ferramentas completo de análise de streaming baseado no GStreamer para processamento multissensor baseado em IA, vídeo, áudio e compreensão de 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 é possível 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 de dados de vídeo, imagens 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 no local, na borda e na nuvem.
Pré-requisitos
Antes de começar a seguir este guia:
- Visite a nossa documentação, Guia de início rápido: NVIDIA Jetson com Ultralytics YOLO11 para configurar o seu dispositivo NVIDIA Jetson com Ultralytics YOLO11
-
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
Dica
Neste guia, usamos o método do pacote Debian para instalar o DeepStream SDK no dispositivo Jetson. Você também pode visitar a página DeepStream SDK on Jetson (Archived) para acessar versões antigas do DeepStream.
Configuração do DeepStream para YOLO11
Aqui, estamos usando o repositório do GitHub marcoslucianops/DeepStream-Yolo, que inclui o suporte do SDK do DeepStream NVIDIA para modelos YOLO . Agradecemos os esforços de marcoslucianops por suas contribuições!
-
Instalar dependências
-
Clone o seguinte repositório
-
Descarregue Ultralytics YOLO11 modelo de deteção (.pt) à sua escolha a partir das versõesYOLO11 . Neste caso, utilizamos yolov8s.pt.
Nota
Também é possível utilizar um modelo YOLO11 personalizado e treinado.
-
Converter o modelo em ONNX
Passe os argumentos abaixo para o comando acima
Para o DeepStream 6.0.1, use o opset 12 ou inferior. O opset padrão é 16.
Para alterar o tamanho da inferência (predefinição: 640)
Exemplo para 1280:
Para simplificar o modelo ONNX (DeepStream >= 6.0)
Para usar o tamanho de lote dinâmico (DeepStream >= 6.1)
Para utilizar um tamanho de lote estático (exemplo para tamanho de lote = 4)
-
Definir a versão de CUDA de acordo com a versão do JetPack instalada
Para JetPack 4.6.4:
Para JetPack 5.1.3:
-
Compilar a biblioteca
-
Editar o
config_infer_primary_yoloV8.txt
de acordo com o seu modelo (para YOLOv8s com 80 classes) -
Editar o
deepstream_app_config
ficheiro -
Também é possível alterar a fonte de vídeo em
deepstream_app_config
ficheiro. Aqui é carregado um ficheiro de vídeo predefinido
Executar inferência
Nota
Demorará muito tempo a gerar o ficheiro do motor TensorRT antes de iniciar a inferência. Por isso, seja paciente.
Dica
Se pretender converter o modelo para FP16 precisão, basta definir model-engine-file=model_b1_gpu0_fp16.engine
e network-mode=2
no interior config_infer_primary_yoloV8.txt
Calibração INT8
Se pretender utilizar a precisão INT8 para a inferência, deve seguir os passos seguintes
-
Conjunto
OPENCV
variável de ambiente -
Compilar a biblioteca
-
Para o conjunto de dados COCO, descarregar o val2017, extrair e passar para
DeepStream-Yolo
pasta -
Criar um novo diretório para as imagens de calibração
-
Execute o seguinte para selecionar 1000 imagens aleatórias do conjunto de dados COCO para executar a calibração
Nota
NVIDIA recomenda pelo menos 500 imagens para obter uma boa precisão. Neste exemplo, são escolhidas 1000 imagens para obter uma melhor precisão (mais imagens = mais precisão). Pode definir a partir de head -1000. Por exemplo, para 2000 imagens, a cabeça é -2000. Este processo pode demorar muito tempo.
-
Criar o
calibration.txt
ficheiro com todas as imagens selecionadas -
Definir variáveis de ambiente
Nota
Valores mais elevados de INT8_CALIB_BATCH_SIZE resultarão numa maior precisão e numa velocidade de calibração mais rápida. Defina-o de acordo com a sua memória GPU .
-
Atualizar o
config_infer_primary_yoloV8.txt
ficheiroDe
Para
Executar inferência
Configuração de MultiStream
Para configurar vários fluxos numa única aplicação deepstream, pode efetuar as seguintes alterações ao ficheiro deepstream_app_config.txt
ficheiro
-
Altere as linhas e as colunas para criar um ecrã de grelha de acordo com o número de fluxos que pretende ter. Por exemplo, para 4 fluxos, podemos adicionar 2 linhas e 2 colunas.
-
Conjunto
num-sources=4
e acrescentaruri
de todos os 4 fluxos
Executar inferência
Resultados de referência
A tabela seguinte resume o desempenho dos modelos YOLOv8s em diferentes níveis de precisão TensorRT com um tamanho de entrada de 640x640 em NVIDIA Jetson Orin NX 16GB.
Nome do modelo | Precisão | Tempo de inferência (ms/im) | FPS |
---|---|---|---|
YOLOv8s | FP32 | 15.63 | 64 |
FP16 | 7.94 | 126 | |
INT8 | 5.53 | 181 |
Agradecimentos
Este guia foi inicialmente criado pelos nossos amigos do Seeed Studio, Lakshantha e Elaine.
FAQ
Como posso configurar Ultralytics YOLO11 num dispositivo NVIDIA Jetson?
Para configurar Ultralytics YOLO11 em um dispositivo NVIDIA Jetson, primeiro é necessário instalar o SDK do DeepStream 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 YOLO11 .
Qual é a vantagem de utilizar TensorRT com YOLO11 em NVIDIA Jetson?
A utilização de TensorRT com YOLO11 optimiza o modelo para inferência, reduzindo significativamente a latência e melhorando a taxa de transferência em dispositivos Jetson NVIDIA . TensorRT fornece inferência de aprendizagem profunda de alto desempenho e baixa latência através da fusão de camadas, calibração de precisão e ajuste automático do kernel. Isto 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 Ultralytics YOLO11 com DeepStream SDK em diferentes hardwares NVIDIA Jetson?
Sim, o guia para implantação do 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 secção Configuração do DeepStream para YOLO11 para obter passos detalhados.
Como posso converter um modelo YOLO11 para ONNX para DeepStream?
Para converter um modelo YOLO11 para o formato ONNX para implantação com o DeepStream, use o utils/export_yoloV8.py
do script DeepStream-Yolo repositório.
Eis um exemplo de comando:
Para mais informações sobre a conversão de modelos, consulte a nossa secção de exportação de modelos.
Quais são as referências de desempenho para YOLO em NVIDIA Jetson Orin NX?
O desempenho dos modelos YOLO11 em NVIDIA Jetson Orin NX 16GB varia consoante os níveis de precisão TensorRT . Por exemplo, os modelos YOLOv8s atingem:
- Precisão FP32: 15,63 ms/im, 64 FPS
- Precisão FP16: 7,94 ms/im, 126 FPS
- Precisão INT8: 5,53 ms/im, 181 FPS
Esses benchmarks destacam a eficiência e a capacidade de usar modelos YOLO11 otimizados para TensorRT no hardware NVIDIA Jetson. Para obter mais detalhes, consulte a nossa secção Resultados de benchmark.