BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES...

56
1 APLICACIÓN PARA TELÉFONO MÓVIL CON SISTEMA OPERATIVO ANDROID QUE PERMITA DETECTAR SOMNOLENCIA Y EMITIR UNA ALARMA SONORA A CONDUCTORES DE AUTOMÓVIL MEDIANTE PROCESAMIENTO DE IMÁGENES. BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES MALAVER COD: 20172383008 TESIS DE INGENIERÍA EN CONTROL UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS” FACULTAD TECNOLÓGICA INGENIERÍA DE CONTROL Bogotá, agosto de 2019

Transcript of BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES...

Page 1: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

1

APLICACIÓN PARA TELÉFONO MÓVIL CON SISTEMA OPERATIVO ANDROID QUE PERMITA

DETECTAR SOMNOLENCIA Y EMITIR UNA ALARMA SONORA A CONDUCTORES DE

AUTOMÓVIL MEDIANTE PROCESAMIENTO DE IMÁGENES.

BRAYAN ALIRIO BAQUERO CARDOZO

COD: 20172383004

BRAYAN ALEXANDER TORRES MALAVER

COD: 20172383008

TESIS DE INGENIERÍA EN CONTROL

UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS”

FACULTAD TECNOLÓGICA

INGENIERÍA DE CONTROL

Bogotá, agosto de 2019

Page 2: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

2

APLICACIÓN PARA TELÉFONO MÓVIL CON SISTEMA OPERATIVO ANDROID QUE PERMITA

DETECTAR SOMNOLENCIA Y EMITIR UNA ALARMA SONORA A CONDUCTORES DE

AUTOMÓVIL MEDIANTE PROCESAMIENTO DE IMÁGENES.

BRAYAN ALIRIO BAQUERO CARDOZO

BRAYAN ALEXANDER TORRES MALAVER

Tesis presentada al programa de Ingeniería en Control de la Universidad

Distrital “Francisco José De Caldas” Facultad Tecnológica, para optar por el título de

Ingeniero en

Control

Programa:

Ingeniería en Control

Director del Proyecto

Ing. Miguel Pérez Pereira

Evaluador del Proyecto

Ing.

Bogotá, agosto de 2019

Page 3: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

3

NOTA DE ACEPTACIÓN

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

_____________________________

Jurado 1

_____________________________

Jurado 2

Page 4: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

4

RESUMEN

En el presente documento se muestra la metodología e implementación de una solución a

un problema en concreto que es dar alerta temprana a conductores que se encuentren en

estado de somnolencia, esto con el fin de evitar o disminuir los accidentes viales provocados

por esta causa. Se desarrolló un aplicativo para teléfono móvil que mediante el

procesamiento digital de imágenes permitirá dar un estimado del estado de somnolencia

del conductor mediante el análisis de los ojos, y en dependencia de éste dar una alerta

sonora al usuario. La aplicación móvil se desarrolló en el entorno de desarrollo Android

Studio, y se implementaron las librerías de procesamiento de imágenes Opencv, y Dlib.

Para el desarrollo del aplicativo móvil en primera instancia se realizó una contextualización

teórica de los tipos de algoritmos implementados para la detección de somnolencia con ello

se realizó una preselección de los más convenientes a implementar, posteriormente se

realizó una subdivisión del sistema total a implementar, en donde de determinaron 4 etapas

secuenciales críticas presentes las cuales son: detección del rostro del usuario, detección

de los ojos y detección de somnolencia. Siguiendo la secuencia de las 4 etapas descritas se

seleccionó como métodos para realizar la detección del rostro el algoritmo de Viola Jones,

y el HOG (Histograms of oriented gradients), para la detección de los ojos se seleccionó el

algoritmo de viola jones, y la detección de landmarks, posteriormente para detectar

parpadeos se implementó el método de densidad de píxeles, Viola Jones por ausencia de

detección y el índice EAR, y finalmente para detectar la presencia de somnolencia se usó

PERCLOS (porcentaje de ojos cerrados).

Con base en los algoritmos seleccionados para cada una de las 4 etapas mencionadas con

anterioridad se realizaron 3 aplicativos móviles que fueron estructurados del siguiente

modo:

El primer aplicativo utilizó el algoritmo de VJ para detección del rostro, la detección de los

ojos se realizó igualmente mediante VJ y para la detección de parpadeos se implementó el

análisis de densidad de pixeles. Para el segundo se implementó como método para la

detección del rostro el algoritmo de Viola Jones (VJ), para detectar los ojos nuevamente el

algoritmo de Viola Jones y para la detección de parpadeos se hizo uso de un algoritmo de

Viola Jones caracterizado por solo detectar ojos abiertos. Por último, para el tercer

aplicativo se realizó la detección del rostro mediante HOG, mediante landmarks se

detectaron los ojos y se implementó el índice EAR para la detección de parpadeos.

Finalmente, para los tres aplicativos implementados se usó como método de detección de

somnolencia PERCLOS

Page 5: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

5

Teniendo las tres aplicaciones desarrolladas se realizaron pruebas teniendo como

parámetros tiempos de procesamiento, estabilidad en ambientes de luz no controlados y

cantidad de aciertos y errores en la detección de somnolencia. Posteriormente se

seleccionaron los métodos más eficientes y con base en ellos se desarrolló el aplicativo final,

el cual terminó estructurado del siguiente modo: La detección del rostro se realizó mediante

el algoritmo de VJ, se realizó la detección de los ojos mediante Landmarks, se detectaron

los parpadeos mediante EAR y se estimó el estado de somnolencia mediante PERCLOS. Se

implementó una alerta sonora que se activará cuando el índice se somnolencia PERCLOS

sea mayor al 80%.

Se realizaron pruebas de funcionamiento del aplicativo en el entorno de aplicación

(vehículo), en donde se estimó la correcta ubicación del dispositivo móvil para un óptimo

funcionamiento del aplicativo, así como el rango de iluminación en donde este funciona de

manera óptima. Posteriormente se estimó el funcionamiento de la aplicación atendiendo a

características del usuario tales como género, presencia de rasgos faciales como la

presencia de barba, y el uso de accesorios como anteojos. Se hallaron límites en el correcto

funcionamiento de la aplicación en usuarios con anteojos.

El aplicativo móvil se diseñó para orientación del celular en modo Portrait (portarretrato),

con una resolución de imagen de 640x480 píxeles, la versión de Android mínima requerida

para el funcionamiento del aplicativo es de Android 4.0. En la interfaz gráfica de usuario se

pueden visualizar parámetros como la detección del rostro, el índice PERCLOS, y dos

botones que permite realizar la calibración de la aplicación para su óptimo funcionamiento.

Page 6: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

6

TABLA DE CONTENIDO

Pag

1 INTRODUCCIÓN ................................................................................................................................. 10

2 PLANTEAMIENTO Y DESCRIPCIÓN DEL PROBLEMA ............................................................................ 11

3 OBJETIVOS ......................................................................................................................................... 12

3.1 OBJETIVO GENERAL .............................................................................................................................. 12 3.2 OBJETIVOS ESPECÍFICOS. ........................................................................................................................ 12

4 ESTADO DEL ARTE.............................................................................................................................. 13

5 MARCO DE REFERENCIA .................................................................................................................... 17

5.1 DETECCIÓN DE ROSTROS ........................................................................................................................ 17 5.1.1 Métodos basados en Conocimiento ............................................................................................ 18 5.1.2 Métodos basados en Características Invariantes ....................................................................... 18 5.1.3 Métodos basados en Plantillas ................................................................................................... 18 5.1.4 Métodos basados en Apariencia ................................................................................................. 19

5.2 ALGORITMO DE VIOLA JONES ................................................................................................................. 19 5.2.1 Imagen Integral .......................................................................................................................... 19 5.2.2 Extracción de características ...................................................................................................... 20 5.2.3 Clasificación ................................................................................................................................ 22

5.3 LOCALIZACIÓN DE LOS HITOS DE FACE LANDMARK ...................................................................................... 22 5.3.1 Dlib modelos pre-entrenados...................................................................................................... 23

5.4 PARÁMETROS DE LA ZONA OCULAR .......................................................................................................... 24 5.5 PORCENTAJE DE OJOS CERRADOS (PERCLOS) ........................................................................................... 25 5.6 SMART PHONES ................................................................................................................................... 25 5.7 ANDROID ........................................................................................................................................... 26 5.8 HERRAMIENTAS DE SOFTWARE ............................................................................................................... 26

5.8.1 Android Studio ............................................................................................................................ 26 5.8.2 Opencv ........................................................................................................................................ 27 5.8.3 Dlib .............................................................................................................................................. 27 5.8.4 CMake ......................................................................................................................................... 27

5.9 LENGUAJES DE PROGRAMACIÓN .............................................................................................................. 28 5.9.1 Java ............................................................................................................................................. 28 5.9.2 C++ .............................................................................................................................................. 28

6 DESARROLLO ..................................................................................................................................... 30

6.1 MÉTODOS DE DETECCIÓN DE SOMNOLENCIA BASADO EN PROCESAMIENTO DE IMÁGENES ................................... 30 6.1.1 Métodos detección de rostro ...................................................................................................... 31 6.1.2 Métodos detección de ojos ......................................................................................................... 32 6.1.3 Métodos detección parpadeo ..................................................................................................... 32 6.1.4 Integración de los algoritmos ..................................................................................................... 34 6.1.5 Configuraciones Desarrolladas ................................................................................................... 34

6.2 DISEÑO DE ALGORITMO QUE PERMITA DETECTAR SOMNOLENCIA UTILIZANDO EL MÉTODO ESCOGIDO ANTERIORMENTE,

TOMANDO EN CUENTA, PRUEBAS CON DIFERENTES INDIVIDUOS Y TIEMPOS DE PROCESAMIENTO DE LA IMAGEN. ................... 35 6.2.1 Metodología de la configuración utilizada ................................................................................. 36

Page 7: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

7

6.2.2 Requerimiento de la aplicación .................................................................................................. 37 6.3 DISEÑO DE INTERFAZ GRÁFICA DE USUARIO QUE PERMITA VISUALIZAR EL FUNCIONAMIENTO DEL ALGORITMO, Y

REALIZAR PRUEBAS Y AJUSTES DE CALIBRACIÓN A CONVENIENCIA DEL USUARIO. ............................................................. 38 6.4 REALIZAR PRUEBAS OBJETIVAS DEL SISTEMA PARA DETERMINAR SU RENDIMIENTO FRENTE A CONDICIONES DE

ILUMINACIÓN POSICIÓN Y CARACTERÍSTICAS DEL INDIVIDUO. ...................................................................................... 39

7 ANÁLISIS DE RESULTADOS ................................................................................................................. 40

7.1 MÉTODOS DE DETECCIÓN DE SOMNOLENCIA .............................................................................................. 40 7.1.1 Configuración 1 ........................................................................................................................... 40 7.1.2 Configuración 2 ........................................................................................................................... 41 7.1.3 Configuración 3 ........................................................................................................................... 42

7.2 CONFIGURACIÓN IMPLEMENTADA Y RESULTADOS OBTENIDOS ....................................................................... 44 7.3 PRUEBAS OBJETIVAS DEL APLICATIVO. ....................................................................................................... 46 7.4 CASOS DE NO DETECCIÓN O MAL FUNCIONAMIENTO .................................................................................... 48 7.5 PRUEBAS REALIZADAS EN SUJETOS DE DIFERENTES CARACTERÍSTICAS ............................................................... 51 7.6 RESUMEN DE RESULTADOS ..................................................................................................................... 52

8 CONCLUSIONES ................................................................................................................................. 53

9 TRABAJO FUTURO ............................................................................................................................. 54

10 BIBLIOGRAFÍA .................................................................................................................................... 55

Page 8: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

8

LISTA DE FIGURAS

Figura 1: Modelo basado en apariencia ........................................................................................... 19

Figura 2: Relaciones espaciales del rostro y descriptores de Haar ................................................. 20

Figura 3: Descriptores de Algoritmos Haar básicos......................................................................... 21

Figura 4: Convolución del filtro Haar con una imagen integral ...................................................... 21

Figura 5: Clasificador en cascada ..................................................................................................... 22

Figura 6: 68 puntos de referencia ..................................................................................................... 23

Figura 7: Resultados de velocidad promedio de pestañeos............................................................. 24

Figura 8: Etapas del algoritmo para detección de somnolencia: ...................................................... 30

Figura 9: Métodos de detección ....................................................................................................... 31

Figura 10: Detección de Parpadeo por medio del índice EAR ........................................................... 33

Figura 11: integración de las 4 etapas de detección ......................................................................... 34

Figura 12: Diagrama de la configuración 1 para detección de somnolencia .................................... 34

Figura 13: Diagrama de la configuración 2 para detección de somnolencia .................................... 35

Figura 14: Diagrama de la configuración 3 para detección de somnolencia .................................... 35

Figura 15: Diagrama configuración final ........................................................................................... 36

Figura 16: Interfaz del aplicativo ....................................................................................................... 38

Figura 17 Funcionamiento de la configuración 1 ojos cerrados ....................................................... 40

Figura 18: Funcionamiento de la configuración 1 ojos abiertos ....................................................... 41

Figura 19: Funcionamiento de la configuración 2 ............................................................................. 42

Figura 20: Funcionamiento de la configuración 3 ............................................................................. 43

Figura 21: Funcionamiento de la configuración final ........................................................................ 44

Figura 22: Funcionamiento de la configuración final ........................................................................ 45

Figura 23: Funcionamiento de la configuración final ........................................................................ 45

Figura 24: Ubicaciones utilizadas para las pruebas del aplicativo .................................................... 46

Figura 25: Funcionamiento del aplicativo en diferentes posiciones sujeto 1 ................................... 47

Figura 26: Funcionamiento del aplicativo en diferentes posiciones sujeto 2 ................................... 47

Figura 27: Funcionamiento del aplicativo en sujetos con gafas ....................................................... 48

Figura 28: Falsa detección de rostro ................................................................................................. 49

Figura 29: No detección de Rostro, por rostro incompleto .............................................................. 49

Figura 30: No detección de Rostro, por rostro orientado de perfil .................................................. 50

Figura 31: Funcionamiento del aplicativo a diferentes condiciones de luz ...................................... 50

Page 9: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

9

LISTA DE TABLAS

Tabla 1: Resultados Obtenidos de la configuración 1 ....................................................................... 41

Tabla 2: Resultados Obtenidos de la configuración 2 ....................................................................... 42

Tabla 3: Resultados Obtenidos de la configuración 3 ....................................................................... 43

Tabla 4: Resultados Obtenidos de la configuración final .................................................................. 48

Tabla 5: Rangos de funcionamiento del aplicativo ........................................................................... 51

Tabla 6: Resultados pruebas en sujetos con diferentes rasgos ........................................................ 51

Page 10: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

10

1 INTRODUCCIÓN

La somnolencia, según un consenso de investigadores y clínicos en el área, es una

necesidad fisiológica básica. Puede ser considerada como el hambre o la sed, que también

son necesidades fisiológicas básicas para la supervivencia de la persona. Una definición

operacional de la somnolencia es la tendencia de la persona a quedarse dormida, también

conocido como la propensión a dormirse[1]. Si bien es solo un síntoma que se presenta por

falta de sueño o fatiga y no representa un riesgo directo a la vida del individuo(a) afectado,

está de manera indirecta puede llegar a ser peligrosa al realizar tareas que requieren

concentración constante, un ejemplo de ellos es la conducción de un vehículo donde la falta

de concentración puede ocasionar un accidente que ponga en riesgo la vida del individuo.

En 2017 Según la OMS y el CDC (Centro para el control y la prevención enfermedades) de

Estados Unidos 1.3 millones de personas mueren en el mundo por accidentes

automovilísticos, de los cuales del 15 al 33% son ocasionados por somnolencia.

Actualmente gracias a la tecnología se han brindado soluciones a problemas en diferentes

ámbitos, entre ellos y más importantes es la protección de la vida humana, por lo cual es

posible encontrar soluciones a casi todos los peligros a los cuales se enfrenta una persona

en su vida diaria. No obstante, dichas soluciones pueden llegar a ser demasiado costosas

impidiendo su implementación en la mayoría de los casos, como ejemplo de ello

encontramos los sistemas de detección de somnolencia integrados en algunos de los

vehículos de última generación que tienen un óptimo funcionamiento, pero un alto costo si

se deseasen implementar en vehículos de gama media o baja.

Hoy en día gracias al avance tecnológico y los nuevos mecanismos de comunicación e

información, se ha obligado a las personas a adquirir dispositivos inteligentes conocidos

como Smartphones dispositivos que cuentan con una alta diversidad de sensores, un alto

nivel de procesamiento, y la capacidad de interactuar con una persona por medios

audiovisuales, por lo cual en este trabajo se ilustra el desarrollo de un aplicativo móvil

orientado a dispositivos tipo Smartphone con sistemas operativos tipo android capaz de

detectar somnolencia por medio de análisis de imagen y una alarma sonora, haciéndolo un

sistema de detección de somnolencia de bajo costo y de fácil implementación. Para ello, se

hizo un proceso de investigación y desarrollo de los diferentes métodos de detección de

somnolencia por medio de análisis de imagen y se seleccionó el más adecuado basándose

en pruebas en diferentes individuos con diferentes rasgos faciales, tiempos de

procesamiento, alto nivel de detección, bajo nivel de falsos positivos y condiciones de luz

variable, posteriormente se desarrolló una interfaz de usuario que permitiera visualizar en

tiempo real el funcionamiento del aplicativo, brindar información visual del estado de las

variables pertinentes del sistema, como lo son: Nivel de somnolencia, índice EAR,

presencia de rostro y nivel lux, además de permitir una calibración del sistema en

dependencia de las características del sujeto, finalmente se realizaron las pruebas

pertinentes con la finalidad de analizar los resultados y determinar los rangos de

funcionamiento del aplicativo y sus limitaciones.

Page 11: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

11

2 PLANTEAMIENTO Y DESCRIPCIÓN DEL PROBLEMA

En 2017 Según la OMS y el CDC (Centro para el control y la prevención enfermedades) de Estados

Unidos 1.3 millones de personas mueren en el mundo por accidentes automovilísticos, de los cuales

del 15 al 33% son ocasionados por somnolencia [2]

En Colombia los accidentes de tránsito causados por somnolencia son más comunes de lo que

parece. De hecho, cada mes, en el último año, han muerto cinco personas por esta razón. Además,

este “sueño mortal” es culpable de 200 heridos en siniestros vehiculares[3]. en el 2017, según

Medicina Legal, fueron cerca de 7.000 las personas que murieron en accidentes de tránsito. Y

aunque no hay cifras detalladas, muchos de estos eventos fatales ocurrieron por culpa de la

somnolencia[4]

El cansancio y la somnolencia en conductores hacen que estos progresivamente disminuyan su capacidad de concentración y atención durante el manejo y pierdan capacidad de respuesta ante condiciones específicas que exigen reacciones inmediatas cuando se circula por la ciudad o por carretera.

Las causas de somnolencia son variadas, se puede dar debido largas jornadas de conducción, hábitos del conductor durante su trabajo como manejar durante la noche y/o en horario vespertino y trastornos del sueño como apnea-hipopnea.

Actualmente existen diferentes desarrollos que permiten la detección y alerta temprana al conductor de la presencia de somnolencia, pero no son cómodos para el usuario y son sistemas con costos elevados y difícil implementación por ello podría cuestionarse si: ¿Es posible desarrollar un sistema de detección de somnolencia de bajo costo, fácil implementación y óptimo desempeño?

Page 12: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

12

3 OBJETIVOS

3.1 Objetivo general

Diseñar un aplicativo móvil para plataformas Android que permita detectar somnolencia en

condiciones de iluminación establecidas y emitir una alarma sonora a conductores de automóvil

mediante procesamiento digital de imágenes.

3.2 Objetivos específicos.

• Investigar diferentes métodos de detección de somnolencia por medio de procesamiento

de imágenes y determinar cuál es la mejor opción para este aplicativo.

• Diseñar un algoritmo que permita detectar somnolencia utilizando el método escogido

anteriormente, tomando en cuenta, pruebas con diferentes individuos y tiempos de

procesamiento de la imagen.

• Diseñar una interfaz gráfica de usuario que permita visualizar el funcionamiento del

algoritmo, Realizar pruebas y ajustes de calibración a conveniencia del usuario.

• Realizar pruebas objetivas del sistema para determinar su rendimiento frente a condiciones

de iluminación posición y características del individuo.

Page 13: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

13

4 ESTADO DEL ARTE

A continuación, se listan algunos desarrollos de sistemas de detección de somnolencia en

conductores a partir del procesamiento digital de imágenes.

En [5], Liao y Hong desarrollaron un algoritmo para la detección de somnolencia mediante el análisis

del estado de la pupila y el estado de la boca. El sistema en primera instancia realiza la detección

del rostro mediante un algoritmo basado en el color de la piel, posteriormente detecta la pupila, y

la boca para lo cual implementan los algoritmos más comunes para la detección de bordes como

Roberts, Prewitt, Sobel. Para detectar la presencia de somnolencia se analizó la apertura de la boca

en presencia de bostezos, y el estado de apertura de los ojos, si la boca y los ojos permanecían en

un estado de apertura mínimo ojos durante 6 fotogramas consecutivos, se alertaba a al usuario

sobre la presencia de somnolencia. Se evaluó el funcionamiento del sistema mediante la

implementación del mismo con los 3 algoritmos de detección de bordes mencionados,

encontrándose que el funcionamiento de los algoritmos de Prewitt y Sobel presentan mayor

eficiencia bajo condiciones de iluminación no controladas.

En [6] Fa-Deng y Min-X implementan un sistema de detección de fatiga en conductores mediante

el análisis del estado de los ojos. Como primera etapa del algoritmo se tiene la detección del rostro

la cual se realizó mediante el método de Adaboost basado en características tipo Haar, se seleccionó

este método debido a tiene bajos tiempos de procesamiento,permite un funcionamiento en tiempo

real y tiene alto porcentaje de detecciones. Una vez obtenido el rostro para hallar la localización de

los ojos se implementó el método de Template Matching (plantillas adaptativas), el cual para

mejorar tiempos de procesamiento no se implementó sobre todo el rostro si no en el área próxima

a los ojos, la cual se halló mediante el análisis de la geometría del rostro. Se detectó el estado de

somnolencia mediante el porcentaje de coincidencia de la plantilla y el estado de los ojos. L

estimación del estado de fatiga se realizó mediante la implementación del índice PERCLOS.

Mediante experimentación se evidencio que el algoritmo de AdaBoost combinado con el método

de comparación de plantillas presenta alta precisión de detección y velocidad, y es robusto frente a

cambios de condiciones ambientales lo cual cumple los requerimientos para la detección de fatiga

en conductores en tiempo real.

En [7] Pijiang Chen describe un sistema de reconocimiento de fatiga mediante el análisis del estado

de los ojos, para ello en primera instancia implementó la detección del rostro mediante el algoritmo

basado en el color de la piel, para lo cual previamente realizó un preprocesamiento de la imagen

eliminando ruido y posteriormente debido a que la cromaticidad del color del rostro humano tiene

mejor concentración para lograr diferenciarlo del fondo, se realiza la transformación de espacio de

la imagen a YCbCr, y se realiza una binarizacion de la imagen en dependencia de una rango

preestablecido en la matrix cb y cr, posteriormente se detecta la locación de los ojos mediante el

método de proyección integral doble, y por último se analiza la apertura de los ojos y el ratio de

parpadeo para determinar el estado de fatiga del conductor mediante el índice PERCLOSE. Una vez

confirmado el estado de fatiga del conductor mediante una alarma se alerta al mismo. El algoritmo

desarrollado presenta un óptimo funcionamiento en ambientes de iluminación controlados, pero

presenta fallas en dependencia de características faciales propias del sujeto de prueba debido a que

Page 14: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

14

el método de detección de rostro se basa en características físicas del individuo como el color de la

piel.

En [8] Singh, Bratia y Kaur desarrollan un sistema de detección de fatiga en conductores de

automóvil. En primera instancia se realizó la detección del rostro el algoritmo de Viola Jones,

posteriormente se realiza la localización de los ojos y se analiza el estado de la pupila para detectar

si los ojo se encuentran abiertos o cerrados, el estimado del nivel de somnolencia del conductor se

realizó mediante índice PERCLOS, el cual indica la medida por unidad de tiempo en que el ojo esta

serrado. Paralelamente se implementó un sistema que permitía censar el nivel de agarre del volante

por parte del conductor mediante la implementación de un cable resistivo enrollado y un conversor

análogo digital implementado con un microcontrolador de la familia PIC. Se implementó también

un sensor de velocidad en el vehículo. Para la detección del estado de fatiga del conductor mediante

en análisis de las tres variables, PERCLOS, agarre del volante, y velocidad, se realiza un estimado de

la presencia de somnolencia y mediante la implementación de dos sistemas de alarma, uno por

vibración y el otro por sonido se da alerta al conductor. El sistema desarrollado presenta un

funcionamiento óptimo ya no depende solamente del procesamiento digital de imágenes para

estimar somnolencia, si no tiene en cuenta parámetros como velocidad del vehículo y estado de

agarre del volante.

En [9] Luo, Hu y Fan desarrollan un sistema que permite la detección del estado de fatiga en

conductores, que cuenta con sistema de detección en estado de iluminación diurno y nocturno. Para

el sistema diurno se implementa el algoritmo AdaBoost para la localización del rostro.

Posteriormente para hallar la localización de los ojos de usa nuevamente el algoritmo AdaBoost. Se

halló el estado de los ojos mediante el análisis de características geométricas como la relación del

ancho, largo y la curvatura del párpado que se presentan en estos cuando se encuentran abiertos o

cerrados, estas características de evidencian claramente cuando se realiza una binarizacion de la

imagen. Conociendo si los ojos se encuentran abiertos o cerrados se halla el nivel de somnolencia

del conductor mediante la utilización del índice PERCLOS. Para el modo nocturno se emplea una

cámara infrarroja CCD y se usa el algoritmo de diferencia de frames infrarrojos para la localización

de los ojos. Además, se implementa un sistema de detección de bostezo implementando el

algoritmo LBP. El sistema desarrollado presenta bajos tiempos de procesamiento y logra la

detección efectiva y precisa del estado de fatiga en un conductor.

En [10] Ahmed, Emrul y Fosail proponen un sistema de detección de somnolencia mediante el uso

de dos cámaras que detectan características faciales del conductor y el estado del vehículo con

respecto al carril por el cual transita. La primera cámara se encargará de detectar el rostro para lo

cual implementará un algoritmo basado en el color de la piel, para ello se realiza la conversión la

imagen de RGB a YCbCr lo cual reduce problema provocado ambientes de iluminación con alto grado

de brillo. Para la detección de los ojos y la boca se implementó erosión y dilatación de la imagen. La

detección de la inclinación de la cabeza se obtiene mediante la medición del ángulo de una línea

normal al rostro y otra perteneciente a la ubicación de los ojos. La segunda cámara se implementó

para detectar el contorno de la vía por la cual transita el vehículo y así saber cuándo este se desvía

de su trayectoria adecuada. El estado de fatiga del conductor se determina comparando los datos

obtenidos del procesamiento de imagen realizado por las dos cámaras. La eficiencia del sistema

propuesto se evaluó por cada una de sus atapas obteniendo para el detector de bostezo una

Page 15: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

15

eficiencia del 90%, para el cabeceo del 82%, el estado de los ojos 80% y para el análisis de conducción

del 86%.

En [11] Sarada, Devi y Preeti Bajaj desarrollan un sistema de detección de fatiga en conductores

basado en la detección del estado de los ojos, para ello primero se realizó la detección del rostro en

base al color de la piel para lo cual se clasificaron los pixeles de la imagen perteneciente a la piel,

identifico las regiones de piel mediante un análisis de conectividad, y se decide cuál de las regiones

halladas pertenecen al rostro y cuáles no. Una vez detectado el rostro se procede a detectar los ojos

para lo cual se detectan los cambios de intensidad de la imagen haciendo un promedio de cada

coordenada en x sobre la imagen en escala de grises. Posteriormente de detecta si el conductor se

encuentra en estado de somnolencia, para ello se verificará si durante 5 frames consecutivos los

ojos permanecen cerrados, si se cumple la condición se alertará al conductor. El algoritmo

desarrollado funciono satisfactoriamente.

En [12] Zhi Dong y Mey Xie desarrollan un método de detección de somnolencia para cual en

primera instancia se realiza la detección de rostro mediante el algoritmo de clasificación AdaBoost,

posteriormente conociendo la geometría del rostro se realiza una división de la imagen en 4 partes

siento las dos regiones superiores pertenecientes a los ojos, después se aplica nuevamente sobre la

región de los ojos el algoritmo AdaBoost y se implementa un AAM (Active Appearance Model) el

cual localiza el contorno perteneciente a los ojos. Una vez se obtiene el contorno de los ojos se

procede mediante el índice PERCLOS a analizar el estado de somnolencia del conductor. El método

propuesto gracias a la implementación del algoritmo AAM reduce información de textura facial

redúndate y acelera la velocidad de procesamiento.

En [13] Xinxing, Pengfei y Ping desarrollan un sistema de detección de somnolencia basado en el

estado de los ojos y la boca. Como primer paso se realiza la detección del rostro mediante la

implementación del algoritmo de Viola Jones y realizo una estimación de la posición del rostro

mediante la implementación de un filtro de Kalman, posteriormente para localizar los ojos se

implementa el algoritmo AdaBoost y después se realza el color de los ojos mediante la

transformación de RGB a YCbCr, se binariza la imagen y se aplica el operador Sobel para resaltar los

contornos, para estimar el estado de somnolencia se aplica el índice PERCLOS. Para localizar la boca

se usa MB-LBP (Multi Block Local Binary Pattern) y para realizar un seguimiento predictivo se aplica

un filtro de Kalman. Para estimar el rango de apertura de la boca similar a lo realizado con los ojos,

se realiza una transformación de la imagen a YCbCr se realzan bordes mediante Sobel, y se estima

apertura mediante asociación con una elipse. Los resultados obtenidos mostraron una efectividad

de algoritmo alrededor del 95% lo cual es buen indicador de la robustez del mismo.

En [14] se propone un sistema detector se somnolencia el cual se desarrolló como aplicativo para

teléfono móvil usando la librería Opencv. El algoritmo propuesto en primera instancia se encarga

de la detección del rostro del conductor, para lo cual se implementa un clasificador tipo Haar y el

Page 16: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

16

algoritmo AdaBoost con plantillas adaptativas lo cual mejora la detección de rostro con la cabeza en

rotación. Para la detección de los ojos debido a que el clasificador de Haar mediante AdaBoost

presenta problemas durante la rotación de la cabeza, se implementó una combinación de detección

por plantillas adaptativas, y Boosting adaptativo. Para la detección de signos de somnolencia se

implementó el índice PERCLOS. La boca se detectó mediante la implementación de clasificador tipo

Haar, y algoritmo AdaBoost y para la solución de problemas de detección durante la cabeza en

rotación se implementó el mismo método usado para la detección de los ojos. Una vez se detectó

la boca se realizó el respectivo análisis para reconoces si el conductor este o no bostezando, ya que

este es un claro indicador de fatiga. El sistema desarrollado presenta una alta funcionalidad, bajo

costo computacional, y alta flexibilidad en la implementación del mismo.

Page 17: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

17

5 MARCO DE REFERENCIA

5.1 Detección de rostros

La detección de rostros por parte de una computadora es el proceso por el cual la computadora

ubica los rostros presentes en una imagen o en un video, el proceso no es tan sencillo como lo

haríamos los humanos, pues el reconocimiento es casi instantáneo y esto se debe al ´ gran

paralelismo existente en las redes neuronales de nuestro cerebro, esto no es tan rápido ni sencillo

en una computadora secuencial, pero existen diversos métodos algunos ya tradicionales para poder

realizar detección de rostros por medio de una computadora[15].

Las técnicas existentes pueden ser agrupadas de la siguiente manera:

1. Métodos basados en conocimiento: codifican de alguna manera el conocimiento de lo que

es un rostro, generalmente son atributos geométricos codificados en forma de reglas.

2. Métodos basados en características invariantes: son técnicas que representa los rostros

independientemente de su orientación generalmente utilizan información del color y la

textura de la imagen.

3. Métodos basados en plantillas: es una técnica general empleada para detectar objetos de

una escena, donde el mismo es representado por una familia de curvas que representan el

objeto, puede ser considerada una técnica basada en el conocimiento.

4. Métodos basados en la apariencia: no necesitan conocimiento previo de la característica a

ser detectada, generalmente las técnicas que pertenecen a esta clasificación necesitan

varias imágenes, a partir de ellas aprenden y codifican solamente lo necesario para hacer la

detección de las características de interés en este caso un rostro humano, y pertenecen a

este grupo las redes neuronales, Eigenfaces y Modelos Ocultos de Markov.

Existen algunos problemas más comunes en la detección de rostros que se dan en el proceso de

adquisición de las imágenes, condiciones de luminosidad, bajo contraste, objetos extraños, rostros

parcialmente capturados, distorsión de la imagen, etc. A continuación, algunos de los problemas

más comunes:

• Posición: las imágenes varían de posición y orientación y esto se debe al medio de captura,

o a la posición de las personas en el momento de capturar la imagen.

• Expresión facial: la expresión facial, por ejemplo, la risa, el enojo, gestos, etc.

• Presencia de estructuras: elementos como barba, bigote, lentes, pueden constituir un

problema.

Page 18: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

18

• Ocultación: las imágenes pueden aparecer sobrepuestas por otras imágenes de rostros

5.1.1 Métodos basados en Conocimiento

Los métodos basados en el conocimiento representan las técnicas de detección de rostros basados

en alguna base de reglas previas, que ha sido definida por el investigador, por ejemplo, se puede

decir que el rostro tiene una forma ovalada y tiene dos ojos una nariz y una boca, además que estos

elementos no se encuentran de una manera aleatoria dentro del rostro sino más bien siguiendo una

distribución común; este conocimiento hace posible establecer reglas que identifiquen un rostro

humano. Las desventajas de este método es que las reglas utilizadas si son muy generales entonces

la tasa de detección de rostros de regiones de imágenes que no son rostros en realidad (falsos

positivos), es muy alta, y lo inverso también ocurre, que, si las reglas son muy específicas, la tasa de

aceptación de rostros es muy baja [15].

5.1.2 Métodos basados en Características Invariantes

El color de la piel y la textura de la piel son utilizadas por estos métodos. La principal desventaja es

que las condiciones de iluminación y el ruido comprometen el desempeño de estos algoritmos.

Cuando se utiliza la información del color de la piel, los algoritmos que utilizan toda la gama de

colores posibles tienen mejor desempeño que los que utilizan solamente escala de grises, estos

métodos tienden a formar clusters en el espacio de colores pudiendo ser modelados por medio de

distribuciones gaussianas, por consiguiente, esta característica puede ser utilizada para encontrar

rostros en una escena [15].

5.1.3 Métodos basados en Plantillas

Se modela geométricamente la forma del objeto por medio de componentes básicos como círculos,

elipses, etc. estas vienen a ser las plantillas, luego se evalúa la correspondencia entre el objeto y la

plantilla por medio de una función de energía. Las principales técnicas son las plantillas deformables

y los contornos activos[15].

Page 19: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

19

5.1.4 Métodos basados en Apariencia

Los métodos basados en la apariencia es una técnica que no necesita conocimiento a priori sobre

las características del objeto a ser buscado en la imagen. En esta clase de algoritmos surgen los

conceptos de entrenamiento y de aprendizaje, una vez que la información necesaria es extraída de

las imágenes sin intervención externa[15].

Figura 1: Modelo basado en apariencia

Entre estas técnicas encontramos las Eigenfaces, Redes Neuronales y los Modelos Ocultos de

Markov.

5.2 Algoritmo de Viola Jones

La técnica de detección propuesta por Paul Viola y Michael Jones utiliza una serie de clasificadores,

agrupados consecutivamente con características previamente definidas, con el fin de detectar el

rostro en una imagen.

La metodología del algoritmo es:

5.2.1 Imagen Integral

La imagen integral se define como una matriz de búsqueda de dos dimensiones, con el mismo

tamaño que la imagen de entrada donde cada elemento de la imagen integral contiene la suma de

Page 20: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

20

los píxeles que se encuentren en la región superior izquierda, incluyendo el pixel de la posición

indicada[16].

𝑖𝑖(𝑥, 𝑦) = ∑ 𝑖(𝑥′, 𝑦′)

𝑥′≤𝑥,𝑦′≤𝑥

Donde 𝑖(𝑥, 𝑦) es la imagen de la que se desea calcular su imagen integral 𝑖𝑖(𝑥, 𝑦). La utilidad de las

imágenes integrales que es que al implementar los descriptores tipo Haar para hallar la suma total

de los pixeles encerrados en cada descriptor, al trabajar sobre la imagen integrar el proceso se

simplifica a la realización de operaciones básicas, lo cual mejora el tiempo de computo del

algoritmo.

5.2.2 Extracción de características

En imágenes las características de cada objeto se extraen al aplicar ciertas funciones que permitan

la representación y descripción de los objetos de interés de la imagen (patrones). La extracción de

características es un paso en el reconocimiento de patrones en el cuál las medidas u observaciones

son procesadas para encontrar a tributos que puedan ser usados para asignar los objetos a

determinada clase.[17]

Los descriptores del algoritmo de Haar son funciones que permiten acentuar la diferencia de

contraste entre regiones rectangulares diferentes adyacentes en una misma imagen, como método

de codificación de los contrastes existentes, por ejemplo entre el rostro y sus relaciones espaciales

[18], como se puede ver en la figura 2.

Figura 2: Relaciones espaciales del rostro y descriptores de Haar

El algoritmo de Viola y Jones establece ciertos tipos de descriptores Haar que se observan en la

Figura 3, y de los cuales los tres principales tipos de descriptores son:

Page 21: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

21

A. Descriptor a dos rectángulos: Diferencia entre las sumas de los píxeles de ambas regiones

rectangulares, del mismo tamaño y forma que son adyacentes horizontal o verticalmente.

B. Descriptor a tres rectángulos: Suma de los píxeles entre dos rectángulos exteriores y

restados de la suma de los píxeles en un rectángulo central a estos.

C. Descriptor a cuatro rectángulos: Diferencia entre los pares diagonales de los rectángulos

implicados.

Figura 3: Descriptores de Algoritmos Haar básicos.

En la figura 4, se muestra la convolución de un filtro Haar con la imagen integral. De esta operación

se puede extraer una característica en un tiempo constante sobre la imagen integral adicionando y

sustrayendo los valores de los vértices para cada rectángulo[19]. Para mayor claridad, en la figura

la suma de los píxeles que forman el rectángulo D se puede calcular como:

𝑠𝑢𝑚𝐷 = (4 + 1) − (2 + 3)

Donde 1, 2, 3, 4, son los valores dados en la imagen integral en dichas localizaciones.

Figura 4: Convolución del filtro Haar con una imagen integral

Page 22: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

22

5.2.3 Clasificación

Esta etapa dentro del algoritmo de detección se encarga de asignar un conjunto de características

dado a una clase con la que se encuentra una mayor similitud, de acuerdo a un modelo inducido

durante el entrenamiento.

Boosting fue introducido es un método de clasificación que combina varios clasificadores básicos

para formar un único clasificador más complejo y preciso. La idea se basa en la afirmación de que

varios clasificadores sencillos, cada uno de ellos con una precisión ligeramente superior a una

clasificación aleatoria, pueden combinarse para formar un clasificador de mayor precisión, siempre

y cuando se disponga de un número suficiente de muestras de entrenamiento[19]. En la figura 5, se

muestra un esquema de un clasificador en cascada.

Figura 5: Clasificador en cascada

Para aplicar la técnica de boosting primero se debe establecer un algoritmo de aprendizaje sencillo

(clasificador débil o base), que será llamado repetidas veces para crear diversos clasificadores base.

Para el entrenamiento de los clasificadores base se emplea, en cada iteración, un subconjunto

diferente de muestras de entrenamiento y una distribución de pesos diferente sobre las muestras

de entrenamiento. Finalmente, estos clasificadores base se combinan en un único clasificador que

se espera sea mucho más preciso que cualquiera de los clasificadores base por separado. En función

de los clasificadores base que se utilicen, las distribuciones que se empleen para entrenarlos y el

modo de combinarlos, podrán crearse distintas clases del algoritmo genérico de boosting. El

algoritmo de boosting empleado por Viola y Jones en su trabajo es conocido como AdaBoost.

5.3 Localización de los hitos de Face Landmark

Este proceso es capaz de extrapolar un conjunto de puntos clave a partir de una determinada

imagen facial denominado Localización de Hitos Faciales (Face Landmark Localization o Face

Alignment).

Los hitos (puntos clave) que interesan, son aquellos que describen la forma de los atributos de la

cara como: ojos, cejas, nariz, boca y mentón. Estos puntos dieron una gran visión sobre la estructura

Page 23: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

23

de la cara analizada, que puede ser muy útil para una amplia gama de aplicaciones, incluyendo:

reconocimiento facial, animación facial, reconocimiento de emociones, detección de parpadeos y

fotografía.

Existen muchos métodos que son capaces de detectar estos puntos: algunos de ellos logran una

precisión y robustez superiores mediante el análisis de un modelo facial 3D extraído de una imagen

2D, otros se basan en la potencia de CNNs (Convolutional Neural Networks) o RNNs (Recurrent

Neural Networks), y el otro utiliza características simples (pero rápidas) para estimar la ubicación de

los puntos.

El algoritmo Face Landmark Detection ofrecido por Dlib es una implementación del Ensemble of

Regression Trees (ERT) presentado en 2014 por Kazemi y Sullivan [20]. Esta técnica utiliza una

característica simple y rápida (diferencias de intensidad de píxeles) para estimar directamente las

posiciones de los puntos de referencia. Estas posiciones estimadas son posteriormente refinadas

con un proceso iterativo realizado por una cascada de regresores. Los regresores producen una

nueva estimación de la anterior, tratando de reducir el error de alineación de los puntos estimados

en cada iteración. El algoritmo es muy rápido, de hecho, se necesitan entre 1 y 3 ms (en una

plataforma de escritorio) para detectar (alinear) un conjunto de 68 puntos de referencia en una cara

determinada.

5.3.1 Dlib modelos pre-entrenados

El autor de la biblioteca Dlib (Davis King) ha entrenado varios modelos de predictores de formas en el conjunto de datos iBug 300-W, uno de ellos, es el conjunto de puntos detectados por el Dlib pre-entrenado shape_predictor_68 (SP68) que localizan 68 puntos de referencia dentro de una imagen facial como se observa en la Figura 6.

Figura 6: 68 puntos de referencia

Page 24: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

24

Básicamente, un predictor de forma puede ser generado a partir de un conjunto de imágenes, anotaciones y opciones de entrenamiento. Una sola anotación consiste en la región de la cara y los puntos marcados que se quieren localizar. La región de la cara puede ser fácilmente obtenida por cualquier algoritmo de detección de caras (como Opencv HaarCascade, Dlib HOG Detector, detectores CNN,...), en su lugar los puntos tienen que ser etiquetados manualmente o detectados por modelos y detectores de puntos de referencia ya disponibles (por ejemplo, ERT con SP68).

5.4 Parámetros de la zona ocular

Uno de los parámetros principales para detectar somnolencia, es el parpadeo de los ojos

donde se pueden analizar dos características de este movimiento:

• Frecuencia del parpadeo

• Duración del parpadeo

Donde la frecuencia del parpadeo según [21] en forma espontánea se parpadea de cuatro a seis

veces por minuto, y de manera refleja cuando existe algún estímulo sobre las pestañas o la superficie

ocular.

Y la duración del parpadeo según un estudio [22] sobre velocidad promedio de pestañeos para

monitoreo de somnolencia, para el cual se trabajó con 12 personas, 7 mujeres y 5 varones, de entre

19 y 64 años, a los cuales se les monitoreo los ojos y se extrajeron 202 pestañeos aleatorios de cada

uno, con lo cual se obtuvo que en promedio la duración normal de un pestañeo reflejo es de 111 +-

51 msec.

Figura 7: Resultados de velocidad promedio de pestañeos

Page 25: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

25

Las características de un parpadeo normal se muestran en la Figura 7 en términos de su amplitud

(A), cierre de pico Velocidad (PCV) y duración.

Es difícil estar seguro cuando un parpadeo termina y los párpados finalmente están abiertos. La

duración de los parpadeos se mide con mayor precisión por la duración (D) en la mitad de su

amplitud. La media D pertenece a los sujetos en estado de alerta aquí fue111 ± 51 𝑚𝑠, y el rango

normal era de 59-182 ms.

5.5 Porcentaje de ojos cerrados (PERCLOS)

PERCLOS son las siglas de Percentaje of the Time Eyelids are Closed, o en español porcentaje de ojos

cerrados y es mayormente utilizado para la medición del estado de somnolencia basado en el estado

de los ojos (Abiertos o Cerrados), para calcular este índice se mide el porcentaje de cierre de los ojos

sobre un intervalo de tiempo [23]. Como el índice del PERCLOS se calcula en base al estado de los

ojos, la información de los ojos es obtenida generalmente por cámaras, donde en un tiempo

determinado se capturan "n" fotogramas, en los cuales algunos corresponderán a ojos cerrados y

los restantes a ojos abiertos, luego para calcular el índice PERCLOS se usa la siguiente fórmula:

𝑃𝐸𝑅𝐶𝐿𝑂𝑆 =𝐶𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑓𝑜𝑡𝑜𝑔𝑟𝑎𝑚𝑎𝑠 "𝑐𝑒𝑟𝑟𝑎𝑑𝑜𝑠"

𝐶𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑓𝑜𝑡𝑜𝑔𝑟𝑎𝑚𝑎𝑠 𝑒𝑣𝑎𝑙𝑢𝑎𝑑𝑜𝑠𝑥100%

"Un video resulta de la exposición imágenes o fotogramas uno detrás de otro."[24] Es decir que los

videos están formados a partir de imágenes o fotogramas, estos fotogramas son extraídos y

analizados para calcular el índice PERCLOS.

La principal ventaja de usar PERCLOS como indicador de somnolencia es que puede ser usado por

sistema de detección no intrusivos y en tiempo real.

5.6 Smart Phones Un “smartphone” (teléfono inteligente en español) es un dispositivo electrónico que funciona como

un teléfono móvil con características similares a las de un ordenador personal. Es un elemento a

medio camino entre un teléfono móvil clásico y una PDA (Personal Digital Assintant) ya que permite

hacer llamadas y enviar mensajes de texto como un móvil convencional pero además incluye

características cercanas a las de un ordenador personal. Una característica importante de casi todos

los teléfonos inteligentes es que permiten la instalación de programas para incrementar el

procesamiento de datos y la conectividad. Estas aplicaciones pueden ser desarrolladas por el

fabricante del dispositivo, por el operador o por un tercero. Los teléfonos inteligentes se distinguen

por muchas características, entre las que destacan las pantallas táctiles, un sistema operativo, así

como la conectividad a Internet y el acceso al correo electrónico. El completo soporte al correo

electrónico parece ser una característica indispensable encontrada en todos los modelos existentes

Page 26: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

26

y anunciados en 2007, 2008 y 2009. Otras aplicaciones que suelen estar presentes son las cámaras

integradas, la administración de contactos, el software multimedia para reproducción de música y

visualización de fotos y video-clips y algunos programas de navegación, así como, ocasionalmente,

la habilidad de leer documentos de negocios en variedad de formatos como PDF y Microsoft Office.

Una característica común a la mayoría de “smartphones” es una lista de contactos capaz de

almacenar tantos contactos como la memoria libre permita, en contraste con los teléfonos clásicos

que tienen un límite para el número máximo de contactos que pueden ser almacenados. Casi todos

los teléfonos inteligentes también permiten al usuario instalar programas adicionales [25].

5.7 Android Android es un sistema operativo de código abierto para móviles basado en el núcleo de Linux, el

cual permite desarrollar ilimitadas aplicaciones para teléfonos inteligentes, tabletas, reproductores

MP3, televisores, cámaras, como también admite la distribución de los productos generados. El

proyecto Android es liderado por el grupo Open Handset Alliance, en el cual se agrupan varios

fabricantes, desarrolladores de hardware y software, entre los cuales se pueden mencionar:

Google, Samsung, HTC, Dell, Intel, Qualcomm, Motorola, LG, Telefónica, T-Mobile, Nvidia. Mediante

alianzas en el mundo, Android ha tenido un crecimiento acelerado, desde su primera versión 1.0

liberada el 23 de septiembre del 2008 hasta la actual versión 9.0; cuenta con más de 200 millones

de dispositivos móviles activados, lo que hace que cada día se activen 550.000 nuevos dispositivos

en más de 137 países[26].

5.8 Herramientas de Software

5.8.1 Android Studio Android Studio es el entorno de desarrollo integrado (IDE) oficial para el desarrollo de aplicaciones

para Android y se basa en IntelliJ IDEA. Además del potente editor de códigos y las herramientas

para desarrolladores de IntelliJ, Android Studio ofrece aún más funciones que aumentan tu

productividad durante la compilación de apps para Android [27] , como las siguientes:

● Un sistema de compilación basado en Gradle flexible

● Un emulador rápido con varias funciones

● Un entorno unificado en el que puedes realizar desarrollos para todos los dispositivos

Android

● Instant Run para aplicar cambios mientras tu app se ejecuta sin la necesidad de compilar un

nuevo APK

● Integración de plantillas de código y GitHub para ayudarte a compilar funciones comunes

de las apps e importar ejemplos de código

● Gran cantidad de herramientas y frameworks de prueba

● Herramientas Lint para detectar problemas de rendimiento, usabilidad, compatibilidad de

versión, etc.

● Compatibilidad con C++ y NDK

● Soporte incorporado para Google Cloud Plataform, lo que facilita la integración de Google

Cloud Messaging y App Engine

Page 27: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

27

5.8.2 Opencv Opencv es una biblioteca libre de visión artificial originalmente desarrollada por Intel. Desde que

apareció su primera versión alfa en el mes de enero de 1999, se ha utilizado en infinidad de

aplicaciones. Desde sistemas de seguridad con detección de movimiento, hasta aplicaciones de

control de procesos donde se requiere reconocimiento de objetos. Esto se debe a que su publicación

se da bajo licencia BSD, que permite que sea usada libremente para propósitos comerciales y de

investigación con las condiciones en ella expresadas.

Open CV es multiplataforma, existiendo versiones para GNU/Linux, Mac OS X, Windows y Android.

Contiene más de 500 funciones que abarcan una gran gama de áreas en el proceso de visión, como

reconocimiento de objetos (reconocimiento facial), calibración de cámaras, visión estérea y visión

robótica.

El proyecto pretende proporcionar un entorno de desarrollo fácil de utilizar y altamente eficiente.

Esto se ha logrado realizando su programación en código C y C++ optimizados, aprovechando

además las capacidades que proveen los procesadores multinúcleo. Opencv puede además utilizar

el sistema de primitivas de rendimiento integradas de Intel, un conjunto de rutinas de bajo nivel

específicas para procesadores Intel (IPP) [28].

5.8.3 Dlib

Dlib es un kit de herramientas moderno de C ++ que contiene algoritmos de aprendizaje automático

y herramientas para crear software complejo en C ++ para resolver problemas del mundo real. Se

utiliza tanto en la industria como en la academia en una amplia gama de dominios, que incluyen

robótica, dispositivos integrados, teléfonos móviles y grandes entornos informáticos de alto

rendimiento. La licencia de código abierto de Dlib le permite usarla en cualquier aplicación, de forma

gratuita [29].

5.8.4 CMake

CMake es una familia de herramientas multiplataforma de código abierto diseñada para crear,

probar y empaquetar software. CMake se utiliza para controlar el proceso de compilación de

software utilizando una plataforma simple y archivos de configuración independientes del

compilador, y generar archivos de trabajo y espacios de trabajo nativos que se pueden utilizar en el

entorno del compilador que elija. Kitware creó el conjunto de herramientas CMake en respuesta a

la necesidad de un entorno de construcción potente y multiplataforma para proyectos de código

abierto como ITK y VTK. CMake es parte de la colección de Kitware de plataformas de código abierto

con soporte comercial para el desarrollo de software [30].

Page 28: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

28

5.9 Lenguajes de programación

5.9.1 Java Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que

fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera

posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una

vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run

anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser

recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación

más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10

millones de usuarios reportados [31].

El lenguaje de programación Java fue originalmente desarrollado por James Gosling de Sun

Microsystems (la cual fue adquirida por la compañía Oracle) y publicado en 1995 como un

componente fundamental de la plataforma Java de Sun Microsystems. Su sintaxis deriva en gran

medida de C y C++, pero tiene menos utilidades de bajo nivel que cualquiera de ellos. Las

aplicaciones de Java son generalmente compiladas a bytecode (clase Java) que puede ejecutarse en

cualquier máquina virtual Java (JVM) sin importar la arquitectura de la computadora subyacente.

La compañía Sun desarrolló la implementación de referencia original para los compiladores de Java,

máquinas virtuales, y librerías de clases en 1991 y las publicó por primera vez en 1995. A partir de

mayo de 2007, en cumplimiento con las especificaciones del Proceso de la Comunidad Java, Sun

volvió a licenciar la mayoría de sus tecnologías de Java bajo la Licencia Pública General de GNU.

Otros también han desarrollado implementaciones alternas a estas tecnologías de Sun, tales como

el Compilador de Java de GNU y el GNU Classpath.

El lenguaje Java se creó con cinco objetivos principales:

1. Debería usar el paradigma de la programación orientada a objetos.

2. Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.

3. Debería incluir por defecto soporte para trabajo en red.

4. Debería diseñarse para ejecutar código en sistemas remotos de forma segura.

5. Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como

C++.

Para conseguir la ejecución de código remoto y el soporte de red, los programadores de Java a veces

recurren a extensiones como CORBA (Common Object Request Broker Architecture), Internet

Communications Engine o OSGi respectivamente [31].

5.9.2 C++ El lenguaje de programación C++ fue creado en los años 80 por Bjarne Stroustrup basando en el

lenguaje C. El C++ es un lenguaje orientado a objetos al que se le añadieron características y

cualidades de las que carecía el lenguaje C.

De esta forma nació el C++ y como sucedía con el C depende mucho del hardware, tiene una gran

potencia en la programación a bajo nivel, y se le agregaron herramientas para permitir programar a

Page 29: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

29

alto nivel. El C++ es uno de los lenguajes más potentes porque nos deja programar a alto y a bajo

nivel, pero a su vez es difícil de aprender porque es necesario hacerlo casi todo manualmente.

El nombre fue propuesto por Rick Masciatti, al utilizarse C++ fuera de los laboratorios donde se creó.

Con el nombre de C++ que quiso dar a entender que el C++ es una extensión del lenguaje C.

El C++ es un lenguaje de programación híbrido, al que se le puede compilar. Una de las ventajas que

ofrece este lenguaje es que es mucho más sencillo de aprender para los programadores que ya

conocen el C.

El C++ mantiene una enorme compatibilidad con el C principalmente por dos razones: Por la gran

cantidad de código C que existe, y para facilitar el paso de los programadores de C al nuevo lenguaje

C++.

Ya hemos dicho anteriormente que el lenguaje C++ es un lenguaje de programación orientado a

objetos, pero no es un lenguaje orientado a objetos puro. El C++ nació como evolución del C, y desde

su creación fue un lenguaje de programación hecho por programadores con un diseño muy práctico

al que se le fueron añadiendo todos los elementos que se comprobaron eran necesarios sin tener

en cuenta aspectos como su imagen, diseño, etc.

Todo esto ha ocasionado que sus detractores lo usen como argumento de crítica sobre el C++. Pero

por otra parte precisamente esto es esto es lo que le da mayor valor, el ser un lenguaje más

pragmático y sencillo que su antecesor el lenguaje C [32].

Page 30: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

30

6 Desarrollo

En esta sección de describe la metodología implementada para la realización de la aplicación móvil

la cual estará seccionada con base en los 4 objetivos propuestos.

En la sección 6.1 se encuentra la primera etapa implementada que consistió en la división en 4

etapas secuenciales para realizar el sistema de detección de somnolencia, selección de algoritmos

a implementar por etapa, y desarrollo de 3 aplicaciones móviles basadas en los algoritmos

seleccionado con anterioridad. En la sección 6.2 se describe el procedimiento realizado para realizar

el aplicativo móvil final en base a los que se desarrollaron previamente, el objetivo de esto es en

base parámetros de funcionamiento de las primeras 3 aplicaciones seleccionar los algoritmos por

etapa que tuvieron un funcionamiento óptimo. Posteriormente en la sección 6.3 se explica la

interfaz gráfica de usuario y finalmente en la sección 6.4 se enuncian los parámetros tenidos en

cuenta para realizar la pruebas de la aplicación desarrollada, lo resultados obtenidos se encuentra

en la sección 7.3 .

6.1 Métodos de detección de somnolencia basado en procesamiento de imágenes

Mediante el procesamiento de imágenes la detección de somnolencia se puede clasificar en 2

grupos basados en el espectro de luz que se trabaje, el cual es condicionado por el ambiente en el

que se implementa la aplicación, con esto se tienen la detección de somnolencia en el espectro

visible, y la detección de somnolencia en el espectro invisible.

Para la implementación de alguno de los anteriores enfoques se debe seleccionar adecuadamente

el hardware a implementar para realizar la adquisición de imagen. Para trabajar en el espectro de

luz visible se usa una cámara convencional, y para el espectro invisible una cámara infrarroja.

Debido a que para el proyecto se implementará como dispositivo de adquisición de imagen la

cámara convencional integrada en los teléfonos móviles, los algoritmos propuestos están enfocados

para el funcionamiento de la aplicación en ambientes de iluminación diurna.

Para la selección de algoritmo que se adapte a los requerimientos propuestos, se realiza la

subdivisión del sistema total en 4 etapas las cuales se pueden ver en la Figura 8

Figura 8: Etapas del algoritmo para detección de somnolencia

Page 31: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

31

Detección de Rostro: Esta etapa busca disminuir los tiempos de procesamiento y darle una mayor

eficiencia al algoritmo, esto debido a que inicialmente se hace una detección del rostro sobre la

imagen capturada, con la finalidad de determinar el inicio del algoritmo y por consiguiente un

análisis de la imagen, además permite extraer de la imagen un área de interés lo que disminuye

tiempos de procesamiento y garantiza la existencia de una zona ocular aumentando la eficiencia del

aplicativo.

Detección de Ojos: Esta etapa es la encargada de localizar la posición de los ojos en el rostro, para

ello como zona de detección, se implementa la región de interés del rostro localizada en la etapa

anterior. Esto se hace con la finalidad de disminuir el área de detección del algoritmo a implementar

lo cual optimiza tiempos de procesamiento y evita la aparición de falsos positivos que se pueden

presentar por la presencia de regiones de fondo con características similares a los ojos.

Detección de parpadeo: Esta etapa podría considerarse como la más importante del algoritmo ya

que es la que marca la pauta de la presencia o no de somnolencia, se caracteriza por determinar si

la zona ocular presenta los ojos cerrados o abiertos cabe resaltar que debe tener un alto nivel de

precisión ya que es la que determina la eficacia del algoritmo.

Detección de somnolencia: Esta etapa es la encargada de estimar si hay presencia de somnolencia,

para lo cual, mediante el análisis del tiempo de permanencia de los ojos en los dos estados obtenidos

anteriormente, y atendiendo a parámetros de frecuencia de parpadeo de los ojos, se puede obtener

un estimado fiable del nivel de somnolencia.

Con base en las 4 etapas descritas con anterioridad, se seleccionaron algoritmos a implementar por

cada una de estas, quedando de la forma ilustrada en la Figura 9.

Figura 9: Métodos de detección

6.1.1 Métodos detección de rostro

Viola Jones: El algoritmo de viola jones mediante la implementación de características tipo Haar y

el uso de clasificadores en cascada permite realizar la detección del rostro. La librería Opencv

integrada en el software Android Studio cuenta con una la función CascadeClassifier la cual permite

Page 32: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

32

realizar la detección de diferentes objetos mediante VJ, para ello se debe realizar el entrenamiento

de algoritmo en dependencia del objeto o característica a detectar. Con la implementación de un

entrenador de rostros frontales, la funciona CascadeClassifier permite estimar la localización de un

rostro, dando como parámetros, las coordenadas de una región rectangular en la cual está

contenido el rostro detectado.

HOV: Mediante la implementación del algoritmo Histogram of oriented Gradients (HOG) es posible

realizar la detección del rostro en una imagen, para ello se implementó la librería Dlib, la cual

mediante la función face_detect permite realizar la localización de rostro, devolviendo las

coordenadas de una región rectangular en la cual está contenido este.

6.1.2 Métodos detección de ojos

Viola Jones: Utilizando la misma metodología que para la detección del rostro es posible detectar

la zona ocular por medio de un entrenador de ojos, no obstante, para aumentar su precisión se hace

sobre un ROI (Region de interes) arrojado por un detector de rostros

Landmarks: Se realizó la localización de los ojos mediante la implementación de un algoritmo

provisto por la librería Dlib para hallar Landmarks faciales. Debido a que este tipo de algoritmo es

de aprendizaje supervisado, necesita para ser entrenado un archivo que se genera mediante una

extensa base datos de rostros con los puntos de interés clasificados, este archivo puede variar en

dependencia de la cantidad de Landmarks a detectar, para la aplicación realizada se implementó un

entrenador para detectar 68 puntos faciales.

Gracias a los 68 puntos que se generan sobre el rostro es posible seleccionar solo los pertenecientes

a la zona ocular los cuales se encuentran comprendidos entre los puntos 36 al 47 conformando un

total de 12 puntos 6 por cada ojo.

6.1.3 Métodos detección parpadeo

Densidad de Pixeles: Por medio de la ROI del área de los ojos se crea una nueva imagen, la cual se

binariza para realizar un análisis de dicha zona con la finalidad de detectar diferencias entre ojos

cerrados y abiertos basándose en la cantidad de pixeles por área y poder detectar la presencia de

ojos cerrados y por consiguiente somnolencia.

Viola Jones por ausencia de detección: Es posible determinar si los ojos se encuentran abiertos o

cerrados, utilizando entrenadores de detección de ojos en serie, donde el primero se caracteriza por

detectar los ojos independientemente si se encuentran cerrados o abiertos y el segundo solo es

capaz de detectarlos cuando se encuentran abiertos, por consiguiente si los dos detectores detectan

la presencia de ojos se considera que lo ojos se encuentran abiertos caso contrario los ojos se

encuentran cerrados.

Page 33: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

33

Índice EAR: se utiliza para calcular la relación de distancias entre los puntos de referencia verticales

del ojo y las distancias entre los puntos de referencia horizontales del ojo permitiendo detectar el

estado de los ojos, es decir si se encuentran abiertos o cerrados. Para la implementación de este

método es necesario haber realizado previamente la localización de los ojos mediante Landmarks

Figura 10: Detección de Parpadeo por medio del índice EAR

Para hallar la relación de aspecto primero se hallan las distancias euclidianas entre los puntos

(𝑃2, 𝑃6 ) (𝑃3, 𝑃5) (𝑃1, 𝑃4), ver Figura 10.

A=√(𝑃2(𝑥) − 𝑃6(𝑥)) 2 + (𝑃2(𝑦) − 𝑃6(𝑦)) 2

B=√(𝑃3(𝑥) − 𝑃5(𝑥)) 2 + (𝑃3(𝑦) − 𝑃5(𝑦)) 2

C=√(𝑃1(𝑥) − 𝑃4(𝑥)) 2 + (𝑃1(𝑦) − 𝑃4(𝑦)) 2

EAR=𝐴+𝐵

2𝐶

Método detección de Somnolencia (PERCLOSE): Es el método más común, más eficiente y de fácil

implementación para la detección de somnolencia, se caracteriza por determinar un porcentaje de

ojos cerrados mediante la relación de una cantidad de fotogramas determinados y la cantidad de

fotogramas en los cuales se presentan ojos cerrados (ver sección 5.5).

Page 34: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

34

6.1.4 Integración de los algoritmos

A continuación, se muestra en la Figura 11, un esquema general de la integración de las 4 etapas

implementadas, en donde se ilustra los parámetros obtenidos de cada tapa, independiente del

algoritmo a implementar en cada una estas.

Figura 11: integración de las 4 etapas de detección

6.1.5 Configuraciones Desarrolladas

Para poder determinar el método más eficaz para la detección de somnolencia, fue necesario

implementar los métodos anteriormente mencionados y analizarlos.

Por lo cual se implementaron las siguientes 3 configuraciones

6.1.5.1 Configuración 1

Figura 12: Diagrama de la configuración 1 para detección de somnolencia

Los resultados de esta configuración se muestran en la sección 7.1

Page 35: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

35

6.1.5.2 Configuración 2

Figura 13: Diagrama de la configuración 2 para detección de somnolencia

Los resultados de esta configuración se muestran en la sección 7.1.2

6.1.5.3 Configuración 3

Figura 14: Diagrama de la configuración 3 para detección de somnolencia

Los resultados de esta configuración se muestran en la sección 7.1.3

6.2 Diseño de algoritmo que permita detectar somnolencia utilizando el método

escogido anteriormente, tomando en cuenta, pruebas con diferentes individuos y

tiempos de procesamiento de la imagen.

Gracias a los resultados obtenidos se determinó que el método más conveniente para detectar

somnolencia fue por medio de Landmarks se optó por seleccionar este, por lo que fue necesario el

uso de CMake y una clase nativa para poder hacer uso de la librería Dlib y posteriormente disminuir

su tiempo de procesamiento optimizando algunas de las líneas que presentaran mayor tiempo de

procesamiento.

Por medio de depuración del código fue posible observar que las líneas que presentaban mayor

tiempo de procesamiento, eran aquellas que cargaban los entrenadores

get_frontal_face_detector() y shape_predictor_68, las cuales se ejecutaban de manera continua

dentro del código, por lo cual se decidió cargar estos entrenadores una única vez durante el inicio

de la aplicación, esto fue posible ya que son elementos que no se modifican dentro del algoritmo,

no obstante esto conllevó a que se presentara un tiempo de carga al inicio del aplicativo de unos

cuantos segundos, pero gracias a ello se disminuyó el tiempo de procesamiento en un 50%

Si bien el tiempo de procesamiento disminuyó considerablemente (dispositivo de pruebas de 20s a

10s) aún no era suficiente para la detección de somnolencia, una de las soluciones encontradas fue

la activación del modo “Release” que se encuentra deshabilitado en la herramienta de desarrollo

Page 36: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

36

del aplicativo, lo que conllevó a una disminución del 70% en el tiempo de procesamiento (3s en el

dispositivo de pruebas).

Posteriormente para disminuir aún más el tiempo de procesamiento se notó que el uso del

entrenador de la librería Dlib “get_frontal_face_detector()” sobre la imagen, presentaba un tiempo

de procesamiento significativo por lo que se optó por reemplazar este método de detección de

rostro por el de OPENCV y su entrenador “haarcascade_frontalface_alt” y modificar las

coordenadas de ROI generadas por este, con la finalidad de hacer dichas coordenadas compatibles

con el entrenador shape_predictor_68 para poder generar los Landmarks y por consiguiente el

estado de los ojos esto permite una reducción del tiempo de procesamiento entre 125ms a 137ms.

Finalmente, la configuración utilizada se ve en la Figura 15.

Figura 15: Diagrama configuración final

6.2.1 Metodología de la configuración utilizada

La metodología seguida para la realización del proyecto fue la siguiente:

1. Detección de rostro.

2. Detección de Landmarks

3. Hallar relación de aspecto de los ojos (EAR)

4. Detectar somnolencia

5. Generar alarma sonora

6.2.1.1 Detección del Rostro

Esta etapa es la encargada de reconocer el rostro presente en la imagen, para ello de uso el

algoritmo de VJ con ello se obtiene los puntos pertenecientes de la región de interés en donde

se encuentra el rostro:

𝑥, 𝑦, ℎ, 𝑤 = 𝑓𝑎𝑐𝑒(𝐺𝑟𝑎𝑦𝐼𝑚𝑎𝑔𝑒)

Donde:

𝐺𝑟𝑎𝑦𝐼𝑚𝑎𝑔𝑒=Imagen de entrada en escala de grises de dimensión 𝑛𝑥𝑚

𝑥=Punto en el eje x del recuadro del rostro detectado.

𝑦=Punto en el eje y del recuadro del rostro detectado.

ℎ= alto del rectángulo

𝑤=Ancho del rectángulo

Page 37: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

37

6.2.1.2 Detección de Landmarks

El algoritmo para detectar los Landmarks se aplica sobre la región de interés encontrada 68

puntos que delimitan el rostro, ojos, cejas, nariz y boca:

{𝑃1, 𝑃1, 𝑃3, . . . 𝑃68} = 𝐿𝑎𝑛𝑑𝑎𝑚𝑎𝑟𝑘𝑠𝐷𝑒𝑡𝑒𝑐𝑡 (𝑓𝑎𝑐𝑒)

𝑃𝑛 = (𝑥, 𝑦)

Donde:

𝑃𝑛=Coordenada 𝑥, 𝑦 de los puntos detectados

𝑓𝑎𝑐𝑒= Región de interés (rostro)

6.2.1.3 Detectar Somnolencia

Teniendo el valor del EAR promediado de ambos, se establecen los valores del EAR que corresponda

a cuando los ojos están abiertos y cerrados, estos valores se hallaron experimentalmente

obteniéndose un valor de 0.31 y 0.11 respectivamente el cual puede variar en dependencia del

sujeto. Por tal motivo se integraron dos botones del aplicativo para calibrar esta variable en

dependencia del sujeto

Para detectar el cierre de los ojos se comparó el número de fotogramas donde el valor EAR era

menos a “EAR ojos cerrados establecido” + 0.02(tolerancia) y para el caso contrario para detectar

ojos abiertos “EAR ojos abiertos establecido”−0.02(tolerancia)

Finalmente, para el cálculo del PERCLOS se usaron 10 fotogramas con los datos obtenidos del

PERCLOS se generó una escala de nivel de somnolencia de 0% a 100%, donde al llegar a un nivel de

somnolencia de 80% se genera una alarma sonora que solo se detiene cuando el nivel de

somnolencia esta por debajo de 50%.

Otro aspecto a resaltar es la inclusión de una advertencia visual que indica si existe un

reconocimiento facial

Gracias a ello se obtuvo un aplicativo móvil que detectaba el estado de los ojos en tiempo real y por

consiguiente la detección de somnolencia basándose en el índice EAR y PERCLOS.

En la sección 7.2 se analizan los resultados obtenidos de la configuración utilizada.

6.2.2 Requerimiento de la aplicación Los dispositivos móviles requieren de los siguientes requisitos mínimos para ejecutar la aplicación:

● Cámara frontal mínimo 5 megapíxeles

● Android 4.0 o superior

● Espacio de almacenamiento disponible de 300mb

● Aplicación OpenCV Manager v3.3

● archivo (shape_predictor_68_face_landmarks.dat) en la ruta raíz de memoria interna del

celular /storage/emulated/0/

Page 38: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

38

● Procesador Quad Core 1.4Ghz

● Ram de 2Gb

6.3 Diseño de interfaz gráfica de usuario que permita visualizar el funcionamiento del

algoritmo, y realizar pruebas y ajustes de calibración a conveniencia del usuario.

La interfaz gráfica de usuario desarrollada se caracteriza por ser de fácil uso y su principal finalidad

es indicar el funcionamiento del aplicativo y la calibración de algunos parámetros como se observa

en la Figura 16, la interfaz cuenta con los siguientes elementos.

Figura 16: Interfaz del aplicativo

1. Zona de video: Esta zona se caracteriza por brindar en tiempo real la imagen capturada de

la cámara frontal en tiempo real, además de dibujar los Landmarks de la zona ocular cuando

hay un rostro detectado

Page 39: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

39

2. EAR medido: indica el nivel de EAR medido en tiempo real de la zona ocular cuando hay

presencia de un rostro en la imagen

3. Nivel de somnolencia: indica el nivel de somnolencia del individuo y consta de 2 indicadores

uno numérico y uno tipo “Barra de Progreso” estos presentan un rango establecido por los

desarrolladores de 0% a 100%. Este nivel se caracteriza por ir en aumento cada vez que el

individuo cierra los ojos y disminuir cuando abre los ojos, por lo cual si existe mayor cantidad

de fotogramas donde el individuo presenta los ojos cerrados habrá un aumento del nivel de

somnolencia, que al llegar a un nivel de 80% disparará una alarma tipo sonora, la cual solo

se detendrá cuando el sujeto entre en estado de alerta y el nivel de somnolencia esté por

debajo de 50%

4. Botones de Calibración EAR: Debido a que no todas las personas presentan las mismas

características de la zona ocular se implementaron 2 botones “Calibrar Ojos abiertos” y

“Calibrar ojos Cerrados” donde al ser presionados establecen un nuevo valor de EAR de ojos

abiertos y cerrados, con la finalidad de que el aplicativo se auto-ajuste para detectar

somnolencia independientemente del individuo

5. Indicador de Calibración: Indican los valores de EAR establecidos para ojos abiertos y

cerrados

6. Indicador de detección de Rostro: Mensaje de advertencia que indica que si existe o no la

presencia de un rostro

7. Nivel de Luz: indica los rangos de operación de lux en que funciona el aplicativo y el nivel

de lux medido en tiempo real por el dispositivo móvil

6.4 Realizar pruebas objetivas del sistema para determinar su rendimiento frente a

condiciones de iluminación posición y características del individuo. Finalmente, con un algoritmo funcional se procedió a realizar las pruebas de posición, iluminación

y características faciales de diferentes individuos con la finalidad de determinar los parámetros de

funcionamiento del algoritmo y sus limitaciones. Se realizaron pruebas en un grupo de 10 individuos,

de rasgos distintivos como, género, color de piel, barba y accesorios presentes en los rostros. Los

datos obtenidos se pueden observar en la tabla 6, presente en la sección 7.4 de análisis de

resultados.

Page 40: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

40

7 Análisis de resultados

A continuación, se muestran los resultados obtenidos organizados del siguiente modo: En la primera

parte de muestran los resultados obtenidos de las pruebas realizadas para los 3 primeros aplicativos

desarrollados, se analizó qué configuraciones presentan el funcionamiento más óptimo. En la

sección 7.2 se muestran los resultados obtenidos de la aplicación final realizada en donde se realiza

una descripción de las pruebas de rendimiento implementadas.

7.1 Métodos de detección de somnolencia Para evaluar el funcionamiento de los algoritmos implementados, se estimaron parámetros como

tiempos de procesamiento, parpadeos detectados y falsas detecciones.

7.1.1 Configuración 1 Los resultados obtenidos al realizar el aplicativo móvil en base a la configuración seleccionada se

muestran en la Figura 17 y Figura 18, en donde la detección del rostro se encuentra resaltada en un

rectángulo verde, y la zona ocular detectada en una elipse roja.

Figura 17 Funcionamiento de la configuración 1 ojos cerrados

Page 41: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

41

Figura 18: Funcionamiento de la configuración 1 ojos abiertos

Para las pruebas de los métodos solo se tomó en cuenta la detección de parpadeos ya que dentro

esta se engloba el comportamiento de todo el sistema, en la Tabla 1 se encuentran los resultados

obtenidos.

Tabla 1: Resultados Obtenidos de la configuración 1

Parpadeos generados 50

Parpadeos Detectados 8

Falsos Positivos 3

Tiempo de procesamiento 60 ms

Se evidenció que el funcionamiento de el algoritmo no cumplía con los requerimientos deseados,

en base a la tabla se puede estimar que la eficiencia de detección de parpadeos es del 16%, y esto

se dio a que el método de detección de parpadeo implementado (densidad de pixeles), es muy

sensible a cambios en las condiciones de iluminación. Por esta razón esta configuración fue

descartada.

7.1.2 Configuración 2 En la Figura 19 se muestran los resultados obtenidos al realizar una aplicación implementando la

configuración 2 (ver sección 6.1.5.2). En color verde se encuentra resaltado el rostro localizado, el

Page 42: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

42

rectángulo rojo se resalta la subregión del rostro de delimita la zona de los ojos, y el azul de tiene la

ubicación exacta de los ojos detectados.

Figura 19: Funcionamiento de la configuración 2

En la Tabla 2 se muestran la prueba realizadas, en donde se puede estimar que el rango de detección

de parpadeos es aproximado al 70%.

Tabla 2: Resultados Obtenidos de la configuración 2

Parpadeos generados 50

Parpadeos Detectados 35

Falsos Positivos 20

Tiempo de procesamiento 83 ms

EL método implementado presenta un funcionamiento aceptable, comparándolo con el anterior.

Las desventajas de este son que su correcto funcionamiento depende de la alineación del rostro con

la cámara y de la permanencia de la imagen sin variaciones bruscas de movimientos, si estas

condiciones no se cumplen, el aplicativo presenta un funcionamiento que no cumple con los

requerimientos planteados. Debido a lo anterior esta configuración fue descartada.

7.1.3 Configuración 3 En la Figura 20(a)se muestran los resultados obtenidos al realizar una aplicación implementando la

configuración 3 (ver sección 6.1.5.3 ). En color verde se encuentran resaltados los puntos de

Page 43: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

43

Landmarks generados por la librería Dlib por medio de los entrenadores get_frontal_face_detector

() y shape_predictor_68 el primero para detectar la localización del rostro, y el segundo para generar

los 68 puntos principales sobre el rostro.

En la Figura 20 (b) se encuentra la unión de un rango de puntos Landmarks del 36 al 47 conformando

un conjunto de 12 puntos, 6 por cada ojo, permitiendo un dibujo de la zona ocular y por consiguiente

un análisis más preciso.

Figura 20: Funcionamiento de la configuración 3

(a) 68 puntos de referencia Landmarks

(b) Unión de puntos de la zona ocular

Tabla 3: Resultados Obtenidos de la configuración 3

Parpadeos generados 50

Parpadeos Detectados 48

Falsos Positivos 1

Tiempo de procesamiento

20s

Page 44: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

44

Como se observa en la Tabla 3 anterior este método presenta mayor precisión que los métodos

anteriores, el falso positivo que se presentó fue debido a un nivel de lux muy bajo, y los parpadeos

no detectados fue debido a niveles de luz muy altos, por lo cual es necesario establecer los rangos

de lux de funcionamiento.

Pese a esto, este método presenta dos grandes inconvenientes el primero es que la librería Dlib no

esta implementada para java lenguaje de programación de Android Studio y el segundo es que

conlleva tiempos de procesamiento altos, llegando hasta los 20 segundos en el dispositivo utilizado

para la prueba, haciendo del método eficaz pero ineficiente para la detección de somnolencia en

tiempo real.

7.2 Configuración implementada y resultados obtenidos En la Figura 21,Figura 22, y Figura 23 se observan los resultados obtenidos de la versión final de la

aplicación para detectar somnolencia en diferentes sujetos. La descripción del desarrollo del

aplicativo se encuentra en la sección 6.2.

Figura 21: Funcionamiento de la configuración final

Page 45: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

45

Figura 22: Funcionamiento de la configuración final

Figura 23: Funcionamiento de la configuración final

Análisis: Como se observa en las diferentes pruebas el aplicativo es indiferente a las características

del sujeto siempre en cuando no se obstruya la zona ocular con cabello u otro objeto, no obstante,

cabe resaltar que en presencia de gafas transparentes puede haber un funcionamiento del aplicativo

con algunas dificultades por lo cual no es recomendable para conductores con gafas.

Page 46: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

46

Con respecto al nivel de luz se observó que por debajo de 25 lux se presentaba un funcionamiento

inestable por lo que se recomienda el uso del aplicativo por encima de los 40 lux tomando en cuenta

que el rostro debe estar sometido a una luz uniforme (evitar sombras del rostro).

7.3 Pruebas objetivas del aplicativo. Las pruebas de la aplicación se realizaron en un vehículo particular con ambiente de iluminación

diurno. Se implementaron dos ubicaciones del teléfono móvil, para el óptimo funcionamiento de la

aplicación, como se pueden ver en la Figura 24.

Figura 24: Ubicaciones utilizadas para las pruebas del aplicativo (a) Ubicación Frontal (b) Ubicación Lateral

Page 47: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

47

En la Figura 25 y Figura 26 se muestra ejemplos de funcionamiento de la aplicación en diferentes

sujetos. Para la Figura 25(a) y Figura 26(a), se tiene la aplicación funcionando en la posición frontal

y para la Figura 25(b) y Figura 26(b), se tiene el teléfono móvil ubicado de forma lateral.

Figura 25: Funcionamiento del aplicativo en diferentes posiciones sujeto 1 (a) Funcionamiento en posición frontal (b) Funcionamiento en posición lateral

Figura 26: Funcionamiento del aplicativo en diferentes posiciones sujeto 2 (a) Funcionamiento en posición frontal (b) Funcionamiento en posición lateral

Page 48: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

48

Análisis: En las figuras anteriores se observa el funcionamiento de la aplicación en diferentes

posiciones y diferentes individuos donde el aplicativo logró un nivel de detección de somnolencia

del 94% y un tiempo de respuesta bastante corto como se observa en la Tabla 4.

Tabla 4: Resultados Obtenidos de la configuración final

Pruebas realizadas en diferentes individuos 50

Detección de somnolencia 47

Falsos positivos 0

Tiempo de detección entre 1,28s a 3s

7.4 Casos de no detección o mal funcionamiento

A continuación, se muestran ejemplos en donde la aplicación no presenta un funcionamiento

adecuado.

Figura 27: Funcionamiento del aplicativo en sujetos con gafas

Análisis: Como se observa en la Figura 27 el aplicativo puede funcionar con usuarios con gafas no

obstante pueden presentarse errores de no detección de rostro o no detección de somnolencia,

cuando las estructuras son no transparentes y o brillos sobre los lentes obstaculizan la zona ocular

impidiendo un buen funcionamiento del aplicativo.

Page 49: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

49

Figura 28: Falsa detección de rostro

En la Figura 28 se sucede observa una falsa detección las cuales se dan debido a una errónea

detección del rostro, en las pruebas realizadas se obtuvo un 0.5% de detección de falsos positivos.

Figura 29: No detección de Rostro, por rostro incompleto

Page 50: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

50

En la Figura 29 se observa un caso en el cual el aplicativo no consigue detectar el rostro ya que parte

de este no se encuentra dentro de la imagen, para ello es de vital importancia ubicar el teléfono

móvil de manera correcta.

Figura 30: No detección de Rostro, por rostro orientado de perfil

En la Figura 30se observa la no detección de rostro cuando existe presencia de este, esto se da

debido a la orientación del rostro ya que el aplicativo presenta inestabilidad cuando el rostro se esta

de perfil

Figura 31: Funcionamiento del aplicativo a diferentes condiciones de luz

Page 51: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

51

En la Figura 31 se observa un rostro sometido ambientes de iluminación variados para estimar el

rango de iluminación en el cual la aplicación operará dentro de parámetros establecidos, después

de varias pruebas se determinó que el aplicativo presenta un funcionamiento óptimo entre los 40 y

100 lux los cuales preferiblemente deberían estar distribuidos sobre todo el rostro.

Gracias a las pruebas anteriores se establecieron los rangos de funcionamiento del aplicativo en la

Tabla 5

Tabla 5: Rangos de funcionamiento del aplicativo

Distancia máxima del rostro al dispositivo 60 cm

Posición (x) del dispositivo con respecto al rostro frontal

entre -20° y 20°

Posición (y) del dispositivo con respecto al rostro frontal

entre -10° y 10°

Nivel de luz entre 40 lux y 100 lux

Funcionamiento con gafas u otro elemento sobre el rostro

No aplica

7.5 Pruebas realizadas en sujetos de diferentes características

En Tabla 1 se pueden observar los resultados de detección de somnolencia en sujetos con diferentes

características bajo los rangos de funcionamiento del aplicativo.

Tabla 6: Resultados pruebas en sujetos con diferentes rasgos

Sujeto Características Detección de somnolencia

Detectados No detectados Falsos positivos

1 Hombre, sin barba, piel clara, sin parpados caídos

20 0 0

2 Hombre, con barba, piel morena, sin parpados caídos

19 1 0

3 Mujer, piel clara, con parpados caídos

19 1 1

4 Hombre, con barba, piel oscura, sin parpados caídos

20 0 0

Page 52: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

52

Análisis

Según las pruebas realizadas se estimó que la aplicación presenta un comportamiento eficiente en

individuos de diferentes rasgos físicos, se estimó que la eficiencia en la detección de somnolencia

es de aproximadamente 94.5%, lo cual hace al aplicativo desarrollado funcional en entornos de

aplicación reales.

7.6 Resumen de resultados

Se obtuvo un aplicativo capaz de detectar somnolencia por medio del algoritmo de viola jones para la detección de rostro, Landmarks para la detección de ojos, índice EAR para detección de parpadeo y PERCLOS para detección de somnolencia. Para permitir su funcionamiento independientemente de las características del sujeto se realizó una interfaz que permite la calibración y la visualización del funcionamiento del aplicativo. Por medio de las pruebas realizadas se establecieron unos rangos de funcionamiento de la aplicación como se muestra en la Tabla 5 y unos requisitos de hardware mínimos establecidos en la sección 6.2.2 probados en un HUAWEI y5 2017, y un Lenovo A6020I36.

Dichas condiciones dieron una velocidad de procesamiento de 135ms permitiendo una detección de somnolencia en tiempos entre 1 y 3 segundos finalmente se obtuvo una eficacia del 94.5% en un grupo de 10 sujetos con diferentes características faciales.

5 Mujer, con fleco, piel clara, con parpados caídos

18 2 0

6 Hombre asiático, sin barba

17 3 2

7 Hombre con parpados caídos, piel clara

18 2 0

8 Hombre con bigote, piel clara

20 0 0

9 Mujer, sin parpados caídos, sin fleco

20 0 0

10 Mujer, parpados caídos, piel oscura, con fleco

18 2 1

Page 53: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

53

8 Conclusiones

Por medio de técnicas de procesamiento digital de imágenes se logró realizar un aplicativo móvil que, mediante la detección del rostro y el posterior análisis de la zona ocular, logra detectar el estado de somnolencia de conductores en ambiente diurno, bajo ciertos parámetros.

De las 3 configuraciones implementadas, la que presentó un mejor comportamiento fue en la cual se utilizó para la detección de rostro el algoritmo de Viola Jones, la detección de los ojos por Landmarks, los parpadeos mediante EAR y la detección de somnolencia por medio de PERCLOS, fue la configuración en la cual se pudo evidenciar un comportamiento óptimo para la detección de somnolencia en las condiciones preestablecidas.

El desarrollo de aplicaciones para teléfono móvil que impliquen procesamiento digital de imágenes, tienen que ser diseñadas con especial cuidado, debido a que si bien los celulares actuales cuentan con requerimientos de hardware más que suficientes para ejecutarlas como por ejemplo memoria Ram mayor a 1Gb, procesadores Dual Core o superiores, el mal desarrollo de algoritmos, manipulaciones complejas de imágenes mal implementadas entre otros factores, pueden influir en el funcionamiento de la aplicación, disminuyendo la cantidad de fotogramas por segundo durante la ejecución, lo cual implica que la aplicación sea ineficiente si se requiere que funcione a tiempo real.

Las técnicas de procesamiento digital de cuya aplicación requiera estar expuestas a entornos de aplicación no controlados, con ambientes de iluminación variables entre (40 a 100) lux y patrones de imágenes con alto grado de complejidad como objetos de diferentes formas tamaños y colores, presentan un funcionamiento robusto al desarrollarse con técnicas de procesamiento basadas en algoritmos de aprendizaje automático, cuyo funcionamiento está ligado a un entrenamiento previo.

Otro aspecto a resaltar es que, al reducir el área de detección de somnolencia a solo la región de interés del rostro, ayuda a que el algoritmo sea más selectivo, disminuyendo el tiempo de procesamiento en aproximadamente 50%, ya que el área a analizar es mucho menor y se garantiza la existencia de una zona ocular.

Page 54: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

54

9 Trabajo futuro

Como aspectos por mejorar de la aplicación móvil desarrollada se tiene la implementación de un entrenador propio para la detección del rostro, el cual permita la detección de este con ángulos de inclinación mayores a 20°, y disminuir tiempo de procesamiento por fotograma a menos de 100ms mediante la detección de solo los 12 Landmarks pertenecientes a los ojos, es decir desarrollar un entrenador que permita esto. Otro aspecto por trabajar es mejorar los requerimientos previos para instalar la aplicación, es decir dejar de usar Opencv manager, e integrar el entrenador (shape_predictor_68_face_landmarks.dat directamente en la aplicación.

Añadiendo a esto, actualmente los celulares de última generación cuentan con una cámara infrarroja lo que permitirá trabajar sobre el espectro invisible de una imagen y por consiguiente quitar las limitaciones de luz volviendo el algoritmo anterior mucho más eficiente y versátil.

Otro aspecto por mejorar es la optimización de la aplicación para que funcione en usuarios que tengan gafas de fórmula u otros elementos que dificulten la detección de la zona ocular.

Page 55: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

55

10 BIBLIOGRAFÍA

[1] R. T. ]. Roehrs T, Carskadon MA, Dement WC, “Daytime Sleepiness and alertness,” Princ. Pract. Sleep Med., vol. 4Th, pp. 39–49, 2005.

[2] P. H. C. GÓMEZ, “Que no lo agarre un microsueño,” Bogota, 14-Oct-2017.

[3] N. Caracol, “Microsueños causan imprevistos accidente,” 2017.

[4] Carlos Francisco Fernández R., “Microsueños: la muerte puede llegar en un parpadeo,” El tiempo, 2018. [Online]. Available: https://www.eltiempo.com/vida/salud/peligros-de-los-microsuenos-cuando-se-esta-manejando-308310. [Accessed: 09-Apr-2019].

[5] Q. Liao, J. Hong, and M. Jiang, “A comparison of edge detection algorithm using for driver fatigue detection system,” ICIMA 2010 - 2010 2nd Int. Conf. Ind. Mechatronics Autom., vol. 1, pp. 80–83, 2010.

[6] F. D. Gao and M. X. Hou, “Study on the detection of locomotive driver fatigue based on image,” ICCET 2010 - 2010 Int. Conf. Comput. Eng. Technol. Proc., vol. 7, pp. 612–615, 2010.

[7] P. Chen, “Research on Driver Fatigue Detection Strategy Based on Human Eye State,” pp. 619–623, 2017.

[8] H. Singh, J. S. Bhatia, and J. Kaur, “Eye tracking based driver fatigue monitoring and warning system,” India Int. Conf. Power Electron. IICPE 2010, 2011.

[9] X. Luo, R. Hu, and T. Fan, “The Driver Fatigue Monitoring System Based on Face Recognition Technology,” no. 45, pp. 384–388, 2013.

[10] R. Ahmed and M. F. Hossain, “Robust driver fatigue recognition using image processing,” 2014 Int. Conf. Informatics, Electron. Vis., pp. 1–6, 2014.

[11] M. S. Devi, “Driver Fatigue Detection Based on Eye Tracking,” pp. 649–652, 2008.

[12] H. Dong and M. E. I. Xie, “REAL-TIME DRIVER FATIGUE DETECTION BASED ON SIMPLIFIED LANDMARKS OF AAM,” no. d, pp. 5–8, 2010.

[13] T. Xinxing, Z. Pengfei, and W. Ping, “Real-Time Image-based Driver Fatigue Detection and Monitoring System for Monitoring Driver Vigilance,” pp. 4188–4193, 2016.

[14] C. Science and C. Science, “Android OpenCV Based Effective Driver Fatigue and Distraction Monitoring System,” pp. 262–266, 2015.

[15] J. Guevara-d, “Deteccion de Rostros por medio de las Wavelets de Morlet.”

[16] D. Alberto and G. Juan, “Algoritmos de detección y seguimiento de rostro dirigidos a videojuegos,” vol. 1, no. 1, pp. 1–7, 2016.

[17] C. Society, “IEEE Standard Glossary of Image Processing and Pattern Recognition Terminology.”

[18] R. J. Moreno, “SISTEMA DE DETECCION DE NIVEL DE CANSANCIO EN CONDUCTORES MEDIANTE TECNICAS DE VISION POR COMPUTADOR,” 2011.

Page 56: BRAYAN ALIRIO BAQUERO CARDOZO COD: 20172383004 BRAYAN ALEXANDER TORRES …repository.udistrital.edu.co/bitstream/11349/22359/1/... · 2019-11-19 · brayan alexander torres malaver

56

[19] F. Detection, D. Images, and U. Cascade, “Faces Detection in Digital Images Using Cascade Classifiers,” no. 38, pp. 1–6, 2008.

[20] V. Kazemi and J. Sullivan, “One Millisecond Face Alignment with an Ensemble of Regression Trees.”

[21] E. G. Wiechers, “Oftamologia en la practica de medicina general.” Mc Grau Hill Educcion, 2009.

[22] J. Mw, “The Amplitude-Velocity Ratio of Blinks : A New Method for Monitoring Drowsiness Aim : Methods : Results :,” 2003.

[23] O. Of and M. Carriers, “PERCLOS : A Valid Psychophysiological Measure of Alertness As Assessed by Psychomotor Vigilance.”

[24] “Formatos de imagen, audio y video,” 2012. [Online]. Available: http://www.ite.educacion.es/formacion/materiales/155/cd/pdf/04_video.pdf.

[25] C. S. Figueroa Portilla, “El uso del smartphone como herramienta para la búsqueda de información en los estudiantes de pregrado de educación de una universidad de Lima Metropolitana,” Educ. Vol. 25, Núm. 49, 2016.

[26] C. A. Vanegas, “DESARROLLO DE APLICACIONES SOBRE ANDROID,” Rev. vínculos, vol. 9, no. 2 SE-Investigación y Desarrollo, Dec. 2012.

[27] “Conoce Android Studio | Android Developers.” [Online]. Available: https://developer.android.com/studio/intro?hl=es-419. [Accessed: 17-Aug-2019].

[28] “About.” [Online]. Available: https://opencv.org/about/. [Accessed: 17-Aug-2019].

[29] “dlib C++ Library.” [Online]. Available: http://dlib.net/. [Accessed: 17-Aug-2019].

[30] “CMake.” [Online]. Available: https://cmake.org/. [Accessed: 17-Aug-2019].

[31] “¿Qué es el lenguaje de programación JAVA? - Base de Conocimientos - ICTEA.” [Online]. Available: http://www.ictea.com/cs/knowledgebase.php?action=displayarticle&id=8790. [Accessed: 17-Aug-2019].

[32] “Lenguaje de Programación C++.” [Online]. Available: http://www.larevistainformatica.com/C++.htm. [Accessed: 17-Aug-2019].