Sistema Inteligente de Gerenciamento de Tráfego usando DeepStream SDK

Visão geral
À medida que as cidades crescem dia após dia, também aumenta o número de veículos nas estradas. Por causa disso, a congestão do tráfego também cresce rapidamente e, por sua vez, pode impactar fortemente o desenvolvimento de um país. Este wiki propõe uma solução para esse problema usando visão de IA. O vídeo de streaming das câmeras de CFTV já implantadas em cada semáforo pode ser capturado, realizar detecção de objetos para detectar todos os veículos e então controlar os semáforos de acordo com a congestão de veículos. Além disso, esses dados podem ser enviados para um banco de dados juntamente com a marca do veículo e o número de pedestres para análise posterior.
Para esta aplicação de visão de IA, usaremos o DeepStream SDK da NVIDIA e realizaremos inferência na borda em um dispositivo NVIDIA Jetson. Também usaremos um modelo pré-treinado para esta tarefa do NVIDIA NGC Model Catalog para tornar o processo de implantação rápido e fácil. O NVIDIA NGC Model Catalog fornece um grande número de modelos pré-treinados para muitas outras aplicações diferentes também.
O que é o DeepStream SDK?
O DeepStream SDK da NVIDIA oferece um kit de ferramentas completo de análise de streaming para processamento multisensor baseado em IA, compreensão de vídeo, áudio e imagem. O DeepStream traz flexibilidade de desenvolvimento ao dar aos desenvolvedores a opção de desenvolver em C/C++, Python ou usar programação gráfica de baixo código com o Graph Composer. O DeepStream é fornecido com vários plugins e extensões acelerados por hardware.

O DeepStream é desenvolvido tanto para desenvolvedores quanto para empresas e oferece amplo suporte a modelos de IA para modelos populares de detecção e segmentação de objetos, como os mais avançados SSD, YOLO, FasterRCNN e MaskRCNN. Você também pode integrar funções e bibliotecas personalizadas no DeepStream.
O DeepStream oferece flexibilidade desde a prototipagem rápida até soluções em nível de produção completa. Ele também permite que você escolha seu caminho de inferência. Com a integração nativa ao NVIDIA Triton Inference Server, você pode implantar modelos em frameworks nativos, como PyTorch e TensorFlow, para inferência. Usando o NVIDIA TensorRT para inferência de alta taxa de transferência com opções para multi-GPU, multi-stream e suporte a batching, você pode obter o melhor desempenho possível.
Hardware compatível
O DeepStream SDK é suportado pelo seguinte hardware:
-
Kits da Seeed:
- reComputer J1010 construído com Jetson Nano
- reComputer J1020 construído com Jetson Nano
- reComputer J2011 construído com Jetson Xavier NX 8GB
- reComputer J2012 construído com Jetson Xavier NX 16GB
-
Carrier Boards da Seeed:
- Jetson Mate
- Jetson SUB Mini PC
- Kit Jetson Xavier AGX H01
- Placa-mãe A203
- Placa-mãe A203 (Versão 2)
- Placa-mãe A205
- Placa-mãe A206
-
Kits de Desenvolvimento Oficiais da NVIDIA:
- NVIDIA® Jetson Nano Developer Kit
- NVIDIA® Jetson Xavier NX Developer Kit
- NVIDIA® Jetson AGX Xavier Developer Kit
- NVIDIA® Jetson TX2 Developer Kit
- NVIDIA® Jetson AGX Orin Developer Kit
-
SoMs oficiais da NVIDIA:
- Módulo NVIDIA® Jetson Nano
- Módulo NVIDIA® Jetson Xavier NX
- Módulo NVIDIA® Jetson TX2 NX
- Módulo NVIDIA® Jetson TX2
- Módulo NVIDIA® Jetson AGX Xavier
Pré-requisitos
- Qualquer um dos dispositivos Jetson acima executando JetPack
- Teclado e monitor HDMI
- PC host com Windows, Linux ou Mac
- Webcam USB ou câmera MIPI CSI compatível com seu dispositivo Jetson
Primeiros passos
Aqui usaremos o modelo DashCamNet, que atua como o detector primário, detectando os objetos de interesse e, para cada carro detectado, o modelo VehicleTypeNet e o modelo VehicleMakeNet atuam como classificadores secundários, determinando o tipo do carro e a marca do carro, respectivamente. O VehicleTypeNet classifica o seguinte: cupê, sedã, SUV, van, veículo grande e caminhão. Já o VehicleMakeNet classifica os seguintes carros: Acura, Audi, BMW, Chevrolet, Chrysler, Dodge, Ford, GMC, Honda, Hyundai, Infiniti, Jeep, Kia, Lexus, Mazda, Mercedes, Nissan, Subaru, Toyota e Volkswagen.
O fluxo de trabalho abaixo foi testado em um reComputer J1010 executando JetPack 4.6.1
Passo 1: Certifique-se de que você instalou corretamente todos os Componentes do SDK e o DeepStream SDK no dispositivo Jetson. (consulte este wiki como referência para a instalação)
Nota: Recomenda-se usar o NVIDIA SDK Manager para instalar todos os componentes do SDK e o DeepStream SDK
Passo 2: Baixe os arquivos de configuração
git clone https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps.git
cd deepstream_reference_apps/deepstream_app_tao_configs/
sudo cp -a * /opt/nvidia/deepstream/deepstream/samples/configs/tao_pretrained_models/
Passo 3: Baixe os modelos
sudo apt install -y wget zip
cd /opt/nvidia/deepstream/deepstream/samples/configs/tao_pretrained_models/
sudo ./download_models.sh
Passo 4: Abra deepstream_app_source1_dashcamnet_vehiclemakenet_vehicletypenet.txt
vi deepstream_app_source1_dashcamnet_vehiclemakenet_vehicletypenet.txt
Passo 5: Altere sync=1 para sync=0 em [sink0]
[sink0]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File
type=2
sync=0
source-id=0
gpu-id=0
Passo 6: Em [primary-gie], altere model-engine-file para ../../models/tao_pretrained_models/dashcamnet/resnet18_dashcamnet_pruned.etlt_b1_gpu0_fp16.engine
[primary-gie]
enable=1
gpu-id=0
# Modify as necessary
model-engine-file=../../models/tao_pretrained_models/dashcamnet/resnet18_dashcamnet_pruned.etlt_b1_gpu0_fp16.engine
batch-size=1
#Required by the app for OSD, not a plugin property
bbox-border-color0=1;0;0;1
bbox-border-color1=0;1;1;1
bbox-border-color2=0;0;1;1
bbox-border-color3=0;1;0;1
gie-unique-id=1
config-file=config_infer_primary_dashcamnet.txt
Passo 7: Em [secondary-gie0], altere model-engine-file para ../../models/tao_pretrained_models/vehiclemakenet/resnet18_vehiclemakenet_pruned.etlt_b4_gpu0_fp16.engine
[secondary-gie0]
enable=1
model-engine-file=../../models/tao_pretrained_models/vehiclemakenet/resnet18_vehiclemakenet_pruned.etlt_b4_gpu0_fp16.engine
gpu-id=0
batch-size=4
gie-unique-id=4
operate-on-gie-id=1
operate-on-class-ids=0;
config-file=config_infer_secondary_vehiclemakenet.txt
Passo 8: Em [secondary-gie1], altere model-engine-file para ../../models/tao_pretrained_models/vehicletypenet/resnet18_vehicletypenet_pruned.etlt_b4_gpu0_fp16.engine
[secondary-gie1]
enable=1
model-engine-file=../../models/tao_pretrained_models/vehicletypenet/resnet18_vehicletypenet_pruned.etlt_b4_gpu0_fp16.engine
gpu-id=0
batch-size=4
gie-unique-id=5
operate-on-gie-id=1
operate-on-class-ids=0;
config-file=config_infer_secondary_vehicletypenet.txt
Passo 9: Conecte a câmera, o teclado e o monitor HDMI ao dispositivo Jetson e execute o seguinte
sudo deepstream-app -c deepstream_app_source1_dashcamnet_vehiclemakenet_vehicletypenet.txt
Agora você pode visualizar a demonstração no monitor HDMI conectado da seguinte forma

Se você quiser testar outras demos disponíveis em /opt/nvidia/deepstream/deepstream/samples/configs/tao_pretrained_models/, você pode simplesmente executá-las da seguinte forma
sudo deepstream-app -c deepstream_app_source1_$MODEL.txt
Suporte Técnico e Discussão de Produtos
Obrigado por escolher nossos produtos! Estamos aqui para oferecer 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.