Deep learning para detectar el cansancio y la inatención del conductor
GuardIAn combina YOLOv5 y puntos de referencia facial para explorar alertas de distracción y somnolencia al volante.
Proyecto de aprendizaje compartido por la comunidad. El artículo documenta el equipo, el método y los resultados; no acredita que el prototipo esté listo para su uso fuera del entorno de aprendizaje.

Latinoamérica en línea. Segunda Edición. 2021
En Ecuador, el uso del celular mientras se conduce un vehículo registró un incremento en los primeros nueve meses del 2021; entre enero y septiembre de 2021 se reportaron 15,393 siniestros de tránsito. De ellos, 3,989 están relacionados con distracciones, ejemplo el uso del celular el cual representa el 26% del total mencionado. Si se compara con igual periodo del 2020 se observa un incremento: 240 siniestros más causados por este tipo de distracciones. (ANT, 2021)

La figura 1 recoge categorías de siniestros relacionadas con distracciones (C14) y con somnolencia o malas condiciones físicas (C03). Las cifras y el ámbito geográfico del texto original no se distinguían con claridad, por lo que no las presentamos como una estimación fiable de fallecimientos en Guayaquil.
Clasificación de estados y distractores
Existen varios tipos de distracciones al conducir y así lo determina la National Center for Statistics and Analysis (NCSA por sus siglas en inglés) las cuales se clasifican de la siguiente manera: (NHTSA, 2021)
Estado del conductor:
- Atento
- Distraído
- Miró, pero no vio
- Tiene sueño o se quedó dormido
Distracciones relacionadas al conductor:
- Comer o beber
- Persona, objeto o evento externo
- Ajuste de radio, casete o CD
- Otros ocupantes del vehículo
- Objeto en movimiento en el vehículo
Descripción del problema
De acuerdo con los datos estadísticos obtenidos un número importante de personas mueren como resultado de accidentes de tránsitos. De todos ellos, muchos son provocados por lo que se conoce como inatención, cuyos principales factores contribuyentes son tanto la distracción como la somnolencia. Por lo tanto, los conductores con fatiga pueden beneficiarse de un sistema que los alerte al momento de perder la atención.
En base a lo mencionado en líneas anteriores, se plantea el siguiente problema:
¿Cómo evitar que un conductor de vehículo se distraiga o caiga en estado de somnolencia?
Objetivo general
Diseñar un prototipo que estime indicios de distracción o somnolencia mediante deep learning y genere una alerta sonora. También se propuso un panel para revisar las alertas. El proyecto explora este funcionamiento, pero no demuestra que las alertas prevengan accidentes ni sustituye el descanso del conductor.
Estructura de la herramienta

La Figura 2 muestra la estructura de la herramienta, su funcionamiento será de la siguiente manera:
- Cámara web con altavoz implementada en la cabina del conductor de manera frontal directa.
- Servidor Web donde se ejecutará el algoritmo, el cual procesará las imágenes y realizará las detecciones acordes al entrenamiento, sea por distracciones o estado de somnolencia. Luego del procesamiento y la detección, este, enviará una alerta directa al conductor, el tipo de esta alerta será sonora, con el objetivo de que regrese la atención a la vía.
- Panel de administración para revisar las alertas visuales o textuales generadas por el sistema. Un uso real requeriría definir quién accede a las imágenes, durante cuánto tiempo se conservan y cómo se revisan los posibles errores.


La Figura 3 y 4, muestra la alerta que se mostrará en el panel administrativo de la herramienta en diseño, enviando la imagen del conductor con el objeto distractor o con el estado del conductor.
Técnicas implementadas
A. Detección de inatención
Para detectar las distracciones del conductor necesitamos entrenar un modelo de detección de objetos. La detección de objetos es una tecnología de visión artificial que localiza e identifica objetos en una imagen, debido a su versatilidad, se ha convertido en los últimos años en la tecnología de visión artificial más utilizada.
La tarea de detección de objetos localiza objetos en una imagen y los etiqueta como pertenecientes a una clase objetivo, como se muestra en la imagen a continuación.

Los modelos de detección de objetos logran este objetivo al predecir las coordenadas X1, X2, Y1, Y2 y las etiquetas de clase de objeto.
Utilizamos YOLOv5, una implementación de detección de objetos en PyTorch. La familia YOLO combina localización y clasificación en una red que procesa la imagen en una pasada. En este proyecto trabajamos con recursos de COCO y con un dataset propio de objetos distractores.

La Figura 6, nos muestra la arquitectura utilizada de Yolo V5, que está compuesta de la siguiente manera:
Columna vertebral:
El backbone extrae características de la imagen mediante bloques convolucionales. En la versión utilizada, los bloques CSP ayudan a representar patrones como bordes y formas.
Cuello:
El neck combina características a distintas escalas. Así, el detector puede trabajar con objetos grandes y pequeños utilizando mapas de características de diferentes resoluciones.
Cabeza:
La cabeza de detección utiliza cajas de anclaje para producir cuadros delimitadores, puntuaciones de presencia de objeto y probabilidades de clase.
B. Detección de somnolencia y desvío de la mirada
Para la detección de los ojos se utilizó la librería Dlib en conjunto con el modelo de referencia de rostros: shape_predictor_68_face_landmarks.dat, el cual utiliza la máscara de detección de puntos (Figura 7) para determinar ubicaciones clave que conforman un rostro.

Utilizando estas herramientas se logró identificar la ubicación de los ojos tomando como referencia desde el punto 36 hasta el 41 para delinear el ojo izquierdo y del 42 al 47 el ojo derecho.

Con esta información se logró determinar si frente a la cámara se encontraba un rostro humano, y en caso afirmativo se utilizó la distancia euclidiana (para determinar la longitud de una línea recta entre dos puntos) y así establecer si los ojos se encuentran abiertos o cerrados.

Posteriormente, si los ojos permanecen cerrados por más de dos segundos entonces se activa una alarma cuya finalidad es despertar al conductor (Figura 3). Por otra parte, si el conductor está viendo en cualquier dirección que no sea el frente, después de cuatro segundos la alarma se activa para alertar respecto a la distracción (Figura 3).
Evaluación del modelo
Tras entrenar YOLOv5, examinamos las pérdidas y las métricas de rendimiento en Weights & Biases.
El mAP a 0,5 y el mAP a 0,5:0,95 se trazan para 200 épocas. mAP@[0.5:0.95] significa mAP promedio sobre diferentes umbrales de IoU, de 0.5 a 0.95, paso 0.05 (0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95).

En cuanto a la precisión y la recuperación para 200 épocas se dan a continuación. La precisión fue buena durante las últimas épocas, pero los valores de recuperación fueron más bajos durante las últimas épocas.

Pérdida de entrenamiento y validación:
En detección de objetos, hubo un total de 3 pérdidas para calcular
- Pérdida de caja: evalúa el ajuste de los cuadros delimitadores predichos a las anotaciones.
- Pérdida de clase: evalúa la predicción de la categoría de cada objeto.
- Pérdida de objectness: evalúa la predicción de presencia de un objeto.

Generación y preparación del conjunto de datos
Para entrenar nuestro modelo de detección de objetos necesitamos supervisar su aprendizaje con anotaciones de cuadro delimitador. Dibujamos un cuadro alrededor de cada distractor que el detector reconozca: celular, comida, cigarrillo y botellas para identificar cuando el conductor está distraído o realizando alguna actividad ajena a la conducción. Existen muchas herramientas de etiquetado (CVAT , LabelImg , VoTT, Roboflow ) y soluciones a gran escala (Scale, AWS Ground Truth), en nuestro caso utilizamos Roboflow.
Las imágenes para construir nuestro conjunto de datos fueron descargadas de Kaggle y COCO Dataset:
- Conjunto de datos que contiene imágenes de fumadores y no fumadores (fumador versus no fumador)
- Mobile Images Dataset
- COCO Dataset
Características del prototipo GuardIAn
- Innovador, diseñado con Inteligencia Artificial, algoritmo de Deep Learning
- Resultado informado por el equipo: 92% en la evaluación de detección de distractores. No equivale a una garantía de seguridad ni acredita la misma cifra para la detección de somnolencia.
- Accesible, la herramienta se puede implementar en cualquier parte del mundo.
- Adaptable, el algoritmo se puede re-entrenar las veces que haga falta.
- Liviano y fácil de manejar, no necesita de instalación y su uso administración es muy fácil.
- Diseñado para ejecutarse en la nube; la disponibilidad continua requeriría una infraestructura y una operación adecuadas.
Conclusión
La inteligencia artificial ha incrementado sus posibilidades, especialmente desde la aparición de tecnologías como las redes neuronales y el aprendizaje automático (machine learning).
El prototipo identifica patrones visuales y genera alertas. Su posible utilidad para reducir accidentes tendría que estudiarse en condiciones reales, evaluando falsas alarmas, detecciones omitidas y comportamiento del conductor.
El proyecto se diseñó como un sistema para entornos vehiculares funcional, capaz de detectar la fatiga y los objetos distractores mientras se conduce un vehículo, además de emitir los dos tipos de alertas (sonora y textual). El modelo logra detectar los distractores correctamente en un 92 %.
El algoritmo podrá seguir entrenando y ampliando los objetos distractores para su detección.
Planes a futuro
Nos gustaría explorar posibles aplicaciones con los siguientes tipos de empresas:
- Empresas de transporte masivo (Terminal terrestre, estación de autobuses)
- Empresas de transporte ejecutivo (Uber, Cabify, Taxi amigo)
Integrantes
- Ing. Carlos Watson (cwatsonm@gmail.com)
- Ing. Josué Huamán (esai.huaman@gmail.com)
- Ing. Yolanda C. Sarmiento (yolitasarmiento@hotmail.com)
- Karime Rodríguez (karyme.rodriguez@cetys.edu.mx)
- Joanna Araiza (joanna.araiza7829@alumnos.udg.mx)
Presentación del proyecto: DemoDay
Nuestro repositorio en Github
https://github.com/SaturdaysAI/Projects/tree/master/LATAM_remote/GuardIAn
¡Más inteligencia artificial!
Saturdays.AI acerca la IA a más personas a través del aprendizaje en comunidad y de proyectos con impacto social. Nuestro lema es AI4ALL IS AI4GOOD.
Una historia de la comunidad Saturdays.AI. Publicada originalmente el 27 feb 2022.
← Más historias de la comunidad


