Una tesis construida alrededor de un problema real de seguridad
Desarrollé este proyecto como la tesis con la que obtuve el título de Ingeniería de Sistemas con enfoque en inteligencia artificial. Abordó un problema de seguridad vial en Lambayeque, Perú: la somnolencia puede afectar las funciones neurocognitivas del conductor, reducir su capacidad de reacción y contribuir a accidentes de tránsito evitables.
En 2024, las funciones integradas de asistencia ante la somnolencia empezaban a ser comunes en partes del mercado automotor europeo, pero sistemas comparables todavía no eran ampliamente accesibles en el contexto latinoamericano local. Por ello, el trabajo se centró en una solución aplicada y conectada que pudiera evaluarse en un vehículo real.
VIDDS: deep learning e IoT trabajando juntos
El objetivo fue construir y evaluar un sistema que detectara una posible somnolencia del conductor mediante deep learning e IoT, alertara al conductor, registrara el incidente y lo hiciera visible en una plataforma de monitoreo en tiempo real. El resultado fue VIDDS: Very Intelligent Drowsiness Detection System.
VIDDS conecta análisis facial, computación embebida, hardware físico, rastreo de ubicación, servicios backend, persistencia en MongoDB y un panel de monitoreo en Angular. Su propósito es ayudar a prevenir accidentes y la pérdida evitable de vidas de conductores.
El principio de detección: Eye Aspect Ratio
El proyecto utiliza Eye Aspect Ratio (EAR), un valor escalar derivado de seis puntos de referencia faciales alrededor de un ojo. El método se basa en el trabajo de Tereza Soukupová y Jan Čech (2016), cuya investigación de detección de parpadeo en tiempo real observa que el EAR permanece relativamente estable mientras el ojo está abierto y se aproxima a cero cuando se cierra.
La fórmula es EAR = (||p2 - p6|| + ||p3 - p5||) / (2||p1 - p4||). El numerador suma las distancias verticales entre los párpados, mientras que el denominador mide el ancho horizontal del ojo. Por ello, un valor menor indica que el ojo está más cerrado.
VIDDS aplica esta señal matemática mediante la regla configurada para el prototipo. El sistema interpreta su condición configurada de estado cero como un posible incidente de somnolencia; se trata de una regla de ingeniería del prototipo, no de un diagnóstico universal ni clínico.
De los puntos faciales a una señal ocular
El flujo de detección comienza con MediaPipe FaceMesh. La aplicación embebida en Python utiliza el modelo para rastrear el rostro del conductor e identificar los puntos alrededor de cada ojo necesarios para calcular el EAR.
Esta etapa de rastreo convierte los fotogramas de la cámara en coordenadas estables. Luego, el programa puede evaluar continuamente el estado de los ojos antes de decidir si ocurrió la condición de somnolencia configurada.
El prototipo robótico VIDDS
El programa de detección embebido se ejecuta en una Raspberry Pi 4B dentro de un prototipo físico diseñado para utilizarse en un vehículo. El dispositivo completo combina:
- Un módulo Neo GPS para rastrear la ubicación.
- Un DFPlayer Mini y una bocina de audio para el flujo de alertas.
- Una cámara Raspberry Pi Noir Camera v2 para capturar el rostro.
- Una batería externa para la alimentación portátil.
- Luces LED infrarrojas para ambientes con poca luz u oscuridad.
- La Raspberry Pi 4B para la computación embebida y la comunicación con la plataforma.
De la detección a un incidente de seguridad rastreable
Cuando la condición EAR configurada identifica un posible incidente de somnolencia, el prototipo emite de inmediato una alerta audible mediante su bocina. Durante las pruebas de campo, la alerta sonaba aproximadamente de tres a cuatro segundos para hacer reaccionar al conductor.
Al mismo tiempo, el dispositivo obtiene su ubicación GPS actual y envía el incidente al backend en Spring Boot mediante su flujo de API. El backend conecta el núcleo embebido en Python con la aplicación Angular y guarda el incidente en MongoDB para su consulta posterior.
Visibilidad del incidente en tiempo real
Cada usuario está asociado con un vehículo equipado con VIDDS. Cuando la plataforma recibe un incidente, su experiencia de monitoreo con Google Maps presenta:
- La ubicación del evento en un mapa interactivo.
- La fecha del incidente y la dirección resuelta.
- El usuario asociado y el vehículo asociado.
- Una acción de llamada para solicitar asistencia.
Validación de campo en un vehículo real
VIDDS fue evaluado en un vehículo real mientras un participante alternaba entre un comportamiento normal y estados simulados de quedarse dormido y estar dormido. La validación cubrió diferentes condiciones de iluminación, accesorios en la cabeza y el uso o ausencia de lentes.
Cuando el participante simuló somnolencia, el prototipo físico emitió su alerta audible y la interfaz de monitoreo registró el incidente resultante. Esto conectó el escenario del conductor, el dispositivo embebido, los datos GPS, la comunicación con el backend, los registros almacenados y el dashboard en una prueba de extremo a extremo.
VIDDS en un vehículo real
Calidad de ingeniería y confianza operativa
VIDDS fue desarrollado como un sistema de software observable y comprobable, no solamente como un experimento de inteligencia artificial. Sus prácticas de calidad incluyeron:
- Pruebas automatizadas del backend con JUnit y Mockito.
- Observabilidad del backend con Prometheus y Grafana.
- Pruebas unitarias del frontend con Jest.
- Evaluación de la interactividad del mapa con Lighthouse y mediciones personalizadas.
- Comprobaciones de rendimiento orientadas a evitar que el mapa congelara la interfaz mientras los incidentes se mostraban o actualizaban.