Solução de Detecção de Armas com IA para Alertas em Tempo Real na Borda
Este projeto é fornecido apenas para fins educacionais e de demonstração.
Se você pretende implantá-lo em um ambiente real, certifique-se de estar em conformidade com as regulamentações locais e obtenha todas as autorizações necessárias antes de fazê-lo.
Visão Geral
A Solução de Detecção de Armas com Frigate + Node-RED é uma pilha de análise de vídeo com IA de borda que detecta armas de fogo em streams de câmera ao vivo e orquestra alertas, revisão e integrações. Desenvolvida para implantações com preservação de privacidade e baixa latência em AI Boxes, na série NVIDIA Jetson e reComputer R2000, ela combina um mecanismo de detecção otimizado (Frigate) com uma camada de automação visual (Node‑RED) e revisão opcional assistida por LLM.

Ela oferece uma experiência completa de AI NVR1 que:
- Detecta armas de fogo a partir de streams RTSP/HTTP ao vivo em tempo real.
- Automatiza alertas de eventos, registro e notificações.
- Opera localmente para garantir privacidade, baixa latência e confiabilidade.
Siga este guia para implantar a solução se o seu dispositivo não for do pacote da Seeed ou se você quiser adaptá-la à sua própria configuração.
| Gestão de Segurança em Campus |
|---|
![]() |
Recursos
NVRs tradicionais dependem de monitoramento humano, que é lento, inconsistente e difícil de escalar. Esta solução resolve esses desafios ao se concentrar em resultados mensuráveis que entregam valor imediato.
Tempo de Resposta Mais Rápido
Obtenha consciência situacional instantânea com alertas automáticos e painéis em tempo real, evitando os atrasos do monitoramento manual.
Menos Falsos Positivos
Utilize verificação opcional assistida por LLM para revisar alertas de forma inteligente, reduzindo significativamente falsos alarmes e concentrando a atenção do operador.
Soberania de Dados & Privacidade
Toda inferência e processamento de dados ocorre on‑premise, sem dependência de nuvem, garantindo total privacidade e controle dos dados.
Suporte Escalável a Múltiplos Streams
Aproveite o poderoso decodificador de hardware nas plataformas Jetson e Hailo para monitorar múltiplos streams de câmera simultaneamente sem perda de desempenho.
Arquitetura do Sistema
A solução é composta por vários módulos principais que funcionam em conjunto:
- Frigate processa o vídeo ao vivo e publica eventos de detecção via MQTT.
- Node-RED se inscreve nesses eventos, orquestra fluxos de trabalho de alerta e atualiza o painel.
- O Painel em Tempo Real oferece monitoramento visual, revisão de eventos e configuração do sistema.
- Webhooks permitem integração com quaisquer sistemas de terceiros para notificações e exportação de dados.
Guia de Implantação
Pré-requisitos
- AI Boxes/Hardware de Borda: reComputer J3011/J4012 (série Jetson Nano/Xavier/Orin).
- Câmeras de Rede: streams RTSP/HTTP acessíveis na mesma rede.
- Familiaridade básica com Docker, Node-RED e configuração do Frigate.
Nesta página, usaremos o reComputer J4012 (Jetson Orin™ NX 16GB) como plataforma de exemplo. No entanto, as etapas são semelhantes para outros hardwares compatíveis.
Etapa 1: Instalação do Frigate
Execute o seguinte comando para instalar o curl se ele ainda não estiver instalado:
sudo apt update && sudo apt install -y curl
⚠️ Não execute sudo apt upgrade, pois isso pode quebrar dependências específicas do Jetson.
Use o script de instalação em um clique pré-configurado para implantar o Frigate automaticamente no seu dispositivo Jetson.
curl -sSL https://raw.githubusercontent.com/Seeed-Studio/frigate-on-jetson/main/install.sh | bash
Quando a instalação terminar, abra o navegador e acesse http://<your_jetson_ip>:5000 para entrar na interface web do Frigate e configurar suas câmeras.
Se não funcionar, verifique se você não tem falta de permissão para executar o Docker sem sudo. Consulte a seção de FAQ para passos de solução de problemas. Em seguida, execute novamente o comando acima.
No NodeRED, nós iremos assinar os tópicos MQTT do Frigate para receber eventos de detecção e orquestrar fluxos de trabalho de alerta. Você pode consultar a documentação de MQTT do Frigate para mais detalhes sobre os tópicos e payloads disponíveis.
Etapa 2: Configuração do Node-RED
Usamos NodeRED como a camada de orquestração para lidar com a programação.
Instalação do Node-RED
Se você ainda não instalou o Node-RED, siga as etapas abaixo para configurá-lo no seu dispositivo Jetson.
Execute o Node-RED em um contêiner com o seguinte comando:
sudo docker run -d --restart=always -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
Depois que o contêiner iniciar, abra o navegador e acesse http://<your_jetson_ip>:1880 para entrar no editor do Node-RED.

Instalação de Nodes
Antes de começarmos, certifique-se de instalar os seguintes nodes do Node-RED pela opção "Manage palette" no editor do Node-RED:
node-red-dashboardpara construir o dashboard simples do front-end.

Aplicações
Em ambientes como campi, centros de transporte, parques industriais e locais públicos, os operadores precisam responder instantaneamente a riscos envolvendo armas de fogo. Esta solução foi projetada para:
Campus & Educação
Habilite alertas proativos para as equipes de segurança e facilite a revisão rápida de incidentes com dados de eventos registrados e capturas de tela.
Centros de Transporte Público
Implemente monitoramento com múltiplas câmeras em estações e integre alertas diretamente em um Centro de Operações de Segurança (SOC) via webhooks.
Parques Industriais & Logística
Proteja perímetros, pontos de acesso e zonas sensíveis com monitoramento automatizado que nunca se cansa ou se distrai.
Os seguintes demos de exemplo orientam você pelo processo de implantação e personalização da solução.
Demo 1 — Alerta de Detecção de Arma
Este demo mostra como criar um fluxo Node-RED que escuta eventos de detecção de arma do Frigate via MQTT e então dispara alertas em tempo real tanto em um dashboard quanto por meio de notificações via webhook.
Pipeline de Dados
Frigate (detecta arma) → MQTT (publica) → Node-RED (filtra/alerta) → Dashboard + Webhook

Configuração do Fluxo Node-RED
Você pode importar o fluxo de exemplo diretamente no seu editor Node-RED usando o arquivo de configuração de fluxo fornecido (gist flow.json).
Observação: Atualize o endereço IP e a URL do webhook no fluxo para corresponder à sua instância do Frigate e ao endpoint de notificação.
O caminho de entrada do dashboard é configurado como /frigate.
Acesse o dashboard em: http://<your_jetson_ip>:1880/dashboard/frigate
Por exemplo: http://192.168.101.100:1880/dashboard/frigate.
Visão Geral do Fluxo
- Ouvinte MQTT – Assina um tópico específico (por exemplo, frigate/reviews) para receber eventos de detecção.
- Filtro de Eventos – Deixa passar apenas eventos rotulados como “gun”.
- Construtor de Alertas – Constrói uma mensagem de alerta detalhada incluindo miniatura, carimbo de tempo e contador.
- Atualização do Dashboard – Atualiza o dashboard com a imagem mais recente, histórico de eventos e contadores de detecção.
- Notificação via Webhook – Envia requisições HTTP POST para endpoints externos, como bot do Telegram, Slack ou APIs personalizadas.
Resultados
Depois de configurar este fluxo, o Node-RED responderá automaticamente aos eventos de detecção de arma do Frigate atualizando seu dashboard e enviando notificações imediatas via webhook.
Prossiga para a seção de Configuração do Frigate para instruções sobre como configurar os parâmetros de detecção.
Config Padrão do Frigate
Navegue rapidamente até a página de configuração do Frigate em http://<your_jetson_ip>:5000/config para ver sua configuração atual.
O Frigate usa um arquivo YAML chamado config.yml para definir como ele é executado.
Este arquivo informa ao Frigate onde encontrar os streams da sua câmera, qual modelo de IA usar e como enviar os resultados de detecção por MQTT.
Ao ajustá-lo, você pode controlar como os objetos são detectados, gravados e exibidos.
Local de Armazenamento
Por padrão, o Frigate armazena gravações de vídeo e capturas de tela em: /media/frigate no seu dispositivo Jetson.
Por exemplo:
seeed@desktop:/$ docker exec -it frigate /bin/sh
root@274103ae951b:/opt/frigate# cd /media/frigate/
root@274103ae951b:/media/frigate# ls
clips exports handgun.mp4 machinegun.mov recordings
Se você planeja manter vídeos por períodos mais longos, monte este diretório em um SSD externo ou unidade de rede para evitar que o armazenamento interno do seu Jetson fique cheio.
Configuração da Câmera
No Frigate, cada câmera precisa ser definida na seção cameras:.
Cada bloco de câmera descreve de onde vem o fluxo de vídeo e como ele é decodificado antes de ser analisado pelo modelo de detecção.
cameras:
handgun:
enabled: true
ffmpeg:
hwaccel_args: preset-jetson-h264
inputs:
- path: /media/frigate/handgun.mp4
input_args: -stream_loop -1 -re
roles:
- detect
machinegun:
enabled: true
ffmpeg:
hwaccel_args: preset-jetson-h264
inputs:
- path: /media/frigate/machinegun.mov
input_args: -stream_loop -1 -re
roles:
- detect
Explicação:
enabled: Ativa ou desativa esta câmera.ffmpeg: Define como o Frigate usa o FFmpeg para ler e decodificar o fluxo de vídeo.- FFmpeg é um framework de mídia que converte e transmite vídeo a partir de arquivos, câmeras RTSP ou outras fontes.
hwaccel_args: Habilita aceleração de hardware (por exemplo, decodificação H.264 no Jetson).inputs: Lista uma ou mais entradas de vídeo.path: A fonte de vídeo real.- Neste exemplo, é um arquivo de demonstração local como
/media/frigate/handgun.mp4. - Em implantações reais, você pode substituí-lo por um fluxo de câmera ao vivo, como:
path: rtsp://user:[email protected]:554/stream1
- Neste exemplo, é um arquivo de demonstração local como
input_args: Parâmetros extras do FFmpeg.-stream_loop -1faz o loop do vídeo de demonstração indefinidamente.-regarante que a reprodução corresponda à velocidade em tempo real.
roles: Define como esta entrada é usada.detectsignifica que o fluxo é usado para detecção de objetos.- Outros papéis possíveis incluem
recordourtmppara streaming.
Cada câmera pode ter várias entradas — por exemplo, uma para detecção e outra para gravação em alta qualidade. O Frigate gerencia automaticamente a decodificação e extração de quadros via FFmpeg para todas as fontes definidas.
Modelo de IA e Configurações de Detecção
Depois de definir as câmeras, o próximo passo é informar ao Frigate qual modelo de IA usar e como processar cada quadro de vídeo. Esta seção define o tipo de detector, o caminho do arquivo do modelo e o comportamento de detecção, como tamanho do quadro, rastreamento de objetos e limiar.
detectors:
tensorrt:
type: tensorrt
device: 0
model:
path: /config/model_cache/tensorrt/yolov4-tiny-288_gun_v3.trt
width: 288
height: 288
labelmap_path: /config/guns.txt
input_tensor: nchw
input_pixel_format: rgb
Explicação:
detectors: Define qual backend de IA o Frigate usa para inferência.type: tensorrt informa ao Frigate para usar aceleração NVIDIA TensorRT (otimizada para Jetson).device: Especifica o índice da GPU. Para a maioria dos dispositivos Jetson, use 0.
model: Aponta para o arquivo de modelo de IA e descreve seu formato de entrada.path: Caminho para o seu arquivo .trt (engine TensorRT).width/ height: Resolução de entrada do modelo (deve corresponder ao que o modelo espera).labelmap_path: Arquivo que mapeia índices de classes para rótulos, por exemplo guns.txt → contém "gun".input_tensor: Define o layout do tensor; nchw = batch, canal, altura, largura.input_pixel_format: Especifica o formato de pixel, geralmente rgb.
Modelos TensorRT são versões compiladas de redes treinadas, otimizadas para inferência rápida em GPU. Você pode substituir este arquivo pelo seu próprio modelo se treinar um novo — apenas garanta que a largura, altura e rótulos correspondam.
Configuração de Rastreamento de Objetos
O Frigate pode detectar e rastrear tipos específicos de objetos. Para este projeto, rastreamos apenas armas, o que mantém o sistema eficiente e focado.
objects:
track:
- gun
filters:
gun:
threshold: 0.3
Explicação:
track: Lista de objetos para detectar e rastrear.- Aqui é apenas "gun", mas você pode adicionar mais rótulos (por exemplo, pessoa, carro etc.) se o seu modelo os suportar.
filters: Ajusta finamente a confiança de detecção para cada tipo de objeto.threshold: Valor mínimo de confiança (0,0–1,0).- Um valor mais baixo (como 0,3) é mais sensível, mas pode incluir falsos positivos.
- Um valor mais alto (como 0,5) torna a detecção mais rígida.
Se você notar muitas detecções falsas, tente aumentar o threshold para 0,5 ou mais. Para objetos menores que são frequentemente perdidos, você pode diminuí-lo um pouco — mas equilibre entre precisão e ruído.
Configurações de Gravação
Quando o Frigate detecta um objeto, ele pode gravar vídeos e salvar snapshots para análise posterior ou exibição de alertas. Essas configurações controlam por quanto tempo as gravações são armazenadas e quais informações são exibidas nas imagens capturadas.
record:
enabled: true
retain:
days: 3
mode: all
Explicação:
enabled: Ativa a gravação de vídeo.retain: Controla por quanto tempo manter os arquivos gravados e que tipo de filmagem é armazenada.days: Número de dias para manter as gravações antes da exclusão automática.mode:all– grava continuamente (útil para testes).motion– grava apenas quando for detectado movimento.events– grava somente quando objetos rastreados (por exemplo, armas) aparecem.
Para implantações reais, use mode: events ou mode: motion para economizar espaço de armazenamento mantendo gravações úteis.
Configurações de Snapshot
snapshots:
enabled: true
clean_copy: true
timestamp: true
bounding_box: true
crop: false
retain:
default: 14
quality: 95
Explicação:
enabled: Habilita o salvamento de snapshots quando ocorre um evento de detecção.clean_copy: Salva uma versão adicional sem caixas de detecção.timestamp: Adiciona a sobreposição de data e hora no snapshot.bounding_box: Desenha uma caixa ao redor dos objetos detectados.crop: Quando true, salva apenas a área recortada da detecção.retain.default: Número de dias para manter os snapshots.quality: Define a qualidade da imagem (1–100). Maior = melhor detalhe, porém tamanho de arquivo maior.
Snapshots são ideais para alertas ou dashboards, pois são muito menores que clipes de vídeo e fáceis de enviar via webhook ou MQTT.
Visão Birdseye
O Frigate também suporta uma visão Birdseye, que exibe múltiplos feeds de câmera juntos para uma visão geral rápida.
birdseye:
enabled: true
mode: objects
Explicação:
enabled: Ativa a visão composta Birdseye.mode:objects– mostra apenas câmeras onde objetos estão sendo detectados no momento.continuous– sempre mostra todos os feeds de câmera.
Configuração de MQTT
O Frigate comunica seus eventos de detecção por meio de MQTT, o que permite que outros serviços — como Node-RED, Home Assistant ou dashboards personalizados — recebam atualizações em tempo real sempre que um objeto é detectado. Ele também fornece opções de registro (logging) para ajudar a monitorar o desempenho do sistema e depurar problemas de detecção.
mqtt:
enabled: true
host: 172.17.0.1
port: 1883
Explicação:
enabled: Ativa a comunicação via MQTT.host: O endereço IP do seu broker MQTT.- Ao usar Docker no Jetson,
172.17.0.1geralmente se refere à máquina host. - Substitua pelo IP real do seu servidor MQTT se você o executar em outro dispositivo.
- Ao usar Docker no Jetson,
port: Porta padrão do MQTT, normalmente 1883.
Para configurações MQTT mais avançadas, consulte a documentação MQTT do Frigate.
Com o MQTT habilitado, o Frigate se torna parte de uma rede de eventos em tempo real — enviando alertas de detecção de armas diretamente para o Node-RED ou Home Assistant, onde eles podem acionar dashboards, notificações ou fluxos de trabalho personalizados.
Desempenho e Dimensionamento
| Plataforma de Hardware | Modelo | FPS (Total) | Streams Estáveis (≥15 FPS) | Observações |
|---|---|---|---|---|
| reComputer R2000 (Raspberry Pi + Hailo-8) | YOLOv11-s | 30 | 2 | NVR de IA compacto; dispositivo de borda eficiente e de baixo consumo |
| reComputer J3011 (Jetson Orin Nano 8 GB) | YOLOv4-tiny-288 | 90 | 6 | Jetson de entrada; FPS estabiliza após aquecimento |
| reComputer J4012 (Jetson Orin NX 16 GB) | YOLOv4-tiny-288 | 120 | 8 | Limite de concorrência NVDEC atingido; ainda há folga de computação |
Recursos e Próximos Passos
- Pacote de Solução: Frigate + Node-RED Gun Detection on Jetson
- Documentação do Frigate: https://docs.frigate.video/
- Repositório GitHub: Seeed-Studio / frigate-on-jetson
- Add-on de Dashboard para Node-RED: @flowfuse/node-red-dashboard
FAQ
1. Não consigo instalar Docker no meu dispositivo Jetson. O que devo fazer?
Se você encontrar problemas com o script padrão de instalação do Docker, pode usar o seguinte script alternativo:
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
Para mais informações, visite: https://linuxmirrors.cn
2. Como saber minha versão do Jetpack?
Execute o seguinte comando no seu dispositivo Jetson:
dpkg -l | grep nvidia-jetpack
A saída mostrará a versão do Jetpack instalada.
3. Como atualizar minha versão do Jetpack?
Siga as instruções na wiki do seu produto específico.
4. “Permission Denied” ao executar Docker
Você não tem permissão para acessar o daemon do Docker. Execute:
sudo usermod -aG docker $USER
newgrp docker
Fazer logout e login novamente também aplica as novas permissões de grupo.
Depois verifique:
docker ps
Footnotes
-
AI NVRs utilizam modelos avançados de aprendizado de máquina para fornecer insights em tempo real e capacidades de automação, enquanto NVRs tradicionais se concentram principalmente em gravar e armazenar imagens de vídeo. ` ↩
