Seguimiento ocular para análisis del comportamiento mediante ANN
56
0
0
Texto completo
(2) Este Trabajo Fin de Máster se ha depositado en la ETSI Informáticos de la Universidad Politécnica de Madrid para su defensa.. Trabajo Fin de Máster Máster Universitario en Inteligencia Artificial Título: Seguimiento ocular para análisis del comportamiento mediante ANN Julio - 2020. Autor(a): XinZhe Jin Tutor(a): Javier de Lope Asiaín Departamento de Inteligencia Artificial ETSI Informáticos Universidad Politécnica de Madrid.
(3) Resumen El uso del aprendizaje profundo o deep learning se ha extendido a una gran cantidad de campos en los últimos años. Desde aplicaciones para el procesamiento de lenguaje natural para la clasificación de textos o generación de descripciones hasta el análisis de imágenes médicas con las que se obtienen una mayor precisión que con el propio ojo humano. Todos estas aplicaciones han conseguido resultados notables en cada uno de sus respectivos campos y demuestran el potencial del aprendizaje profundo para resolver problemas complejos. Por consiguiente en este trabajo, se ha tratado de resolver el problema del seguimiento ocular, mediante el uso de técnicas de aprendizaje profundo. Se ha preparado varios datasets con los que se han entrenado un grupo de redes neuronales, con el fin de identificar el punto que observa el usuario en la pantalla. Así mismo, se han comparado y analizado el aprendizaje de cada una de las redes. Finalmente, se han comentado sobre los resultados obtenidos por cada una. Palabras Clave - CNN, Visión por Computador, Seguimiento Ocular, Aprendizaje profundo, Bioinfomática. i.
(4)
(5) Abstract Deep learning algorithms are spreaded to a large number of fields in the recent years. From fields like natural language processing, where a tons of applications are created such as texts classification or image caption generators, to medical image analysis that have obtained a better precision than the human eye, related to the computer vision field. All of these applications have achieved remarkable results in each of their respective fields and demonstrate the potential of deep learning to solve complex problems. Therefore, in order to solve the eye tracking problem, a deep learning technique is implemented. Several neural networks are trainned with some datasets that are created manually. Finally, the trainning process are compared and discussed. Keywords - CNN, Computer Vision, Eye tracking, Deep learning, Bioinformatics. iii.
(6)
(7) Agradecimientos Quiero agradecer en primer lugar a mi tutor, Javier, por permitir realizar este trabajo y ayudarme con el desarrollo de este proyecto a lo largo de todos estos meses. También quiero dar las gracias a mis amigos y familiares por apoyarme durante todo este año, y especialmente durante la cuarentena. Sin su participación, no podría haber obtenido los resultados que he obtenido en este proyecto. Finalmente, quiero agradecer a mis compañeros y profesores del máster, por ayudarme y enseñarme las distintas áreas de la inteligencia artificial.. v.
(8)
(9) Tabla de contenidos 1. Introducción 1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Estructura del documento . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Estado del Arte 2.1. Importancia del uso del deep learning 2.2. Visión por computador . . . . . . . . . 2.3. Procesamiento de imágenes . . . . . . 2.4. Clasificación de imágenes . . . . . . . . 2.5. Detección de objetos . . . . . . . . . . . 2.6. Detección de enfermedades . . . . . . . 2.7. Detección de personas . . . . . . . . . 2.8. Detección facial y sus componentes . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. 1 2 3 5 5 5 6 7 8 9 10 11. 3. Evaluación de riesgos. 13. 4. Seguimiento de la mirada 4.1. Dataset . . . . . . . . . . . . . . 4.1.1. Calibración . . . . . . . . 4.1.2. Detección facial . . . . . . 4.1.3. Extracción de los ojos . . 4.1.4. Clasificación de los datos 4.1.5. Datasets generados . . . 4.2. Redes neuronales . . . . . . . . 4.2.1. VGG19 . . . . . . . . . . . 4.2.2. InceptionV3 . . . . . . . . 4.2.3. Xception . . . . . . . . . . 4.2.4. ResNet50 . . . . . . . . . 4.2.5. Inception-ResNet V2 . . . 4.2.6. DenseNet . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. 15 15 15 16 18 18 19 19 20 21 22 23 24 25. 5. Resultados 5.1. Entrenamiento con imágenes de varios usuarios 5.2. Entrenamiento con imágenes una única persona 5.3. Comentarios a los resultados con el uso de redes 5.4. Otras pruebas realizadas . . . . . . . . . . . . . . 5.5. Comparación con métodos clásicos . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. 27 27 30 33 34 35. . . . . . . . . . . . . .. . . . . . . . . . . . . .. 6. Conclusiones. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. 37 vii.
(10) TABLA DE CONTENIDOS 7. Líneas futuras. 39. viii.
(11) Índice de figuras 1.1. No de artículos publicados en el campo de la bioinformática(Imagen de [Bacciu et al., 2018]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1. 2.1. Imagen original y con el nuevo estilo (Imagen de [Gatys et al., 2016]) . . 6 2.2. Detección de múltiples categorías dentro de una imagen.(Imagen de [Potdar et al., 2018]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3. Imágenes del dataset.(Imagen de [Talo et al., 2019]) . . . . . . . . . . . . 9 2.4. Estructura de la aplicación. (Imagen de [Grzeszick et al., 2017]) . . . . . 10 2.5. Mapas creados por la red e imágenes con el contorno (Imagen de [Yang et al., 2017]) 12 4.1. 4.2. 4.3. 4.4.. Plantilla usada para la calibración en la pantalla . . . . . . . . . . . . . . 16 Puntos de referencia que usa DLIB (Imagen de [Korshunov and Marcel, 2018]) 17 Recorte de los ojos (Imagen tomada de la implementación de este trabajo) 18 Etiquetas asignadas a cada caso. (Imágenes tomadas de la propia implementación) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.5. Estructura de la red VGG19 (Imagen de [Zheng et al., 2018]) . . . . . . . 21 4.6. Estructura de la red InceptionV3 (Imagen de [Giri and Joshi, 2019]) . . . 22 4.7. Estructura de la red Xception (Imagen de [Leonardo et al., 2018]) . . . . 22 4.8. Cálculo de los pesos de una red estándar y residual (Imagen de [He et al., 2016]) 23 4.9. Estructura de la red ResNet50 (Imagen de [Mahmood et al., 2020]) . . . 23 4.10.Estructura de la red ResNet (Imagen tomada de [Alemi, 2016]) . . . . . . 24 4.11.Estructura de la red DenseNet (Imagen de [Lodhi and Kang, 2019]) . . . 25 5.1. Gráficas de la precisión de las redes entrenadas con datos con múltiples usuarios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Gráficas del error calculado de las redes entrenadas con datos con múltiples usuarios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3. Matriz de confusión de los resultados obtenidos con el dataset de múltiples personas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4. Gráficas de la precisión de las redes entrenadas con datos de una sola persona. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5. Gráficas del error calculado de las redes entrenadas con datos de una sola persona. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6. Matriz de confusión de los resultados obtenidos con el dataset de una persona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ix. 28 29 30 31 32 33.
(12)
(13) Capítulo 1. Introducción Hace dos décadas, el campo conocido como aprendizaje profundo o deep learning (DL) se encontraba totalmente parado debido a la complejidad y falta de recursos para la ejecución de estas técnicas. Sin embargo, con el paso de los años y el avance de las tecnologías, este campo ha vuelto a resurgir hasta convertirse hoy en día en uno de los campos más investigados actualmente. La razón de este resurgimiento fue debido a los artículos publicados por [Bengio et al., 2007], [Hinton et al., 2006], [Ranzato et al., 2007] donde aparece por primera vez la idea de utilizar una red de neuronas profunda. Agregando a esta idea, un algoritmo propuesto varias décadas atrás, en [Rumelhart et al., 1988] llamado backpropagation, se logró entrenar una red con múltiples capas. Con las ideas anteriores se dio inicio a la época del DL, llegando hasta el día de hoy donde se aplican estos algoritmos en otras disciplinas. Un ejemplo de este fenómeno se puede apreciar en el campo de bioinformática, en la que año tras año va en incremento el número de aplicaciones que se relacionan a esta disciplina.. Figura 1.1: No de artículos publicados en el campo de la bioinformática(Imagen de [Bacciu et al., 2018]) 1.
(14) 1.1. Objetivos En la figura 1.1 se muestra una gráfica del número de artículos que se publican anualmente en el campo de la bioinformática relacionados con el deep learning. Observando la tendencia de la gráfica se puede apreciar que crece a una velocidad exponencial dando a entender el impacto que ha tenido el aprendizaje profundo dentro de la disciplina y que es una solución más que viable. Partiendo de las premisas anteriores, se pretende desarrollar en este trabajo un sistema basado en deep learning capaz de tratar el problema del seguimiento ocular o eyetracking. Este proceso consiste en seguir la mirada del usuario e identificar el punto que observa en la pantalla. Al identificar este proceso de seguimiento, es posible analizar y extraer información del usuario. Luego, esta información puede ser utilizado para mejorar la interacción persona-ordenador. Además, es útil para otros campos como el marketing a la hora de crear nuevos productos o la psicología humana para descubrir el estado de ánimo del usuario. Actualmente, existen varios métodos dentro del área del seguimiento ocular. Estos se dividen en tres categorías distintas a la hora de realizar el seguimiento ocular. La primera categoría de métodos son de tipo invasivo en la que se utilizan algo adjunto al ojo como una lente para seguir el movimiento ocular. Aunque este tipo de técnicas permiten medir al detalle el movimiento, son muy molestos para el usuario por lo que su uso no está muy generalizado. Debido a lo molesto que puede ser el uso de una lente para el seguimiento, aparecieron los métodos no invasivos que no requiere contacto con el ojo. Un ejemplo de este de métodos es utilizar una luz infrarroja, utilizando el reflejo en la córnea para rastraer el movimiento. Este tipo de métodos son los más escogidos por no ser invasivos y tener un coste bajo, sin embargo, tienden a tener ciertas imprecisiones a la hora del seguimiento al no poder detectar la pupila o la córnea. Un ejemplo de este tipo de técnicas en el mercado son las gafas FOVE [fov, ] que permiten al usuario sumergirse en un entorno virtual y simular su mirada dentro del mundo. La última categoría de métodos para el seguimiento ocular, son los conocidos como el uso de potenciales eléctricos, que también son de tipo invasivo debido a que precisan del uso de electrodos que se colocan alrededor de los ojos para medir el potencial de estos. La señal obtenida conocida como electrooculograma (EOG) permite saber en que posición se encuentra el ojo. La ventaja principal de estas técnicas es que permiten realizar el seguimiento incluso cuando el usuario cierra los ojos, pero al igual que en el primer grupo de métodos tienden a ser invasivos y pueden llegar a molestar al usuario.. 1.1.. Objetivos. El objetivo principal de este trabajo es desarrollar un sistema automatizado para el seguimiento ocular del usuario delante de la pantalla del ordenador. Este sistema pretender ser incluso menos invasivo que las luces infrarrojas que se utilizan actualmente y tener una precisión al menos tan detallada como los métodos invasivos. Para crear este sistema, se usarán las técnicas más recientes del deep learning para crear un modelo capaz de identificar el punto que observa el usuario. Para realizar este seguimiento, se utilizará una webcam integrada dentro de un ordenador sin modificar para rastrear el movimiento del sujeto. Permitiendo de esta manera un 2.
(15) Introducción sistema de bajo coste y simple y que además no requiere de ningún contacto tanto físico o de otros medios para analizar el movimiento del ojo. Para completar este proyecto se han asignado distintos objetivos específicos: • Revisar el estado del arte de las técnicas y aplicaciones en el campo de visión por computador donde se aplica el deep learning. • Crear un algoritmo para permita calibrar el sistema que detecta la mirada de los usuarios para facilitar luego el seguimiento ocular. • Crear un algoritmo para identificar la sección facial y de los ojos de los usuarios. • Preparar un conjunto de datos para entrenar y validar cada una de las redes neuronales que se van a entrenar en este trabajo. • Investigar y seleccionar las posibles redes que puedan dar solución al problema de este trabajo. • Obtener unos resultados en las redes seleccionadas que sean superiores o iguales en cuanto a precisión frente al resto de métodos existentes para el seguimiento ocular. • Demostrar qué tipo de modelo es más preciso en función del tipo de datos que se utilicen para el entrenamiento.. 1.2.. Estructura del documento. Este documento se divide en varios capítulos, el primer y actual capítulo introduce de manera general el tema del deep learning e introduce el problema que se va tratar en este trabajo junto a los objetivos fijados. En el segundo capítulo se realiza un repaso sobre el estado actual en el campo del deep learning, analizando alguna de las aplicaciones propuestas en los últimos años, enfocándose principalmente en aplicaciones para la detección facial y el seguimiento ocular. En el tercer capítulo se explica en primer lugar, el procedimiento seguido para generar los datasets. A continuación, se detallan cómo ha sido el desarrollo de los distintos algoritmos y técnicas creadas para la detección facial y de los ojos. Finalmente se describen las estructuras de las redes neuronales escogidas. En la evaluación de riesgos se comentan sobre los posibles riesgos que se han tenido en cuenta a la hora de realizar el proyecto. En el quinto capítulo se exponen los resultados obtenidos por las redes entrenadas y se comparan las precisiones obtenidas por cada una para elegir el modelo final. En el penúltimo capítulo se comentan las conclusiones extraídas después de analizar los resultados obtenidos, además de la viabilidad en el uso del aprendizaje profundo en problemas relacionados con el campo de visión por computador. Finalmente, en el último capítulo se describen las futuras líneas de trabajo que se proponen para mejorar este proyecto.. 3.
(16)
(17) Capítulo 2. Estado del Arte En este capítulo, se ha realizado en primer lugar una introducción de las ventajas que aportan el uso del deep learning. Seguido de una revisión de los trabajos publicados dentro del campo de visión por computador en la que se aplican técnicas de deep learning para resolver distintos problemas. Finalmente, se mencionan algunas aplicaciones de este campo aplicadas a la bioinfomática, donde uno se puede encontrar con aplicaciones para la detección de enfermedades o para detectar la parte facial de una persona y sus componentes.. 2.1.. Importancia del uso del deep learning. El extendido uso del aprendizaje profundo hoy en día no ha sido casualidad, sino que ha sido provocado por los avances tanto en el propio campo como en herramientas tecnológicas actuales. Donde, gracias a estos avances se ha permitido ejecutar este tipo de algoritmos en un tiempo mucho más corto y obtener mejores resultados. En [BUBER and DIRI, 2018], los autores comparan la diferencia en el tiempo de ejecución de una red utilizando una unidad de procesamiento gráfico (GPU) contra una unidad de procesamiento centrar (CPU), donde la primera puede llegar a ejecutarse hasta 5 veces más rápida que una CPU, ya que permiten el procesamiento multi-hilo o multi-core. Esta tendencia también se ha visto favorecida por la aparición de nuevas herramientas que facilitan su desarrollo, como pueden ser las librerías Tensorflow, Keras o Pytorch que permiten programar redes neuronales sin tener abordar lenguajes de bajo nivel. Finalmente, con la divulgación de nuevos algoritmos de optimización, como los que se los que se presentan en [Duchi et al., 2011] y [Kingma and Ba, 2015] y nuevas técnicas de regularización, se han logrado solventar problemas como el overfitting, además de agilizar el proceso de convergencia hacia el óptimo.. 2.2.. Visión por computador. En los últimos años, un campo que se ha tenido un gran avance ha sido el campo de la visión artificial o visión por computador. Una gran de estos avances ha sido debido 5.
(18) 2.3. Procesamiento de imágenes a los métodos de deep learning que se han aplicado en este área, con la que se han mejorado una gran cantidad de problemas dentro de este campo. Una de las principales razones de este progreso, ha sido por la aparición de un modelo de red neuronal especializado en procesamiento de imágenes. Este modelo conocido como red neuronal convolucional (CNN) fue propuesto en [Lecun et al., 2000], para el reconocimiento de imágenes. Esta primera estructura ha sido la inspiración para las siguientes generaciones, en la que a día de hoy existen cientos de variantes de redes convolucionales que son capaces de resolver problemas en área de la visión artificial. Por otra parte, se han empezado también a implementar redes mixtas donde se combinan otros tipos de redes junto a las redes convolucionales para mejorar la solución final y resolver problemas más complejas dentro de este campo. Por tanto, mediante el uso de estos modelos, se han dado solución a distintos problemas dentro de campo de la visión por computador, como puede ser problemas de procesamiento de imágenes, de clasificación y la detección de objetos. Debido al gran éxito cosechado en el último problema mencionado, incluso se ha extendido el uso del deep learning para la detección de enfermedades mediante radiografías o la detección facial y demás componentes.. 2.3.. Procesamiento de imágenes. El procesamiento de imágenes es un problema común dentro del área de la visión por computador. Dentro de esta temática, miles de aplicaciones han sido publicadas a los largo de los últimos años con la intención de demostrar la utilidad del deep learning. Un ejemplo se muestra en el siguiente artículo [Cheng et al., 2015]. En este trabajo, los autores desarrollan una red que es capaz de colorear una imagen de escala grises, y retornar una nueva imagen coloreada mediante colores de la escala RGB. Otros autores en [Gatys et al., 2016], decidieron crear una red que permite transferir el estilo de dibujo de una imagen a otra totalmente distinta.. Figura 2.1: Imagen original y con el nuevo estilo (Imagen de [Gatys et al., 2016]) En la figura 2.1, se puede observar que a partir de la imagen A, que ha sido tomada mediante una cámara, la red es capaz de cambiar el estilo de esta primera imagen por la segunda imagen que aparece. Más recientemente, varios autores en [Antipov et al., 2017] proponen una aplicación que permite simular el envejecimiento de una persona a partir de una imagen. En 6.
(19) Estado del Arte este trabajo, la red creada es capaz de modificar la imagen de una persona y retornar una imagen del mismo usuario pero envejecido. Por otro lado, varios autores en [Aneja et al., 2018] han llevado a cabo una idea en la que combinan dos campos totalmente opuestos como puede ser la visión por computador con el procesamiento de lenguaje natural. En este trabajo, los autores han creado una red mixta que contiene una red convolucional y una red Long Short-Term Memory para la generación del lenguaje. Con esta red e introduciendo como entrada una imagen, esta modelo es capaz de describir el contenido de la imagen insertada. Teniendo en cuenta cantidad de aplicaciones que se han publicado. Se puede llegar a la conclusión de que el deep learning es capaz incluso de resolver un sistema complejo que combina dos campos diferentes como puede ser campo literario y el de las imágenes, utilizando una estructura de red adecuada.. 2.4.. Clasificación de imágenes. Otro problema como es el de la clasificación de imágenes, se han presentado una gran cantidad de trabajos, desde sistemas capaces de clasificar un grupo concreto de objetos de una temática hasta clasificadores generales capaces de ordenar miles de etiquetas. Un ejemplo reciente e innovador se presenta en [Ma et al., 2020], donde mediante un algoritmo evolutivo hace que una red neuronal convolucional (CNN) adapte su estructura según el dataset que reciba como entrada. Las pruebas se realizaron con los datasets MNIST, Fashion-MNIST, EMNIST-Letters, EMNIST-Digits, CIFAR10 y CIFAR100, y los resultados que se obtuvieron mostraron que este sistema era comparable al estado del arte actual. Incluso se ha llegado a organizar competiciones para tratar de obtener la máxima precisión obtenida de un mismo dataset. Un ejemplo, es la competición de ImageNet [Russakovsky et al., 2015]. Esta competición utiliza un conjunto de datos formado por millones de imágenes y con mil etiquetas en la que cada año aparecen nuevas estructuras de CNN propuestas por los participantes que intentan disminuir el error en la clasificación de los casos. Actualmente, el error en la clasificación obtenido por la mejor red es menos del 0.05 %. Comparando este resultado con el primer valor que se obtuvo, ha disminuido más de un 25 % del porcentaje de error mostrando la gran evolución que están teniendo las redes convolucionales. Por otra parte, existen casos donde pueden aparecer imágenes sin etiquetas o que tienen múltiples etiquetas. A este tipo de clasificación se le denomina aprendizaje no supervisado y multietiqueta. En un artículo relacionado con estos dos casos, los autores de [Cevikalp et al., 2020] proponen una red convolucional que relacionan las características de las imágenes y crean un mapa de características donde las imágenes continuas son de la misma etiqueta que su vecino. Otro caso típico es la clasificación de un flujo continuo de imágenes, en [Zhang et al., 2020], los autores proponen un sistema formado por una CNN que es capaz de clasificar flujos de imágenes a las que asigna múltiples etiquetas en función de las características dentro de ella. 7.
(20) 2.5. Detección de objetos. 2.5.. Detección de objetos. La detección de objetos, es otro de los problemas que se ha podido resolver a día de hoy mediante técnicas de deep learning. La primera aproximación a este problema fue publicado por Lecun y otros autores en // [Lecun et al., 2000]. En este trabajo, sus autores mostraron la eficacia de las redes convolucionales tratando con un problema tan complejo como es la identificación de un objeto dentro de una imagen. Usando como base la idea de los autores anteriores, miles de trabajos se han ido publicando durante estos años. Donde se han creado modelos capaces de detectar distintos grupos de objetos, animales...etc. Un ejemplo es el trabajo publicado en [Jitsumori and Delius, 2001], en la que los autores diseñaron un modelo capaz de identificar y clasificar el nombre del animal dentro de una imagen. Incluso en la actualidad, se están utilizando estas técnicas para problemas como la conducción autónoma. En [Uçar et al., 2017], los autores han diseñado una aplicación que emplea una CNN para la conducción automática de un vehículo. Este sistema es similar al utilizado por los coches Tesla, en la que partiendo de las imágenes proporcionadas por una videocámara, el modelo detecta las líneas de la carretera y mantiene el vehículo entre ellas. Más recientemente, la complejidad de este modelo incluso ha evolucionado otro paso más, para detectar coches cercanos del vehículo autónomo para mantener una distancia entre ellos y evitar así accidentes. Otro caso reciente, fue la de varios autores que han tratado de resolver el problema de la detección de objetos a tiempo real. En su trabajo publicado en [Redmon et al., 2016], un sistema denominado You only look once (YOLO) fue propuesto. Este sistema es capaz de identificar en tiempo real, un grupo de objetos que van apareciendo dentro del vídeo. Un vistazo de este sistema se puede apreciar en la siguiente figura 2.2.. Figura 2.2: Detección de múltiples categorías dentro de una imagen.(Imagen de [Potdar et al., 2018]) Aunque este método se utilizó inicialmente para la detección de objetos, pronto se expandió su uso para resolver más problemas de detección debido al gran impacto que ha tenido dentro del campo. 8.
(21) Estado del Arte. 2.6.. Detección de enfermedades. Otras aplicaciones que están teniendo un gran impacto, son las redes para analizar imágenes médicas y detectar enfermedades. Por ejemplo, en [Yildirim et al., 2019], los autores presentan una aplicación que detecta la diabetes transformando una gráfica del ritmo cardíaco a un espectrograma que se pasa como entrada a la red para detectar si el paciente es diabético o no. En otro artículo, unos autores en [Raghavendra et al., 2018] presentan una red que permite clasificar si un paciente padece de glaucoma, una enfermedad degenerativa causada por la presión de los ojos, mediante una simple imagen del globo ocular.. Figura 2.3: Imágenes del dataset.(Imagen de [Talo et al., 2019]) En la figura 2.3, se muestra unas imágenes de un dataset formado imágenes de cerebros de personas sanas y otros que padecen distintos tipos de enfermedades cerebrales. Los autores de [Talo et al., 2019] utilizaron este dataset para entrenar un modelo capaz de distinguir entre las diferentes enfermedades cerebrales y poder aplicarlo a la identificación automática de enfermedades solamente con radiografía del cerebro. Incluso hoy en día, el uso del deep learning sigue siendo importante, donde debido a la pandemia del COVID-19, se están aplicando estas técnicas para la detección del virus. En [Wang and Wong, 2020], los autores en la labor para detectar el virus en las fases tempranas de incubación, han propuesto en el trabajo una red llamada COVIDNet para detectar el virus mediante imágenes tomadas de zona torácica del paciente. Sin embargo, los autores explican que esta red tan solo es una primera aproximación para detectar el virus y que siguen investigando la red para dar una explicación a los resultados obtenidos para encontrar las características críticas que se asocian al virus, pero, a pesar de todo, ha obtenido alto porcentaje de precisión y se espera una mejora de este porcentaje con la adición de nuevos datos. Otro caso de aplicación creada para combatir el COVID, ha sido la publicada en [Shan et al., 2020]. En este trabajo, se ha tratado el problema de la cuantificación sobre la infección del virus en los pulmones a través de la tomografía axial computarizada (CT) en estos. El modelo de deep learning llamado VB-net segmenta automáticamente las zonas infectadas y la zona del pulmón del CT, en la que una vez segmentado se calcula el volumen y el porcentaje de infección de las zonas segmen9.
(22) 2.7. Detección de personas tadas para cuantificar la infección. Mediante esta cuantificación es posible hacer un seguimiento del virus y ver su evolución con los tratamientos que se le van dando a los pacientes para ver su efectividad. Por otra parte, también se puede aplicar este modelo a la cuantificación de la severidad de la lesión en los pulmones provocada por el virus.. 2.7.. Detección de personas. Otro clase de aplicaciones que se encuentran integrados en el día a día, es la detección y reconocimiento de personas. Estas aplicaciones permiten identificar a las personas dentro de las imágenes y realizar un seguimiento de estas dentro del objetivo de la cámara. Un caso se muestra en el artículo publicado por varios autores en [Ouyang and Wang, 2013]. Este modelo capaz de identificar a las personas sin importar la posición del usuario delante de la cámara. Y permite identificar su posición dentro de la imagen y segmentarlo. También, se ha creado otro tipo de aplicaciones para reconocer la actividad que se encuentra realizando un usuario. Un ejemplo de estas aplicaciones ha sido propuesto en [Grzeszick et al., 2017]. Los autores de este trabajo han creado un sistema que es capaz de identificar qué actividad se encuentra realizando el usuario mediante unas gráficas obtenidas por una unidad de medición inercial.. Figura 2.4: Estructura de la aplicación. (Imagen de [Grzeszick et al., 2017]) En la figura 2.4, se puede observar como utilizando las gráficas generadas por los aparatos y utilizándolos como entrada a la red convolucional, esta red puede identificar con una gran precisión la actividad del sujeto. 10.
(23) Estado del Arte. 2.8.. Detección facial y sus componentes. Enfocándose más en aplicaciones similares a las que se van tratar en este trabajo, la dificultad de detección facial conlleva una gran complejidad, ya que intervienen varios factores a la hora de la detección. Estos factores son generalmente la posición o inclinación de la cara, el grado de apertura de la boca y de los ojos y las características de la piel de cada persona. Pero esto no ha impedido el avance de la tecnología para la detección, ya que a lo largo de los años los investigadores han ido proponiendo diferentes diferentes métodos para identificar la superficie facial de las personas. Más recientemente, también se ha empezado a usar el deep learning para esta tarea. Inicialmente, se propuso el uso de una red neuronal convolucional conocida como Faster-RCNN para la detección facial. Aunque el primer prototipo de esta red fue propuesta en [Girshick et al., 2013], donde la utilidad inicial era la de detectar objetos genéricos. Pronto otros autores vieron el potencial de este modelo y decidieron aplicar a campos más concretos. Por ello, en [Jiang and Learned-Miller, 2017] los autores experimentaron con esta red, entrenándola con un dataset compuesto por imágenes en la que se marcaba el contorno de la cara. Tras este experimento, otros autores mejoraron el resultado de este trabajo mostrándolo un año más tarde en [Sun et al., 2018]. Para mejorarlo, los autores utilizaron otras técnicas conocidas como la concatenación de características, modelos pre-entrenados o calibración de parámetros en la red. Los métodos anteriores consistían en aprender el contorno facial para poder detectarlo. Pero, por otra parte, también hay otros tipos de métodos que primero detectan partes concretas de la cara para la luego identificar todo el contorno. Este método explicado en [Ranjan et al., 2015], trata de imitar un sistema piramidal donde se van identificando en primera instancia, partes como la boca o los ojos y luego al tener todos los componentes ya marcados perfilan el contorno de la cara. Esta misma técnica se intentó simular en [Yang et al., 2017]. Los autores de este trabajo crearon una red que permitía identificar las partes de la cara y luego generar las cajas alrededor de cada parte para finalmente crear la superficie final de la cara. En la figura 2.5 se muestra en la primera fila, el mapa que la red es capaz de generar para detectar los componentes por separado, y una vez sabe cada una de las partes devuelve como resultado la imagen de la segunda fila donde cada superficie dibujada es un componente diferente de la cara además de la superficie facial. Otro trabajo interesante se presenta en [Zhang and Zhang, 2014], en este artículo los autores proponen una red que es capaz de realizar varias tareas simultáneamente. la primera es la identificación de si es una cara o no, la segunda es la estimación de la posición de la cara y la última es localización de esta. Mediante estos tres datos, la red mejoró en un 3 % el ratio de acierto a la hora de la detección. Finalmente, aparte de los métodos para la detección facial, también se encuentran las aplicaciones para el reconocimiento facial de un usuario. Este tipo de aplicaciones se encuentran integradas en los móviles y algunos sistemas de seguridad y permiten mantener a salvo la información del usuario de desconocidos. Aunque hoy en día la mayoría de estas aplicaciones sigue utilizando otras técnicas más precisas como puede ser la biometría. Muchos investigadores siguen trabajando en este campo aplicando técnicas de deep learning. Por ejemplo en el siguiente artículo [Wang et al., 2015]. Los autores han entrenado una red que tiene ha tenido una precisión del 90 % en un 11.
(24) 2.8. Detección facial y sus componentes. Figura 2.5: Mapas creados por la red e imágenes con el contorno (Imagen de [Yang et al., 2017]) conjunto de datos de gran tamaño, demostrando que el uso de estas técnicas pueden ser un rival para otro tipo de métodos populares para resolver este problema. Como se ha podido ver, aunque este campo aún sigue siendo investigado actualmente, el uso del deep learning ha logrado grandes avances, marcando así una línea de investigación abierta para seguir mejorando la precisión a la hora detectar y reconocer la cara. Además, dentro de este mismo problema, existen otros apartados como puede ser la detección parcial de los componentes faciales o el seguimiento ocular que forma es el problema que se va intentar resolver en este trabajo.. 12.
(25) Capítulo 3. Evaluación de riesgos En cualquier proyecto existen factores y riesgos que pueden afectar el desarrollo y la viabilidad del trabajo. Estos factores pueden ser de diferentes tipos, como la falta recursos o la escasez de datos. Debido a estas incertidumbres, se ha realizado un análisis de los riesgos y posibles soluciones para cada una, con el fin de llegar a los objetivos marcados y desarrollar el trabajo de manera fluida sin ningún contratiempo. Por tanto, en este capítulo, se ha recopilado los posibles riesgos que se han tenido en cuenta a la hora de realizar este trabajo y las medidas para evitar estos problemas. Ante la falta de un dataset inicial, se ha creado manualmente un dataset con suficientes datos para el entrenamiento y prueba de las redes neuronales y obtener de esta manera unos resultados comparables al estado del arte actual. Para tener un dataset equilibrado, se ha creado un algoritmo de calibración donde el usuario a la hora de grabarse tiene que mantener la cabeza fija y solamente observar el punto que manda el algoritmo durante un tiempo determinado. La distancia entre el usuario y la cámara a la hora de grabarse, debe de ser de 40cm a 60cm. Esto es a causa de la librería utilizada para el reconocimiento de los ojos, donde al no estar a cierta distancia de la cámara, este algoritmo no es capaz de identificar correctamente los ojos del usuario. También, se ha tenido en cuenta que el usuario tiene que encontrarse mirando de frente a la hora de grabarse. Otro riesgo, es la iluminación del lugar a la hora de la grabación. Para evitar este problema, se ha pedido al usuario que se coloque en un lugar lo suficiente iluminado, ya que una escasa iluminación puede provocar que la librería no sea capaz de detectar los ojos del usuario. Como se mencionó en el capítulo 1, se ha utilizado una cámara integrada del ordenador, por lo que los datos obtenidos no tiene una resolución muy alta, sin embargo, como se demostrará a continuación, sigue siendo posible reconocer correctamente el ojo del usuario y que la red aprenda. Para la extracción de los ojos en las imágenes, se ha planteado el uso de dos librerías, la primera técnica implementada en la librería OpenCV mientras que la segunda se encuentra integrada en la librería DLIB. Sin embargo, debido a la precisión para la detección de los ojos en DLIB finalmente se optó por el uso de esta última. 13.
(26) Durante la creación del dataset se han tenido en cuenta, los momentos donde el usuario parpadea o que no se aprecia correctamente la posición del ojo. Por ello, en la definición de las etiquetas se ha añadido un valor, en este caso 0, que indica que no se puede saber donde mira el usuario. El dataset contiene imágenes de distintas personas, en la que cada una tiene distintas características: una apertura del ojo diferente, distinta iluminación y el color de la pupila. Teniendo de esta manera una mayor variedad. Además de conseguir que la red consiga generalizar mejor los casos. Para evitar el sobre ajuste en las redes, se han tenido en cuenta los diferentes parámetros y herramientas a la hora del entrenamiento de la red. Además de aplicar diferentes técnicas de regularización para mejorar los resultados.. 14.
(27) Capítulo 4. Seguimiento de la mirada En este capítulo se va a explicar el trabajo realizado para la creación del método no invasivo que es capaz de realizar el seguimiento de la mirada del usuario en la pantalla del ordenador. Este método utiliza la ayuda de una red neuronal para reconocer el punto de la pantalla que observa el usuario y lo más importante, no será ninguna molestia para el usuario su uso. La primera parte de este capítulo comentará la preparación del dataset, las herramientas utilizadas y los distintos algoritmos que se han desarrollado para generarlo. Luego, se comentará las distintas redes neuronales escogidas para entrenarlos con los datos generados y los distintos parámetros escogidos para cada una de estas redes.. 4.1.. Dataset. Para la preparación del dataset, se grabó varios vídeos de diferentes personas para poder generar las imágenes que se utilizarían más tarde en el entrenamiento de las redes. A la hora de grabar los distintos vídeos, se tuvo en cuenta el entorno y las herramientas que podrían influir en la calidad de los datos, además de tener una homogeneidad entre los datos. Debido a ello, se estableció una serie de pautas a la hora de capturar los datos. En primer lugar, los vídeos han sido grabados en un lugar bien iluminado para poder observar bien los ojos. Además, todos han sido grabados a una calidad de 720p para que no haya una diferencia de calidad entre las imágenes de un vídeo a otro. Por otra parte, las herramientas que se han utilizado para la toma han sido la cámara de un dispositivo móvil y la webcam de un portátil, en la que se ha situado a los usuarios a una cierta distancia y altura de la cámara dentro de unos límites acotados para que la cara se encuentre siempre centrada dentro del vídeo. Por último, se ha pedido a los participantes mantener una postura fija y mirando de frente a la cámara para evitar complicaciones.. 4.1.1. Calibración Aparte de las reglas anteriores, también ha sido necesario la implementación de un método de calibración para definir cada zona de la pantalla que puede observar el 15.
(28) 4.1. Dataset usuario. Estas zonas son un total de 9 marcadores que representan las columnas laterales de la pantalla y el centro, además de las distintas altura: parte superior, media y baja. Esta asignación se puede observar en la siguiente figura:. Figura 4.1: Plantilla usada para la calibración en la pantalla Utilizando la plantilla de la figura 4.1, se ha llevado a cabo la grabación de los distintos vídeos. Este proceso se basaba en que mientras la cámara grababa la cara del usuario, el sujeto observaba durante una duración de 3 segundos cada unos de los puntos y parpadeaba para pasar al siguiente marcador. Mediante el uso de este método de calibración, se podrá conocer el punto que mira el usuario en la pantalla y poder etiquetar la imagen generada más adelante para crear los datos de entrenamiento de la red neuronal. Una vez con los vídeos guardados, es necesario extraer los fotogramas de estos vídeos, ya que no es posible crear un dataset para el entrenamiento de las redes utilizando como fuente de entrada los vídeos directamente. Para extraer estos fotogramas, se ha utilizado la librería OpenCV, en la que se encuentra implementada una función de recorte de vídeos. Utilizando esta función se ha extraído 2 fotogramas por segundo. Este valor de fotogramas escogido ha sido para evitar redundancia de imágenes muy similares dentro de los datos.. 4.1.2. Detección facial Tras extraer los fotogramas, el siguiente paso es realizar la detección facial para poder extraer posteriormente la parte que se necesita para este trabajo, es decir, la zona ocular. Para poder hacer el reconocimiento facial en las imágenes se estudió dos librerías. La primera, implementada en OpenCV, librería donde también se encuentra implementada la función de recorte de fotogramas, utiliza el método conocido como Haar Cascade, propuesto en [Viola and Jones, 2001] cuyo propósito inicial era para la de16.
(29) Seguimiento de la mirada tección de objetos, sin embargo, debido a su efectividad se expandió su uso para más campos, y uno de ellos ha sido el reconocimiento facial y ocular. Tras aplicar este método a los fotogramas, se observó que los resultados retornados por la librería no eran del todo convincentes. Ya que había varios casos donde la librería era capaz de reconocer correctamente la cara del usuario, pero no era capaz de detectar los ojos o solamente detectaba un único ojo. A causa de estos problemas, se utilizó otra librería distinta para comprobar si el problema provenía de las imágenes en sí. Esta librería llamada DLIB, también es capaz de detectar la parte facial del usuario además de más partes de la cara. Esta librería es una implementación del artículo de [Kazemi and Sullivan, 2014]. Esta técnica, a diferencia de la librería de OpenCV, utiliza un método innovador que se basa en puntos de referencia facial. Estos puntos son un total de 68, donde cada punto representa una coordenada (X,Y) de la cara. Para el entrenamiento de esta librería, los autores han etiquetado manualmente las coordenadas de cada imagen de entrenamiento y mediante los puntos etiquetados en las imágnes se ha entrado un conjunto de árboles de regresión, para posteriormente, estimar la posición de los puntos en las imágenes nuevas en función de la intensidad del píxel. Gracias al uso de este método, se ha conseguido una gran precisión a la hora de detectar tanto la parte facial como los ojos del usuario dentro de las imágenes de entrenamiento. Además, DLIB facilita la identificación de la parte ocular ya que los marcadores representan en si la posición dentro de la imagen, y utilizando estas imágenes se puede extraer de manera sencilla los ojos.. Figura 4.2: Puntos de [Korshunov and Marcel, 2018]). referencia. 17. que. usa. DLIB. (Imagen. de.
(30) 4.1. Dataset En la figura 4.2, se puede observar los puntos que retorna DLIB en el reconocimiento. Por tanto, si se selecciona concretamente los puntos 36 y 45 se podrá obtener con precisión las coordenadas que abarcan únicamente la parte de los ojos que se necesitan para este trabajo.. 4.1.3. Extracción de los ojos Utilizando el método que se ha explicado anteriormente, se han calculado los marcadores para cada fotograma. A partir de los puntos devueltos por DLIB se han detectado las coordenadas X e Y de los ojos en cada imagen para luego aplicar el recorte.. Figura 4.3: Recorte de los ojos (Imagen tomada de la implementación de este trabajo) En la figura 4.3 se muestra un ejemplo del recorte obtenido por las coordenadas proporcionadas por la librería. Con dichos puntos, se utilizó una función para recortar imágenes que se encuentra implementada en la librería OpenCV para cada uno de los fotogramas que se han obtenido de las grabaciones. También cabe destacar que la librería ha sido capaz de detectar la posición de los ojos incluso cuando estos se encuentran cerrados. Para tratar con estos casos se ha preparado una etiqueta especial que se va a comentar a continuación.. 4.1.4. Clasificación de los datos Una vez recortada la zona ocular de todos los fotogramas. Se almacenaron las imágenes para continuar con la labor de asignar etiquetas a cada una ellas. Este proceso se realizó de manualmente cogiendo cada imagen y en función de la posición a la que apuntaba los ojos, se etiquetaba la imagen a una categoría u otra. En la figura 4.4 se muestran algunos ejemplos de las etiquetas a las que asignaron a cada imagen. Esta asignación sigue un orden similar al que se ha mostrado en la plantilla de calibración mostrada en la figura 4.1. Este orden facilita la identificación de los puntos que observa el usuario en la pantalla, además de ser las categorías que se usarán para el entrenamiento de la red neuronal a continuación. Como se puede observar, en total se han descrito los 9 puntos que equivalen a los marcadores de referencia en la plantilla, además de un punto adicional que se mencionó anteriormente cuyo valor es 0. La razón de esta etiqueta es para incluir los casos especiales dentro del entrenamiento, donde el usuario ha pestañeado o que no se puede saber con exactitud a qué marcador apuntan los ojos del usuario. Una vez clasificadas todas las imágenes, se han almacenado en un archivo CSV las etiquetas a las que pertenece cada imagen. De esta manera, solamente se necesitará pasar este archivo junto a las imágenes para que las redes inicien su entrenamiento. 18.
(31) Seguimiento de la mirada. (a) 2. (b) 3. (c) 4. (d) 1. (e) 0. (f) 5. (g) 8. (h) 7. (i) 6. (j) 0. Figura 4.4: Etiquetas asignadas a cada caso. (Imágenes tomadas de la propia implementación). 4.1.5. Datasets generados De esta manera, se creó un dataset general que contiene todas las imágenes recortadas de cada uno de los usuarios que han participado en el ensayo. Este dataset contiene un total de 450 imágenes y se ha tenido en cuenta el balance entre la cantidad de imágenes de cada etiqueta para que esto no afecte posteriormente al entrenamiento de la red. Por otra parte, se ha creado un dataset adicional, en el que solamente contiene las imágenes de un único usuario con sus correspondiente etiquetas. Para crear este nuevo conjunto de entrenamiento, se grabaron nuevamente varios vídeos pero del mismo usuario variando tanto la iluminación del ambiente y la distancia con la cámara. El total de las imágenes que componen este nuevo dataset es de unas 700 imágenes. El motivo para la creación de este nuevo conjunto es para comparar los resultados entre una red entrenada con unos datos más generalizados o la de una enfocado a un único usuario. Los resultados de esta comparación se comentan en el siguiente capítulo.. 4.2.. Redes neuronales. Dentro del campo del deep learning existe una gran variante de redes que se pueden aplicar para la implementación de este trabajo. Sin embargo, tras analizar las posibles soluciones, finalmente se ha optado por el uso de las redes neuronales convolucionales. Estas redes se especializan en resolver problemas del campo de visión por computador, debido a que utilizan unas capas especiales, que permiten extraer la información de las imágenes y utilizarlas luego como información para la clasificación. 19.
(32) 4.2. Redes neuronales El problema a la hora de entrenar estas redes, es que se necesitan una gran cantidad de imágenes si se quiere entrenar desde el inicio, debido a que la convergencia de estas redes es lenta. Para solventar este problema, se han utilizado unas redes convolucionales pre-entrenadas que ofrece la librería Keras. Estas redes han sido entrenadas previamente con millones de imágenes obtenidas de la página ImageNet. El uso de estas redes permite disminuir rápidamente el tiempo de entrenamiento de las redes, ya que los pesos iniciales ya se encuentran estabilizados y solamente se necesita adaptar los pesos originales a los propios datos de este trabajo. Para la implementación de los modelos, como se ha comentado anteriormente, se han escogido un total de 6 redes neuronales distintas, todas ellas se encuentran implementadas en la librería Keras. Cada una de ellas tiene una estructura base definida y que no es necesario cambiar y para la implementación de este trabajo solamente se requiere la adición de unas capas de salida para adaptarlo a los datos que se han generado. Todo el desarrollo y entrenamiento de las redes se ha realizado en el entorno virtual de Google Collaboratory, cuyo uso ha permitido agilizar el entrenamiento de las redes y facilitar el almacenamiento de todos los datos utilizados en este trabajo. La división del dataset ha sido de un 80 % de las imágenes para conjunto de entrenamiento y el 20 % restante para la validación de la precisión del modelo. Además, para cada red se ha establecido una cantidad de iteraciones diferentes, ya que depende en función de la red la cantidad de iteraciones necesarias para llegar a converger a un resultado óptimo. A continuación, se van a detallar cada una de las estructuras de estas redes, además de las capas que se le han añadido a cada una y los distintos parámetros que se han utilizado para su entrenamiento.. 4.2.1. VGG19 La primera red escogida para el entrenamiento del modelo, es conocido como VGG19. Esta red es una implementación del grupo Visual Geometry Group que publicó los detalles de esta red en [Simonyan and Zisserman, 2014] consta de un total de 19 capas. En la figura 4.5 se muestra la composición de esta red. La idea de esta estructura es extraer gradualmente las características de la red mediante la combinación de las capas convolucionales agregadas, seguido de una capa max-pooling que reduce el tamaño de la imagen. Mediante esta estructura se simula el comportamiento de un filtro que va extrayendo las distintas características dentro de la imagen. Para la implementación de este trabajo se han eliminado las capas finales de color gris, y se han agregado capas adicionales para adaptar el modelo a las necesidades de este trabajo. 1 2 3 4. x x x x. = = = =. Dense(50, activation=’relu’)(x) Dropout(0.1)(x) Dense(25, activation=’relu’)(x) Dropout(0.1)(x). Esta nuevas capas, constan de unas capas fully connected con 50 y 25 neuronas 20.
(33) Seguimiento de la mirada. Figura 4.5: Estructura de la red VGG19 (Imagen de [Zheng et al., 2018]) respectivamente y entremedias de cada capa se han añadido unas capas dropout, cuya tarea es reducir el sobreajuste en el modelo. Para ello se ha establecido un valor de dropout de 0.1, que hace que haya un 10 % de probabilidad para que la red no utilice la información obtenida de la capa anterior. Gracias al uso de estas capas, el modelo consigue identificar de manera más precisa cada imagen, y evitar a la vez el problema del overfitting, cuyo caso en esta red es que se alcanzaba el 100 % de precisión en el entrenamiento pero la red aún era capaz de clasificar correctamente más de un 80 % de los datos de validación. La salida del modelo es igual en todas las redes que se van a comentar a continuación, debido a que la salida tiene que ser igual al número de etiquetas, por lo tanto, al definir anteriormente 10 etiquetas, salida del modelo tendrá el mismo número de neuronas. Por otra parte, como función de computo para las clases, se ha seleccionado la función softmax para todas las redes, ya que es la función más óptima para el cálculo de las probabilidades cuando existen múltiples clases. Respecto al optimizador empleado, se ha decidido por el uso del optimizador Adam con un ratio de aprendizaje de 0.0001. Este valor se ha calculado empíricamente y es el que mejor resultados ha dado para todas las redes que se han entrenado.. 4.2.2. InceptionV3 La siguiente red entrenada en este trabajo, ha sido la red conocida como Inception. Esta red consta de diferentes versiones conocidas, y actualmente la más reciente es la cuarta. Pero debido a que en Keras aún no se encuentra implementada se ha utilizado en su lugar la versión anterior, es decir, InceptionV3. Esta red creada por la compañía Google utiliza una idea diferente a la red anterior. La estructura de esta red consta de un patrón de capas iguales que se replican a lo largo de toda la red. Dentro de este módulo, se encuentran múltiples capas de convolución en paralelo que extraen diferentes tipos de características de la imagen y las concatena al final del módulo. En la siguiente figura 4.6, se puede apreciar una distribución de la estructura de esta red, donde se puede apreciar como se va repitiendo el mismo patrón a lo largo 21.
(34) 4.2. Redes neuronales. Figura 4.6: Estructura de la red InceptionV3 (Imagen de [Giri and Joshi, 2019]) de toda la red hasta alcanzar el final. Así mismo, como en el caso anterior, se han eliminado las últimas capas para adaptar el modelo. 1 2 3 4 5 6. x x x x x x. = = = = = =. Dense(50, activation=’relu’)(x) Dropout(0.1)(x) Dense(25, activation=’relu’)(x) Dropout(0.1)(x) Dense(10, activation=’relu’)(x) Dropout(0.1)(x). La única diferencia entre este modelo y el anterior es la adición de una capa fully connected adicional, ya que se ha comprobado que mejora los resultados obtenidos por este modelo.. 4.2.3. Xception Xception es otro modelo que se ha usado en este trabajo y que se inspira en la red anterior. Su autor, el propio creador de la librería Keras, publicó en [Chollet, 2016], la arquitectura de esta red, en la que toma la idea de Inception de usar un módulo repetido para crear la estructura, pero con una modificación entre los patrones de ambas redes. A diferencia de Inception, Xception cambia las capas de convolución paralelas por una nuevo método denominado capas de convolución separables. Estas nuevas capas permiten acortar el tiempo de los cálculos de la red de manera significativa permitiendo entrenar una mayor cantidad de imágenes en un tiempo mucho más corto.. Figura 4.7: Estructura de la red Xception (Imagen de [Leonardo et al., 2018]) La estructura general de esta de red se presenta en la figura 4.7. En la que se pueden observar tres partes diferentes en la estructura. La parte inicial del modelo que aplica un filtro a la imagen para reducir la imagen mientras aplica las convoluciones 22.
(35) Seguimiento de la mirada correspondientes. En al parte intermedia, se encuentra los módulos repetidos que se duplican hasta un total de 8 veces y finalmente la salida de la red y que se ha cambiado para adaptarlo a los datos de entrenamiento. Las nuevas capas añadidas varían levemente a las de VGG19, donde esta vez se han utilizado dos capas fully connected con 50 y 20 neuronas seguidas de una capa de dropout cada una para evitar el sobreajuste en el modelo.. 4.2.4. ResNet50 Dentro de la librería Keras, también se encuentran las redes residuales. Este tipo de redes tienen una arquitectura especial que las diferencian de las demás.. Figura 4.8: Cálculo de los pesos de una red estándar y residual (Imagen de [He et al., 2016]) Si se observan las estructuras anteriores, las redes neuronales normales que se han mostrado anteriormente siguen todas un patrón secuencial para el cálculo de los pesos de la red. Sin embargo, dentro de las redes residuales no ocurre esto. Estas redes añaden al cálculo de los pesos, un residuo que proviene del momento previo al entrar a las capas intermedias.. Figura 4.9: Estructura de la red ResNet50 (Imagen de [Mahmood et al., 2020]) Siguiendo la estructura de la figura 4.9, tenemos un total de 50 capas en toda la red divididas en varios bloques. Al inicio de cada uno de los bloques, se almacena el 23.
(36) 4.2. Redes neuronales residuo calculado que se pasa al final del bloque para añadirlo al total de los pesos calculados. 1 2 3 4. x x x x. = = = =. Dense(50, activation=’relu’)(x) Dropout(0.1)(x) Dense(20, activation=’relu’)(x) Dropout(0.1)(x). Al igual que en las redes anteriores, se han eliminado las capas finales para añadir los capas fully connected y dropout, con la misma cantidad de neuronas que la red de VGG19. Además, en vez de utilizar el optimizador Adam, se ha cambiado por el optimizador SGD, ya que se ha comprobado empíricamente que da mejores resultados para este caso. Para los parámetros de este optimizador se han establecido como ratio de aprendizaje 0.00001 y una caída del ratio de 1e-6 por cada iteración.. 4.2.5. Inception-ResNet V2 Después de las ideas de Inception y ResNet, los autores de [Szegedy et al., 2016] decidieron combinar ambas ideas y crear un modelo que tuviese las ventajas ambas redes. De esta idea, surgió la red Inception-ResNet, cuya versión actual es la V2.. Figura 4.10: Estructura de la red ResNet (Imagen tomada de [Alemi, 2016]) En la estructura de la red mostrada en la figura 4.10, se aprecia la idea de los autores. Esta red está formada por varios bloques, además de las capas de convolución paralelas que concatenan un bloque con otro. Dentro de estos bloque se encuentran un grupo de módulos repetidos que simulan la idea de la red Inception. Más aún, dentro de cada módulo, se puede observar que existe una conexión que conecta el comienzo del módulo con el final, siendo esta la implementación de la idea que se ha visto en la red ResNet. La modificación que ha hecho en esta red para la implementación del trabajo, sigue un mismo patrón que gran parte de las redes anteriores, en la que se han añadido dos capas fully connected con 50 y 25 neuronas en cada capa, y con las capas dropout intermedias. Aunque esta vez ha bajado el índice de dropout a un 0.05. 24.
(37) Seguimiento de la mirada. 4.2.6. DenseNet Como última red que se ha seleccionado para el entrenamiento de los datos, se ha escogido la red DenseNet. Este modelo publicado en [Huang et al., 2016] lleva la idea propuesta por la red ResNet un paso más adelante. En esta implementación, los autores utilizan la idea de la suma del residuo en cada bloque de manera global, tal y como se puede observar en la siguiente figura 4.11.. Figura 4.11: Estructura de la red DenseNet (Imagen de [Lodhi and Kang, 2019]) En esta estructura, a la entrada de cada bloque de las capas de convolución aparece varias conexiones que enlazan con las salidas de los demás bloques. Este residuo se puede definir como un conocimiento común que cada bloque conoce y que, por lo tanto, tras finalizar finalizar la convolución en cada bloque, a la hora de realizar el cómputo final de los pesos, estos valores provenientes de los otros bloques también se añaden al peso final calculado. Gracias a este método, la red es más compacto y no requiere de tantas capas para extraer la información de la imagen, ya que cada capa puede recibir información de las capas anteriores. Finalmente, de igual forma que VGG19, se le han añadido las mismas capas a este modelo para adaptarlo al problema de este trabajo.. 25.
(38)
(39) Capítulo 5. Resultados En este apartado se van a comentar los resultados que se han obtenido tras el entrenamiento de las diferentes redes neuronales comentadas en el capítulo anterior. Como se ha mencionado previamente, se crearon dos datasets diferentes para el entremiento de las redes. Esto tiene la finalidad de comprobar qué tipo de modelo tiene mejor precisión en función de la variedad de los datos.. 5.1.. Entrenamiento con imágenes de varios usuarios. Primero se muestran los resultados de los entrenamientos de las 6 redes con los datos que se han generado con distintos usuarios. Analizando el primer grupo de gráficas en la figura 5.1. se pueden extraer una serie de conclusiones tras ver como van evolucionando las redes durante el entrenamiento. En las gráficas 5.1, se muestra la evolución de las precisiones del modelos tras cada iteración. De esta información, se puede apreciar que todas las redes con un bajo número de iteraciones llegan a alcanzar una alta precisión a la hora de clasificar los datos no vistos. Además, existe trazado paralelo entre la evolución durante el entrenamiento y luego a la hora de la validación, cuyo significado es que la red aprende correctamente sobre las características de la imágenes y los aplica a la hora de la clasificación. Sin embargo, como se puede observar, en la mayoría de las redes a excepción de VGG19, llegan a estancarse tras unas 30 iteraciones. Esto hace pensar que estas redes empiezan a sobreajustarse a los datos de entrenamiento y requieren de una mayor cantidad de datos para poder seguir mejorando.. 27.
(40) 5.1. Entrenamiento con imágenes de varios usuarios. (a) VGG19. (b) DenseNet. (c) Inception-ResNetV2. (d) InceptionV3. (e) Xception. (f) ResNet50. Figura 5.1: Gráficas de la precisión de las redes entrenadas con datos con múltiples usuarios. Por otra parte, como función para calcular el error de los modelos se ha utilizado la función entropía cruzada categórica. Esta función definida como: . L(y, y ) =. N M . (yij ∗ log(yij ). j=0 i=0. Donde y’ es la etiqueta a predecir por la red. Esta función permite comparar la distribución real con la distribución predicha por la red. Por tanto cuanto menor sea el valor de esta función, más parecida serán ambas distribuciones. En la gráfica 5.2 se muestran la evolución de los valores de esta función durante el 28.
(41) Resultados. (a) VGG19. (b) DenseNet. (c) Inception-ResNetV2. (d) InceptionV3. (e) Xception. (f) ResNet50. Figura 5.2: Gráficas del error calculado de las redes entrenadas con datos con múltiples usuarios. entrenamiento. Estas gráficas tienen una relación directa con las gráficas anteriores, ya que cuanto mayor sea la precisión del modelo, menor será el valor del error en la red. Por lo que, al igual que en el caso del primer grupo de gráficas, a excepción de VGG19, los errores de las redes dejan de disminuir al llegar al punto donde las redes se sobreajustan a los datos de entrenamiento. A pesar de la poca cantidad de datos que se han utilizado, las redes han conseguido alcanzar una gran precisión, tal y como se puede observar en la siguiente tabla. En la tabla 5.1, se muestra la precisión máxima y el error mínimo obtenido por cada una de las redes entrenadas. Los resultados muestran que todas han sido capaces de obtener al menos un 80 % de precisión a la hora de tratar con datos nuevos, llegando 29.
(42) 5.2. Entrenamiento con imágenes una única persona Red VGG19 DenseNet Inception-ResNetV2 InceptionV3 Xception ResNet50. Mejor precisión 89.01 % 91.30 % 84.78 % 86.96 % 82.61 % 86.96 %. Error mínimo 0.345 0.428 0.6248 0.5529 0.6023 0.6531. Cuadro 5.1: Resultados obtenidos por las redes entrenadas con los datos genéricos incluso a alcanzar más de un 90 % como es el caso de DenseNet. Echando un vistazo a la matriz de confusión de la red DenseNet en la siguiente figura 5.3.. Figura 5.3: Matriz de confusión de los resultados obtenidos con el dataset de múltiples personas Se puede ver que la red consigue acertar un gran número de casos y solo falla casos que tienen una relación estrecha. Un ejemplo son los casos cuando la red detecta que es la categoría nueva que es el punto de referencia abajo a la derecha de la pantalla. Sin embargo, la red se equivoca a la hora de clasificarlo y lo asigna como 2 que es punto de la derecha en el medio de la pantalla. Esto muestra que la red sabe la posición que observa usuario, pero a causa de la calidad de la imagen, no ha sido capaz de asignar correctamente el punto correcto.. 5.2.. Entrenamiento con imágenes una única persona. A diferencia de los modelos anteriores. Las redes entrenadas con imágenes de un único usuario, han tenido una mayor precisión. En las gráficas de 5.4, se puede apreciar esta mejora, donde las redes llegan a alcan30.
(43) Resultados. (a) VGG19. (b) DenseNet. (c) Inception-ResNetV2. (d) InceptionV3. (e) Xception. (f) ResNet50. Figura 5.4: Gráficas de la precisión de las redes entrenadas con datos de una sola persona. zar en muy pocas iteraciones, una precisión del más del 80 %. Sin embargo, también se produce antes el problema del sobreajuste en los modelos. Esto es a causa de la cantidad de imágenes similares dentro del conjunto de entrenamiento que hace que la red deje de aprender nuevas características. Una forma de evitar este problema, sería eliminar datos redundantes o aplicar más métodos de regularización además de las capas dropout que se añadieron en la implementación de los modelos.. 31.
(44) 5.2. Entrenamiento con imágenes una única persona. (a) VGG19. (b) DenseNet. (c) Inception-ResNetV2. (d) InceptionV3. (e) Xception. (f) ResNet50. Figura 5.5: Gráficas del error calculado de las redes entrenadas con datos de una sola persona.. Al igual que en las gráficas de precisión, se puede observar que en las gráficas de errores de la figura 5.5, sucede exactamente lo mismo que en las gráficas anteriores. Donde los modelos consiguen disminuir a una gran velocidad el error pero llegados a un cierto punto, estos valores dejan de bajar. Respecto a las mejores precisiones y errores obtenidos en la tabla 5.2. Estos modelos tienen una precisión mucho mayor que la de los modelos entrenados con datos genéricos. Sin embargo, también hay que tener en cuenta que estos modelos solamente son capaces de clasificar los ojos del sujeto en concreto, y para casos de nuevos usuarios no va ser capaz de realizar esta tarea. 32.
(45) Resultados Red VGG19 DenseNet Inception-ResNetV2 InceptionV3 Xception ResNet50. Mejor precisión 94.62 % 95.70 % 91.40 % 93.55 % 93.55 % 91.40 %. Error mínimo 0.1788 0.2195 0.2982 0.3151 0.2475 0.2486. Cuadro 5.2: Resultados obtenidos por las redes entrenadas con los datos de una persona. Figura 5.6: Matriz de confusión de los resultados obtenidos con el dataset de una persona Dentro de la matriz de confusión del modelo de DenseNet que se muestra en la figura 5.6, se puede ver que el modelo falla para muy pocos casos. Y al igual que los modelos anteriores, la red es capaz distinguir la zona donde observa el usuario pero no es consigue acertar el punto exacto.. 5.3.. Comentarios a los resultados con el uso de redes. Como se ha podido observar, los modelos entrenados con ambos datasets han obtenido muy buenos resultados. Es cierto que la precisión de los modelos entrenados con datos específicos sea mayor, pero esto no significa que el rendimiento de estos modelos sean mejores. Ya que como se ha comentado anteriormente, estos modelos solo son capaces de clasificar correctamente las imágenes del mismo usuario. Y para el caso de un nuevo usuario, se tendría que entrenar nuevamente la red para ser capaz de realizar el seguimiento ocular con precisión. Aumentando así el tiempo de entrenamiento y obligando a modificar la estructura de la red para adaptarlo nuevamente al problema. 33.
(46) 5.4. Otras pruebas realizadas Por otra parte, los primeros modelos han mostrado que con una escasa cantidad pueden llegar a tener una buena precisión. Por lo que, con una mayor cantidad de datos se pueda crear un modelo de mayor precisión y genérico para cualquier usuario. Finalmente, se ha utilizado en ambos modelos una misma estructura de red, ya que la intención de este trabajo es comparar ambas aproximaciones. Y como se ha demostrado en los resultados, esta estructura permite el aprendizaje de la red en cualquiera de las dos situaciones. Aun así, al igual que en el primer punto, en caso de agregar nuevos datos, es necesario una reestructuración de la red para poder adaptarse a los datos nuevamente.. 5.4.. Otras pruebas realizadas. Adicionalmente, se han realizado otras pruebas secundarias para intentar mejorar el entrenamiento de las redes. Además se han comparado con otros métodos utilizados para el seguimiento ocular. Una de las primeras pruebas realizadas ha sido la aplicación de técnicas de procesamiento de imágenes al conjunto de entrenamiento. En este proceso, se han utilizado modificado las imágenes originales a nuevas imágenes pero a escala de grises. La finalidad de esta prueba es observar si la red aprende mejor los datos con imágenes que solo tienen un único canal de color. Sin embargo, tras concluir el entrenamiento de las redes, ninguna de las precisiones obtenidas superaba a ninguna de las redes entrenadas anteriormente con los antiguos datos. Red VGG19 DenseNet Inception-ResNetV2 InceptionV3 Xception ResNet50. Mejor precisión 82.61 % 75.0 % 76.47 % 81.32 % 82.35 % 80.88 %. Error mínimo 0.5402 0.6796 0.6594 0.6655 0.7364 0.6265. Cuadro 5.3: Resultados obtenidos por las redes entrenadas tras aplicar el filtro a las imágenes En la tabla anterior 5.4, se muestran las precisiones y el error obtenido por cada una de las distintas redes tras el entrenamiento. Como se ha comentado anteriormente, ninguna de las precisiones obtenidas superan los resultados obtenidos en la sección anterior. La causa de esta diferencia se debe al entrenamiento previo de las redes preentrenadas. Ya que estas redes han sido entrenadas mediante el dataset de ImageNet, cuyo contenido esta formado por millones de imágenes en formato RGB, por lo que tienen sus pesos adaptados a las imágenes que son de color. Además, estas redes han sido diseñadas para recibir como entrada una imagen con 3 capas, es decir, una imagen a color con sus 3 canales RGB. Sin embargo, tras aplicar el filtro a los datos de entrenamiento, dos de estos canales se han dejado de utilizar, pudiendo ser otra de las causas del bajo rendimiento de las redes con este tipo de imágenes. 34.
Documento similar