Vigilancia y Seguridad
- Conteo de personas en tiempo real
- Mapa de calor del local
- Monitoreo de colas
- Deteccion de personas prohibidas
- Funciona offline
Vigilancia y Seguridad
Las camaras de seguridad de tu supermercado pueden hacer mucho mas que grabar video. Con vision por computadora, Supersmartket convierte tus camaras en sensores inteligentes que cuentan personas, detectan colas largas, generan mapas de calor del local y alertan si entra alguien que no deberia estar ahi. Todo procesado localmente, sin enviar video a la nube, protegiendo la privacidad de tus clientes.
Este modulo es el unico que funciona con hardware dedicado en tu local. No depende de internet para operar: si se corta la conexion, sigue procesando y sincroniza cuando vuelve.
NVIDIA Jetson Orin Nano procesa 6 streams de video simultaneos sin enviar imagenes a la nube.
Dispositivo edge
El modulo de vigilancia funciona con un dispositivo fisico instalado en tu local que procesa las imagenes de las camaras en tiempo real. No es un servicio en la nube: todo el procesamiento de video ocurre localmente.
Hardware
| Componente | Especificacion | Para que sirve |
|---|---|---|
| Procesador | NVIDIA Jetson Orin Nano | GPU dedicada para inferencia de modelos de vision por computadora. Procesa 6 streams simultaneos a 15 FPS. |
| Camaras | 6x Hikvision 4MP (2560x1440) | Resolucion suficiente para deteccion de personas y reconocimiento facial a distancia de gondola. Instalacion tipica: 2 en entrada/salida, 2 en cajas, 2 en salon de ventas. |
| NVR | Network Video Recorder | Centraliza los streams de las 6 camaras y los distribuye al Jetson para procesamiento. |
| Almacenamiento local | SQLite en el Jetson | Cola de eventos cuando no hay conexion a internet. |
Autenticacion
El dispositivo edge se comunica con el servidor de Supersmartket via HTTP usando una API key generada durante la instalacion. La API key se almacena hasheada con bcrypt en el servidor, igual que una contrasena. El dispositivo envia la key en el header de cada request para autenticarse.
- Durante la instalacion, el tecnico genera una API key desde Vigilancia > Dispositivos > Nuevo dispositivo.
- El sistema muestra la key una sola vez (guardarla en un lugar seguro).
- Se configura la key en el dispositivo Jetson.
- El dispositivo hace un handshake inicial para verificar la conexion.
- A partir de ahi, todos los eventos se envian autenticados con esa key.
Comunicacion HTTP
El dispositivo envia eventos al servidor via HTTP POST. No usa WebSocket ni conexiones persistentes. Esto simplifica la infraestructura y hace que el sistema sea mas robusto ante cortes de red:
- Si el POST tiene exito: el evento se confirma y se borra de la cola local.
- Si falla (timeout, error de red, servidor caido): el evento se mantiene en la cola local para reintentar.
Cola offline con SQLite y auto-sync
Este es uno de los features mas importantes del modulo. Cuando se corta internet:
- El Jetson sigue procesando video normalmente (no depende de internet para eso).
- Cada evento que detecta (persona entrando, persona en cola, match facial) se guarda en una base SQLite local.
- Cuando internet vuelve, el dispositivo sincroniza todos los eventos pendientes con el servidor en orden cronologico.
- El servidor procesa los eventos como si hubieran llegado en tiempo real.
Esto significa que nunca perdés datos, ni siquiera con cortes de internet prolongados. La cola SQLite puede acumular dias de eventos sin problema.
Ingesta de eventos
El dispositivo edge genera 4 tipos de eventos que envia al servidor via POST autenticado con API key:
1. Traffic (trafico de personas)
Cada vez que una persona cruza una linea virtual configurada en la camara de entrada/salida, se genera un evento traffic con:
- Timestamp.
- Camara que lo detecto.
- Direccion: entrada o salida.
- Conteo acumulado del dia.
2. Queue (estado de colas)
Periodicamente (cada 30 segundos por defecto), las camaras de cajas generan un evento queue con:
- Timestamp.
- Camara/caja que lo detecta.
- Cantidad de personas en cola.
- Tiempo estimado de espera (basado en el ritmo de atencion historico).
3. Heatmap (mapa de calor)
Cada 5 minutos, las camaras del salon de ventas generan un evento heatmap con:
- Timestamp.
- Camara que lo genero.
- Grid de posiciones (x, y) con la cantidad de segundos que personas permanecieron en cada zona.
- Resolucion del grid configurable (tipicamente 10x10 celdas por camara).
4. Banned-match (deteccion de persona prohibida)
Cuando el sistema detecta un rostro que coincide con alguien de la lista de prohibidos, genera un evento banned-match con:
- Timestamp.
- Camara que lo detecto.
- ID de la persona prohibida en la lista.
- Score de similitud (0 a 1).
- URL del frame capturado (almacenado en S3).
Trafico
Las estadisticas de trafico te dicen cuanta gente entra y sale de tu local. Es informacion fundamental para entender la demanda real y calcular la tasa de conversion.
Estadisticas horarias
Ve cuantas personas entraron a tu local hora por hora. El grafico de barras te muestra los picos y valles de trafico. Tipicamente vas a ver:
- Pico de la manana: 9-11 AM (abuelos y amas de casa).
- Valle del mediodia: 13-15 PM.
- Pico de la tarde: 17-20 PM (gente que sale de trabajar).
- Sabado a la manana: el pico mas alto de la semana.
Estadisticas diarias y semanales
Comparacion dia a dia y semana a semana. Te permite ver tendencias:
- Que dia de la semana tiene mas trafico.
- Si el trafico esta creciendo o cayendo semana a semana.
- El impacto de feriados y eventos especiales.
Horarios pico
El sistema identifica automaticamente tus horarios pico (las franjas con mayor concentracion de trafico) y los muestra destacados. Esta informacion es vital para:
- Planificar la cantidad de cajeros por turno.
- Programar la reposicion de gondolas fuera de los picos.
- Decidir cuando lanzar promociones de “hora feliz” para suavizar la demanda.
Tasa de conversion (visitantes a compradores)
Tasa de conversion = Tickets cerrados / Personas que entraron x 100
Si entraron 500 personas y se cerraron 400 tickets, tu tasa de conversion es 80%. El 20% restante son personas que entraron pero no compraron. Las razones pueden ser: no encontraron lo que buscaban, los precios les parecieron caros, la cola era muy larga, o simplemente estaban acompanando a alguien.
Ocupacion actual
En tiempo real, el sistema te muestra cuantas personas hay ahora mismo en el local (entradas acumuladas menos salidas acumuladas desde la apertura). Util para:
- Cumplir con aforos maximos si aplica.
- Saber si el local esta lleno o vacio sin ir a mirar.
- Alertar si la ocupacion supera un umbral.
Mapa de calor
El mapa de calor te muestra donde pasan mas tiempo tus clientes dentro del local. Es una herramienta poderosa para optimizar el layout de las gondolas.
Como funciona
Las camaras del salon de ventas dividen su campo visual en una grilla (grid) y miden cuantos segundos de permanencia acumula cada celda. Las zonas donde la gente se detiene mas aparecen en colores calidos (rojo/naranja); las zonas de paso rapido aparecen en colores frios (azul/verde).
Datos del grid
Cada celda del grid contiene:
- Coordenadas (x, y): Posicion dentro del campo visual de la camara.
- Segundos de permanencia: Tiempo acumulado que personas pasaron en esa zona.
- Conteo de personas: Cuantas personas distintas pasaron por esa zona.
Por camara y por periodo
Podes ver el mapa de calor:
- Por camara individual: Para analizar una zona especifica del local.
- Combinado: Si las camaras cubren zonas adyacentes, se fusionan en un mapa unico.
- Por periodo: Hoy, ayer, ultima semana, ultimo mes. Para ver si los patrones de trafico cambian.
Uso practico: layout de gondolas
El mapa de calor te dice que zonas del local son “calientes” (mucho trafico y permanencia) y cuales son “frias” (la gente no pasa o pasa de largo).
- Zona caliente + ventas altas: Perfecto, esta todo bien.
- Zona caliente + ventas bajas: La gente se detiene pero no compra. Revisa que productos hay en esa zona, quizas necesitan mejor exhibicion o mejor precio.
- Zona fria: La gente no llega. Considera poner un producto “iman” (una oferta muy buena) para atraer trafico.
- Zona de gondola ciega: Si una gondola completa es zona fria, evalua si hay un problema de senalizacion o si los productos de esa gondola no son lo que la gente busca.
Estado de colas
Las camaras ubicadas en la zona de cajas monitorean las colas en tiempo real.
Snapshot actual
Desde Vigilancia > Colas ves el estado actual de cada caja:
- Camara/caja: Cual es la caja o linea de cajas.
- Personas en cola: Cuantas personas estan esperando ahora mismo.
- Tiempo estimado de espera: Calculado en base al ritmo de atencion historico de esa caja. Si una caja atiende en promedio 3 minutos por cliente y hay 4 personas, el tiempo estimado para el ultimo es 12 minutos.
Alertas de cola
Podes configurar alertas:
- Umbral de personas: Si alguna caja supera N personas en cola, te avisa.
- Umbral de tiempo: Si el tiempo estimado de espera supera N minutos, te avisa.
- Accion sugerida: “Abrir caja 3” o “Llamar cajero de refuerzo”.
Uso para staffing
El historial de colas te permite planificar la dotacion de cajeros:
- Si los jueves a las 18:00 siempre hay colas de 8+ personas, necesitas un cajero adicional en ese horario.
- Si los martes a las 10:00 las colas nunca superan 2 personas, quizas podes prescindir de un cajero.
Lista de personas prohibidas
Esta funcionalidad te permite mantener una lista de personas que no deberian ingresar al local (por antecedentes de robo, comportamiento violento, u otros motivos).
Gestion de la lista
Desde Vigilancia > Personas prohibidas podes:
- Agregar una persona: Nombre (o alias), motivo de la prohibicion, foto de referencia.
- Editar: Actualizar datos o foto.
- Eliminar: Borrar de la lista.
- Revocar: Quitar la prohibicion pero mantener el registro historico.
Foto de referencia
La foto se sube a Amazon S3 y el sistema genera automaticamente un face encoding (vector de 512 dimensiones) que representa las caracteristicas unicas del rostro. Este vector es el que se usa para la comparacion, no la foto en si.
Los face encodings se almacenan en la base de datos usando pgvector, una extension de PostgreSQL optimizada para busqueda de vectores de similitud.
Umbral de similitud
El sistema compara cada rostro detectado por las camaras contra los face encodings de la lista de prohibidos. Si la similitud supera el umbral configurado, genera una alerta.
- Umbral por defecto: 0.65 (65% de similitud).
- Umbral mas alto (ej: 0.80): Menos alertas, mas precision, riesgo de no detectar a alguien.
- Umbral mas bajo (ej: 0.50): Mas alertas, mas falsos positivos, pero menos riesgo de que alguien se escape.
Expiracion
Cada entrada en la lista puede tener una fecha de expiracion (expires_at). Cuando llega esa fecha, la persona se desactiva automaticamente de la lista de prohibidos. Esto es util para prohibiciones temporales (ej: 6 meses) que no necesitan revision manual.
Log de detecciones
Cada vez que el sistema detecta un match con la lista de prohibidos, queda registrado en el log.
Datos del log
- Fecha y hora: Cuando ocurrio la deteccion.
- Camara: Que camara detecto el rostro.
- Persona prohibida: Contra quien matcheo.
- Score de similitud: Que tan parecido es el rostro detectado al de referencia (ej: 0.78 = 78% de similitud).
- Frame URL: Link a la captura del frame en S3 (la imagen del momento de la deteccion).
Acciones sobre detecciones
Para cada deteccion podes:
- Confirmar: “Si, era esa persona. Tomamos accion.” Queda registrada como deteccion confirmada.
- Marcar como falso positivo: “No era esa persona, se parecia pero no es.” Esto ayuda al sistema a mejorar (y a vos a ajustar el umbral si hay muchos falsos positivos).
- Acknowledged (reconocida): “Lo vi, estoy al tanto.” Similar a confirmar pero sin implicar accion.
Sincronizacion de la lista de prohibidos
Los dispositivos edge necesitan tener una copia local de la lista de prohibidos (con los face encodings) para poder hacer la comparacion en tiempo real sin depender de internet.
Como funciona
El servidor expone un endpoint dedicado para que los dispositivos edge descarguen la lista actualizada:
- El dispositivo edge consulta el endpoint periodicamente (por defecto cada 15 minutos).
- El servidor responde con la lista completa de personas prohibidas activas, incluyendo sus face encodings.
- El dispositivo actualiza su copia local.
- Si hay una persona nueva en la lista, empieza a buscarla inmediatamente en los frames de las camaras.
- Si se revoco o expiro una persona, la elimina de la busqueda local.
La sincronizacion es incremental cuando es posible (solo envia cambios desde la ultima sincronizacion), pero el dispositivo puede solicitar la lista completa si lo necesita (ej: despues de un reinicio).
Privacidad
La privacidad de los clientes es una prioridad. El modulo de vigilancia esta disenado con un principio fundamental:
NO graba video
El sistema no graba ni almacena video. Las camaras envian streams al dispositivo Jetson, que procesa cada frame para extraer datos estructurados (conteos, posiciones en grid, face encodings) y descarta el frame inmediatamente.
Lo unico que se almacena como imagen es:
- Frames de deteccion de personas prohibidas: Solo cuando hay un match, se guarda el frame en S3 como evidencia. Estos frames se eliminan automaticamente despues de 90 dias.
- Fotos de referencia de la lista de prohibidos: Subidas manualmente por el usuario autorizado.
Que datos se almacenan
| Dato | Se almacena | Donde |
|---|---|---|
| Video continuo | NO | En ningun lado |
| Frames de video | NO (excepto banned-match) | S3 (90 dias) |
| Conteos de personas | SI (solo numeros) | Base de datos |
| Posiciones en grid (heatmap) | SI (solo coordenadas y tiempos) | Base de datos |
| Estado de colas | SI (solo conteos y tiempos) | Base de datos |
| Face encodings de prohibidos | SI (solo vectores numericos) | Base de datos (pgvector) |
No se almacenan rostros de clientes regulares, no se hace tracking individual de personas (excepto prohibidos), y no se graba audio.
Permisos por rol
Contenido relacionado
- Inteligencia: Inteligencia y Analitica para ver como los datos de trafico alimentan la tasa de conversion y los analisis de anomalias.
- Ventas: Ventas y Transacciones para entender como las transacciones se cruzan con los datos de trafico.
- Marketing: Marketing y Promociones para campanas basadas en horarios pico y mapas de calor.