Saltar al contenido
← Proyectos

2026 · En solitario · sistema de visión por computador

Visión en tiempo real para seguridad laboral

Detección de caídas en entornos industriales que corre en directo sobre una sola GPU de gama media — pose, seguimiento, segmentación y un modelo temporal tras un único servicio observable, con cada cifra medida en hardware real.

Macro-F1 val.
0,90
Rendimiento (RTX 2070)
27,98 fps
Latencia p95 E2E
49 ms
  • Python
  • YOLO26-Pose
  • SAM 2.1
  • ByteTrack
  • PyTorch
  • TensorRT
  • FastAPI
  • Docker
fall_detection · yolo26_pose · rtx_2070

El problema

La monitorización industrial necesita detectar la caída de un trabajador en el momento en que ocurre, sobre hardware que una planta pueda permitirse: una sola GPU de gama media, no un clúster. Lo difícil no es un modelo que clasifique caídas offline; es un pipeline que ingiere un stream en directo, mantiene la latencia bajo control y es honesto sobre qué es inferencia real y qué es un recurso de respaldo.

Enfoque y decisiones

Sentinel Vision es un único servicio FastAPI observable, no un notebook. Cada fotograma pasa por YOLO26-Pose → seguimiento de identidad con ByteTrack → máscaras de SAM 2.1 (solo se invoca en tracks nuevos, obsoletos o inciertos, para ahorrar la llamada costosa cuando nada cambia) → un transformer de esqueleto por persona que lee la acción sobre una ventana temporal.

Las decisiones de ingeniería buscan mantener honesto un sistema en vivo:

  • Colas acotadas de último fotograma, para que la latencia no se desvíe bajo carga — el pipeline descarta fotogramas viejos en vez de retrasarse.
  • Configuración de producción fail-closed que se niega a arrancar con backends de demo, y un endpoint /health/ready que expone sus degradaciones en lugar de ocultarlas.
  • Modelos como adaptadores intercambiables (PyTorch / ONNX / TensorRT), con un respaldo cinemático auditable para la cabeza temporal.

La cabeza temporal se entrena con el UR Fall Detection Dataset usando una partición por secuencias — las caídas de validación nunca se ven en entrenamiento, así que la puntuación significa algo.

Resultados

  • Macro-F1 de validación = 0,90 sobre secuencias de caída reservadas — una partición honesta, no un 100% sintético.
  • 27,98 FPS, latencia p95 49 ms extremo a extremo, ~1990 MiB de VRAM en una RTX 2070, con 0% de fotogramas descartados en el benchmark y todos los SLO de rendimiento, latencia y descartes superados.
  • Observabilidad completa: métricas Prometheus, un dashboard en vivo de FPS/latencia y un stream de telemetría por WebSocket.

Qué matizaría

Cada cifra de FPS y VRAM se mide en una GPU concreta y nombrada — nada se extrapola de una tarjeta mayor. El zero-copy real de decodificación a inferencia se acota con honestidad a una frontera DeepStream que el build portable no pretende cubrir; el readiness informa de la ruta de decodificación activa en vez de fingir que no pasa por PCIe.