Solución de Detección de Armas con IA para Alertas en Tiempo Real en el Borde
Este proyecto se proporciona únicamente con fines educativos y de demostración.
Si tiene la intención de implementarlo en un entorno real, por favor asegúrese de cumplir con las regulaciones locales y obtenga cualquier autorización requerida antes de hacerlo.
Descripción General
La Solución de Detección de Armas Frigate + Node-RED es una pila de análisis de video con IA en el borde que detecta armas de fuego en transmisiones de cámara en vivo y orquesta alertas, revisiones e integraciones. Construida para implementaciones que preservan la privacidad y de baja latencia en AI Boxes, la serie Jetson de NVIDIA y reComputer R2000, combina un motor de detección optimizado (Frigate) con una capa de automatización visual (Node‑RED) y revisión asistida por LLM opcional.

Ofrece una experiencia completa de AI NVR1 que:
- Detecta armas de fuego desde transmisiones RTSP/HTTP en vivo en tiempo real.
- Automatiza alertas de eventos, registro y notificaciones.
- Opera localmente para garantizar privacidad, baja latencia y confiabilidad.
Siga esta guía para implementar la solución si su dispositivo no es del paquete de Seeed o si desea adaptarla a su propia configuración.
| Gestión de Seguridad del Campus |
|---|
![]() |
Características
Los NVR tradicionales dependen del monitoreo humano, que es lento, inconsistente y difícil de escalar. Esta solución aborda estos desafíos enfocándose en resultados medibles que entregan valor inmediato.
Tiempo de Respuesta Más Rápido
Logre conciencia situacional instantánea con alertas automatizadas y paneles en tiempo real, evitando las demoras del monitoreo manual.
Menos Falsos Positivos
Utilice verificación asistida por LLM opcional para revisar inteligentemente las alertas, reduciendo significativamente las falsas alarmas y enfocando la atención del operador.
Soberanía de Datos y Privacidad
Toda la inferencia y procesamiento de datos ocurre en las instalaciones sin dependencia de la nube, garantizando completa privacidad y control de datos.
Soporte Escalable Multi-Stream
Aproveche la potente decodificación de hardware en plataformas Jetson y Hailo para monitorear múltiples transmisiones de cámara simultáneamente sin pérdida de rendimiento.
Arquitectura del Sistema
La solución está compuesta por varios módulos clave que trabajan en conjunto:
- Frigate procesa video en vivo y publica eventos de detección vía MQTT.
- Node-RED se suscribe a estos eventos, orquesta flujos de trabajo de alertas y actualiza el panel.
- Panel en Tiempo Real proporciona monitoreo visual, revisión de eventos y configuración del sistema.
- Webhooks permiten integración con cualquier sistema de terceros para notificaciones y exportación de datos.
Guía de Implementación
Prerrequisitos
- AI Boxes/Hardware de Borde: reComputer J3011/J4012 (Serie Jetson Nano/Xavier/Orin).
- Cámaras de Red: Transmisiones RTSP/HTTP accesibles en la misma red.
- Familiaridad básica con Docker, Node-RED y configuración de Frigate.
En esta página, usaremos el reComputer J4012 (Jetson Orin™ NX 16GB) como plataforma de ejemplo. Sin embargo, los pasos son similares para otro hardware compatible.
Paso 1: Instalación de Frigate
Ejecute el siguiente comando para instalar curl si no está ya instalado:
sudo apt update && sudo apt install -y curl
⚠️ No ejecute sudo apt upgrade, ya que puede romper las dependencias específicas de Jetson.
Use el script de instalación preconfigurado de un clic para implementar Frigate automáticamente en su dispositivo Jetson.
curl -sSL https://raw.githubusercontent.com/Seeed-Studio/frigate-on-jetson/main/install.sh | bash
Una vez que la instalación esté completa, abra su navegador y visite http://<su_ip_jetson>:5000 para acceder a la interfaz web de Frigate y configurar sus cámaras.
Si no funcionó, verifique si le falta permiso para ejecutar Docker sin sudo. Consulte la sección de FAQ para pasos de solución de problemas. Y luego vuelva a ejecutar el comando anterior.
En NodeRED, nos suscribiremos a los temas MQTT de Frigate para recibir eventos de detección y orquestar flujos de trabajo de alertas. Puede consultar la documentación MQTT de Frigate para más detalles sobre los temas y cargas útiles disponibles.
Paso 2: Configuración de Node-RED
Usamos NodeRED como la capa de orquestación para manejar la programación.
Instalación de Node-RED
Si aún no ha instalado Node-RED, siga los pasos a continuación para configurarlo en su dispositivo Jetson.
Ejecute Node-RED en un contenedor con el siguiente comando:
sudo docker run -d --restart=always -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
Después de que el contenedor se inicie, abra su navegador y visite http://<su_ip_jetson>:1880 para acceder al editor de Node-RED.

Instalación de Nodos
Antes de comenzar, asegúrese de instalar los siguientes nodos de Node-RED desde la opción "Manage palette" en el editor de Node-RED:
node-red-dashboardpara construir el panel frontal simple.

Aplicaciones
En entornos como campus, centros de transporte, parques industriales y lugares públicos, los operadores necesitan respuesta inmediata a los riesgos de armas de fuego. Esta solución está diseñada para:
Campus y Educación
Habilita alertas proactivas para equipos de seguridad y facilita la revisión rápida de incidentes con datos de eventos registrados e instantáneas.
Centros de Transporte Público
Despliega monitoreo multicámara en estaciones e integra alertas directamente en un Centro de Operaciones de Seguridad (SOC) a través de webhooks.
Parques Industriales y Logística
Asegura perímetros, puntos de acceso y zonas sensibles con monitoreo automatizado que nunca se cansa ni se distrae.
Las siguientes demostraciones de ejemplo te guían a través del proceso de despliegue y personalización de la solución.
Demo 1 — Alerta de Detección de Armas
Esta demo muestra cómo construir un flujo de Node-RED que escucha eventos de detección de armas desde Frigate a través de MQTT, luego activa alertas en tiempo real tanto en un panel de control como a través de notificaciones webhook.
Pipeline de Datos
Frigate (detectar arma) → MQTT (publicar) → Node-RED (filtrar/alertar) → Panel de Control + Webhook

Configuración del Flujo Node-RED
Puedes importar el flujo de ejemplo directamente en tu editor Node-RED usando el archivo de configuración de flujo proporcionado (gist flow.json).
Nota: Actualiza la dirección IP y la URL del webhook en el flujo para que coincidan con tu instancia de Frigate y el endpoint de notificación.
La ruta de entrada del panel de control está configurada como /frigate.
Accede al panel de control en: http://<tu_ip_jetson>:1880/dashboard/frigate
Por ejemplo: http://192.168.101.100:1880/dashboard/frigate.
Resumen del Flujo
- Escuchador MQTT – Se suscribe a un tema específico (ej., frigate/reviews) para recibir eventos de detección.
- Filtro de Eventos – Solo deja pasar eventos etiquetados como "gun".
- Constructor de Alertas – Construye un mensaje de alerta detallado incluyendo una miniatura, marca de tiempo y contador.
- Actualización del Panel – Actualiza el panel de control con la imagen más reciente, historial de eventos y contadores de detección.
- Notificación Webhook – Envía solicitudes HTTP POST a endpoints externos, como bot de Telegram, Slack o APIs personalizadas.
Resultados
Después de configurar este flujo, Node-RED responderá automáticamente a los eventos de detección de armas de Frigate actualizando tu panel de control y enviando notificaciones webhook inmediatas.
Continúa con la sección de Configuración de Frigate para instrucciones sobre cómo configurar los parámetros de detección.
Configuración Predeterminada de Frigate
Navega rápidamente a la página de configuración de Frigate en http://<tu_ip_jetson>:5000/config para ver tu configuración actual.
Frigate usa un archivo YAML llamado config.yml para definir cómo funciona.
Este archivo le dice a Frigate dónde encontrar tus transmisiones de cámara, qué modelo de IA usar y cómo enviar resultados de detección a través de MQTT.
Al ajustarlo, puedes controlar cómo se detectan, graban y muestran los objetos.
Ubicación de Almacenamiento
Por defecto, Frigate almacena grabaciones de video e instantáneas en: /media/frigate en tu dispositivo Jetson.
Por ejemplo:
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
Si planeas mantener videos por períodos más largos, monta este directorio en un SSD externo o unidad de red para evitar que el almacenamiento interno de tu Jetson se llene.
Configuración de Cámara
En Frigate, cada cámara necesita ser definida bajo la sección cameras:.
Cada bloque de cámara describe de dónde viene la transmisión de video y cómo se decodifica antes de ser analizada por el modelo de detección.
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
Explicación:
enabled: Habilita o deshabilita esta cámara.ffmpeg: Define cómo Frigate usa FFmpeg para leer y decodificar la transmisión de video.- FFmpeg es un framework de medios que convierte y transmite video desde archivos, cámaras RTSP u otras fuentes.
hwaccel_args: Habilita aceleración por hardware (ej., decodificación H.264 en Jetson).inputs: Lista una o más entradas de video.path: La fuente de video real.- En este ejemplo, es un archivo demo local como
/media/frigate/handgun.mp4. - En despliegues reales, puedes reemplazarlo con una transmisión de cámara en vivo, como:
path: rtsp://user:[email protected]:554/stream1
- En este ejemplo, es un archivo demo local como
input_args: Parámetros adicionales de FFmpeg.-stream_loop -1reproduce el video demo infinitamente.-reasegura que la reproducción coincida con la velocidad en tiempo real.
roles: Define cómo se usa esta entrada.detectsignifica que la transmisión se usa para detección de objetos.- Otros roles posibles incluyen
recordortmppara transmisión.
Cada cámara puede tener múltiples entradas — por ejemplo, una para detección y otra para grabación de alta calidad. Frigate maneja automáticamente la decodificación y extracción de fotogramas a través de FFmpeg para todas las fuentes definidas.
Configuración del Modelo de IA y Detección
Después de definir las cámaras, el siguiente paso es decirle a Frigate qué modelo de IA usar y cómo procesar cada fotograma de video. Esta sección define el tipo de detector, ruta del archivo del modelo y comportamiento de detección como tamaño de fotograma, seguimiento de objetos y umbral.
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
Explicación:
detectors: Define qué backend de IA usa Frigate para inferencia.type: tensorrt le dice a Frigate que use aceleración NVIDIA TensorRT (optimizada para Jetson).device: Especifica el índice de GPU. Para la mayoría de dispositivos Jetson, usa 0.
model: Apunta al archivo del modelo de IA y describe su formato de entrada.path: Ruta a tu archivo .trt (motor TensorRT).width/ height: Resolución de entrada del modelo (debe coincidir con lo que el modelo espera).labelmap_path: Archivo que mapea índices de clase a etiquetas, ej. guns.txt → contiene "gun".input_tensor: Define el diseño del tensor; nchw = lote, canal, altura, ancho.input_pixel_format: Especifica el formato de píxel, usualmente rgb.
Los modelos TensorRT son versiones compiladas de redes entrenadas, optimizadas para inferencia rápida en GPU. Puedes reemplazar este archivo con tu propio modelo si entrenas uno nuevo — solo asegúrate de que el ancho, altura y etiquetas coincidan.
Configuración de Seguimiento de Objetos
Frigate puede detectar y rastrear tipos específicos de objetos. Para este proyecto, solo rastreamos armas, lo que mantiene el sistema eficiente y enfocado.
objects:
track:
- gun
filters:
gun:
threshold: 0.3
Explicación:
track: Lista de objetos a detectar y rastrear.- Aquí solo es "gun", pero podrías agregar más etiquetas (ej., person, car, etc.) si tu modelo las soporta.
filters: Ajusta la confianza de detección para cada tipo de objeto.threshold: Valor mínimo de confianza (0.0–1.0).- Un valor más bajo (como 0.3) es más sensible pero puede incluir falsos positivos.
- Un valor más alto (como 0.5) hace la detección más estricta.
Si notas demasiadas detecciones falsas, intenta aumentar el umbral a 0.5 o más. Para objetos más pequeños que a menudo se pierden, puedes bajarlo ligeramente — pero equilibra entre precisión y ruido.
Configuración de Grabación
Una vez que Frigate detecta un objeto, puede grabar videos y guardar instantáneas para análisis posterior o visualización de alertas. Estas configuraciones controlan cuánto tiempo se almacenan las grabaciones y qué información se muestra en las imágenes capturadas.
record:
enabled: true
retain:
days: 3
mode: all
Explicación:
enabled: Activa la grabación de video.retain: Controla cuánto tiempo mantener los archivos grabados y qué tipo de metraje se almacena.days: Número de días para mantener las grabaciones antes de la eliminación automática.mode:all– grabar continuamente (útil para pruebas).motion– solo grabar cuando se detecta movimiento.events– grabar solo cuando aparecen objetos rastreados (ej., armas).
Para implementaciones reales, usa mode: events o mode: motion para ahorrar espacio de almacenamiento mientras mantienes grabaciones útiles.
Configuración de Instantáneas
snapshots:
enabled: true
clean_copy: true
timestamp: true
bounding_box: true
crop: false
retain:
default: 14
quality: 95
Explicación:
enabled: Habilita el guardado de instantáneas cuando ocurre un evento de detección.clean_copy: Guarda una versión adicional sin cajas de detección.timestamp: Agrega la superposición de hora y fecha en la instantánea.bounding_box: Dibuja una caja alrededor de los objetos detectados.crop: Cuando es verdadero, guarda solo el área de detección recortada.retain.default: Número de días para mantener las instantáneas.quality: Establece la calidad de imagen (1–100). Mayor = mejor detalle pero archivo más grande.
Las instantáneas son ideales para alertas o paneles de control, ya que son mucho más pequeñas que los clips de video y fáciles de enviar vía webhook o MQTT.
Vista Panorámica
Frigate también soporta una vista panorámica, que muestra múltiples feeds de cámara juntos para una visión general rápida.
birdseye:
enabled: true
mode: objects
Explicación:
enabled: Activa la vista compuesta panorámica.mode:objects– solo mostrar cámaras donde se detectan objetos actualmente.continuous– siempre mostrar todos los feeds de cámara.
Configuración MQTT
Frigate comunica sus eventos de detección a través de MQTT, lo que permite que otros servicios — como Node-RED, Home Assistant, o paneles de control personalizados — reciban actualizaciones en tiempo real cada vez que se detecta un objeto. También proporciona opciones de registro para ayudar a monitorear el rendimiento del sistema y depurar problemas de detección.
mqtt:
enabled: true
host: 172.17.0.1
port: 1883
Explicación:
enabled: Activa la comunicación MQTT.host: La dirección IP de tu broker MQTT.- Cuando usas Docker en Jetson,
172.17.0.1usualmente se refiere a la máquina host. - Reemplaza con la IP real de tu servidor MQTT si lo ejecutas en otro dispositivo.
- Cuando usas Docker en Jetson,
port: Puerto MQTT predeterminado, típicamente 1883.
Para configuraciones MQTT más avanzadas, consulta la documentación MQTT de Frigate.
Con MQTT habilitado, Frigate se convierte en parte de una red de eventos en tiempo real — enviando alertas de detección de armas directamente a Node-RED o Home Assistant, donde pueden activar paneles de control, notificaciones, o flujos de trabajo personalizados.
Rendimiento y Dimensionamiento
| Plataforma de Hardware | Modelo | FPS (Total) | Streams Estables (≥15 FPS) | Observaciones |
|---|---|---|---|---|
| reComputer R2000 (Raspberry Pi + Hailo-8) | YOLOv11-s | 30 | 2 | NVR AI compacto; dispositivo edge eficiente de bajo consumo |
| reComputer J3011 (Jetson Orin Nano 8 GB) | YOLOv4-tiny-288 | 90 | 6 | Jetson de nivel básico; FPS se estabiliza después del calentamiento |
| reComputer J4012 (Jetson Orin NX 16 GB) | YOLOv4-tiny-288 | 120 | 8 | Límite de concurrencia NVDEC alcanzado; margen de cómputo permanece |
Recursos y Próximos Pasos
- Paquete de Solución: Frigate + Node-RED Gun Detection en Jetson
- Documentación de Frigate: https://docs.frigate.video/
- Repositorio GitHub: Seeed-Studio / frigate-on-jetson
- Complemento de Panel Node-RED: @flowfuse/node-red-dashboard
FAQ
1. No puedo instalar Docker en mi dispositivo Jetson. ¿Qué debo hacer?
Si encuentras problemas con el script de instalación predeterminado de Docker, puedes usar el siguiente script alternativo:
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
Para más información, por favor visita: https://linuxmirrors.cn
2. ¿Cómo saber mi versión de Jetpack?
Ejecuta el siguiente comando en tu dispositivo Jetson:
dpkg -l | grep nvidia-jetpack
La salida mostrará la versión de Jetpack instalada.
3. ¿Cómo actualizar mi versión de Jetpack?
Sigue las instrucciones en tu wiki específico del producto.
4. "Permission Denied" Al Ejecutar Docker
No tienes permiso para acceder al daemon de Docker. Ejecuta:
sudo usermod -aG docker $USER
newgrp docker
Cerrar sesión y volver a iniciarla también aplica los nuevos permisos de grupo.
Luego verifica:
docker ps
Footnotes
-
Los AI NVR aprovechan modelos avanzados de aprendizaje automático para proporcionar información en tiempo real y capacidades de automatización, mientras que los NVR tradicionales se enfocan principalmente en grabar y almacenar material de video. ` ↩
