Como Executar Zero-Shot Detection no reComputer com Jetson Platform Services
Introdução
Transformers de visão em IA generativa, como o CLIP, tornaram possível construir modelos de zero shot detection capazes de detecção de objetos com vocabulário aberto. Isso significa que o modelo não fica limitado a um conjunto de classes predefinidas para detectar. Os objetos a serem detectados são configurados em tempo de execução pelo usuário. O serviço de IA Zero Shot Detection permite a implantação rápida de IA generativa com Jetson Services para detecção de vocabulário aberto em entrada de stream de vídeo ao vivo. O serviço de IA Zero Shot Detection expõe endpoints de REST API para controlar a entrada do stream e os objetos a serem detectados.
Este wiki fornece um tutorial sobre como executar Zero-Shot Detection no reComputer J4012.

Requisitos
Antes de prosseguir com o processo de configuração, certifique-se de que seu sistema atenda aos seguintes pré-requisitos:

-
Um reComputer J4012 Orin NX 16G executando Ubuntu
22.04ouposterior. -
Versão do driver:
535.113.01, Jetpack6.0e versão do CUDA:12.2. -
Certifique-se de que o JetPack e os pacotes de serviços Jetson relacionados estejam instalados.
sudo apt-get install nvidia-jetpack
sudo apt install nvidia-jetson-services -
Câmeras IP ou vídeos locais podem ser transmitidos via RTSP. (Recomendamos usar nosso tutorial NVStreamer para streaming RTSP.)
Primeiros Passos
Passo 1: Baixe o pacote do aplicativo zero_shot_detection-1.1.0.tar.gz do NGC para o seu Jetson usando este link: NGC Reference Workflow and Resources. Você precisará inserir suas credenciais NGC. Na página, use uma das opções disponíveis no menu Download (canto superior direito):
tar -xvf zero_shot_detection-1.1.0.tar.gz
cd ~/zero_shot_detection/example_1
Passo 2: O serviço de IA de zero-shot detection usará os serviços jetson-ingress e jetson-redis. Você precisa configurar o serviço jetson-ingress para expor a REST API de zero-shot detection. Copie a configuração padrão fornecida para o diretório de configuração correspondente do serviço.
sudo cp config/zero_shot_detection-nginx.conf /opt/nvidia/jetson/services/ingress/config
Passo 3: Execute os serviços básicos.
sudo systemctl start jetson-monitoring
sudo systemctl start jetson-sys-monitoring
sudo systemctl start jetson-gpu-monitoring
Passo 4: Verifique se todas as linhas no arquivo de configuração de ingress da plataforma (usado para monitorar serviços) estão descomentadas no seguinte arquivo:
/opt/nvidia/jetson/services/ingress/config/platform-nginx.conf
Passo 5: Inicie o API Gateway para acessar o painel de monitoramento.
sudo systemctl restart jetson-ingress
sudo systemctl restart jetson-redis
sudo systemctl restart jetson-vst
Passo 6: Inicie o serviço de IA de zero-shot detection.
sudo docker compose up -d
Para verificar se todos os contêineres necessários foram iniciados, você pode executar o seguinte comando:
sudo docker ps

Adicionar a entrada de stream RTSP
Você pode primeiro adicionar um stream RTSP para o modelo de zero-shot detection usar com o seguinte comando curl. É recomendado usar o tutorial NVStreamer para streaming.
-
Passo 1: Substitua
0.0.0.0pelo IP do seu Jetson e o link deliveStreamUrlpelo seu link RTSP, depois digite o seguinte comando no terminal:curl --location 'http://0.0.0.0:5010/api/v1/live-stream' \
--header 'Content-Type: application/json' \
--data '{
"liveStreamUrl": "rtsp://0.0.0.0:31554/nvstream/root/store/nvstreamer_videos/car.mp4"
}'
Observação: além do comando curl, você também pode testar diretamente a REST API através da página de documentação da API, que está disponível em http://0.0.0.0:5010/docs quando o serviço de zero-shot detection é iniciado.
-
Passo 2: Após executar o primeiro passo, um ID será retornado. Você precisa registrar esse ID para uso nas etapas subsequentes.
{"id": "a782e200-eb48-4d17-a1b9-5ac0696217f7"}Você também pode obter o ID posteriormente usando o seguinte comando:
curl --location 'http://0.0.0.0:5010/api/v1/live-stream'Para excluir um stream pelo seu ID, você pode usar o seguinte comando:
curl --location --request DELETE 'http://0.0.0.0:5010/api/v1/live-stream/{id}'
Adicionar Classes de Detecção
O modelo de zero shot detection é capaz de atualizar suas classes de detecção em tempo de execução. Este endpoint aceita uma lista de objetos a serem detectados e um valor de limite associado. O limite é a sensibilidade da detecção. Valores mais altos reduzirão os falsos positivos. Valores mais baixos aumentarão os falsos positivos. Atualmente este serviço suporta apenas 1 stream, mas no futuro esta API permitirá suporte a múltiplos streams.
-
Passo 1: Substitua
0.0.0.0pelo endereço IP do seu reComputer, modifiqueobjectspara incluir os objetos que você precisa detectar (até dez), definathresholdspara cada categoria e use oidretornado na etapa anterior. Depois de completar o comando, insira o seguinte no terminal:curl -X 'POST' \
'http://192.168.49.101:5010/api/v1/detection/classes' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"objects": [
"a car", "a people"
],
"thresholds": [
0.2, 0.04
],
"id": "a782e200-eb48-4d17-a1b9-5ac0696217f7"
}'
Visualizar Resultado do Stream RTSP
A saída da detecção será transmitida através de rtsp://reComputer_ip:5011/out. Fornecemos um script em Python para visualizar a saída do stream de vídeo. Você precisa instalar a biblioteca opencv-python com antecedência e depois executar o seguinte script em Python:
-
Passo 1: Instale a biblioteca opencv-python:
pip install opencv-python -
Passo 2: Execute o seguinte script em Python:
import cv2
rtsp_url = "rtsp://reComputer_ip:5011/out"
cap = cv2.VideoCapture(rtsp_url)
if not cap.isOpened():
print("Cannot open RTSP stream")
exit()
while True:
ret, frame = cap.read()
if not ret:
print("Failed to retrieve frame")
break
cv2.imshow('RTSP Stream', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Desligar
Para parar o serviço de zero-shot detection, execute o seguinte comando no mesmo diretório onde o arquivo compose.yaml está localizado:
sudo docker compose down
Mais Detalhes
Zero Shot Detection com Jetson Platform Services: https://docs.nvidia.com/jetson/jps/inference-services/zero_shot_detection.html
Suporte Técnico & Discussão de Produto
Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.