RECONOCIMIENTO DE EXPRESIONES FACIALES EN IMÁGENES MEDIANTE TÉCNICAS DE APRENDIZAJE PROFUNDO TRABAJO FIN DE GRADO CURSO 2023-2024 AUTORES JESÚS HERNÁNDEZ GUILLAMOT PABLO MATARRANZ BURGOS DIRECTOR GONZALO PAJARES MARTINSANZ COLABORADORA EXTERNA CLARA ISABEL LÓPEZ GONZÁLEZ DOBLE GRADO EN INGENIERÍA INFORMÁTICA Y ADMINISTRACIÓN Y DIRECCIÓN DE EMPRESAS FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DEMADRID RECONOCIMIENTO DE EXPRESIONES FACIALES EN IMÁGENES MEDIANTE TÉCNICAS DE APRENDIZAJE PROFUNDO RECOGNITION OF FACIAL EXPRESSIONS IN IMAGES USING DEEP LEARNING TECHNIQUES TRABAJO DE FIN DE GRADO EN INGENIERÍA INFORMÁTICA AUTOR JESÚS HERNÁNDEZ GUILLAMOT PABLO MATARRANZ BURGOS DIRECTOR GONZALO PAJARES MARTINSANZ COLABORADORA EXTERNA CLARA ISABEL LÓPEZ GONZÁLEZ CONVOCATORIA: JUNIO 2024 DOBLE GRADO EN INGENIERÍA INFORMÁTICA Y ADMINISTRACIÓN Y DIRECCIÓN DE EMPRESAS FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DEMADRID 5 DE JUNIO DE 2024 DEDICATORIA Jesús Hernández Guillamot: A mis padres y mi hermana, que me han ayudado siempre en los momentos duros de mi carrera, y a mis compañeros de clase que me han resuelto muchas dudas. Pablo Matarranz Burgos: A mis compañeros de clase por hacer que las clases sean más entretenidas y ayudarme cuando lo he necesitado y a mi familia y a mi novia por apoyarme en todo momento y darme ánimos en los momentos difíciles. 3 AGRADECIMIENTOS A nuestro tutor, que nos ha ayudado de la mejor manera posible con nuestro Trabajo de Fin de Grado, ofreciendo todos los recursos necesarios y resolviendo todas nuestras dudas. 4 RESUMEN Este trabajo explica el funcionamiento de la aplicación desarrollada que, a grandes rasgos, consiste en la identificación de expresiones faciales mediante técnicas de aprendizaje profundo. Para lograr identificarlas se utilizan redes neuronales (AlexNet, Squeezenet) que una vez entrenadas, se dispone del modelo con los parámetros ajustados. De esta forma, es posible clasificar la imagen de una cara en función de su expresión facial y de acuerdo a una de las categorías disponibles. Desde el punto de vista de la implementación, las imágenes requieren un redimensionado, para ser procesadas por los modelos de redes correspondientes, como paso previo al reconocimiento facial. En la aplicación se permite seleccionar SqueezeNet o AlexNet como red neuronal y modificar los parámetros opcionales de entrenamiento que vienen por defecto. Palabras clave Expresiones faciales, aprendizaje profundo, redes neuronales convolucionales, SqueezeNet, AlexNet. 5 ABSTRACT This work explains the operation of the developed application, which, in broad terms, consists of identifying facial expressions using deep learning techniques. To achieve this identification, neural networks (AlexNet, Squeezenet) are employed. Once trained, the model with adjusted parameters is available. This enables the classification of a facial image based on its facial expression and according to one of the available categories. From an implementation standpoint, images require resizing to be processed by the corresponding network models as a preliminary step to facial recognition. The application allows for selecting SqueezeNet or AlexNet as the neural network and modifying the optional training parameters that come by default. Keywords Facial expressions, deep learning, convolutional neural networks, SqueezeNet, AlexNet. 6 ÍNDICE DE CONTENIDOS Capítulo 1 - Introducción...........................................................................................................1 1.1 Antecedentes.................................................................................................................. 1 1.1.1 Expresiones faciales................................................................................................1 1.1.2 Inteligencia artificial............................................................................................... 2 1.2 Motivación........................................................................................................................4 1.3 Objetivos........................................................................................................................... 5 1.4 Plan de trabajo................................................................................................................ 6 1.5 Estructura del trabajo......................................................................................................7 Capítulo 2 - Redes neuronales convolucionales como técnica aplicada.........................8 2.1 Operaciones en redes neuronales convolucionales.................................................. 8 2.1.1 Métodos de optimización......................................................................................8 2.1.2 Convolución.......................................................................................................... 10 2.1.3 Softmax.................................................................................................................. 13 2.2 Modelos de Redes Neuronales Convolucionales......................................................14 2.2.1 AlexNet...................................................................................................................14 2.2.2 Squeezenet............................................................................................................17 Capítulo 3 - Descripción de la aplicación............................................................................ 22 3.1 Etapa de entrenamiento..............................................................................................22 3.1.1 Selección de la red neuronal..............................................................................23 3.1.2 Parámetros de entrenamiento............................................................................23 7 3.1.3 Finalización del entrenamiento...........................................................................25 3.2 Etapa de identificación................................................................................................ 26 3.3 DataSet........................................................................................................................... 28 3.4 Herramientas utilizadas................................................................................................. 30 Capítulo 4 - Resultados obtenidos..........................................................................................31 4.1 Fase de entrenamiento................................................................................................ 32 4.2 Fase de identificación...................................................................................................40 4.3 Problemas conocidos................................................................................................... 44 Capítulo 5 - Conclusiones y trabajo futuro............................................................................46 5.1 Conclusiones.................................................................................................................. 46 5.2 Trabajo futuro................................................................................................................. 46 Introduction................................................................................................................................ 48 Preliminary.............................................................................................................................48 Facial expressions................................................................................................................ 48 Artificial intelligence............................................................................................................ 49 Motivation.............................................................................................................................51 Goals..................................................................................................................................... 51 Work plan..............................................................................................................................52 Conclusions and future work....................................................................................................54 Conclusions...........................................................................................................................54 Future Work...........................................................................................................................54 Contribuciones Personales....................................................................................................... 56 Bibliografía..................................................................................................................................62 8 Anexo A - Manual del usuario.................................................................................................64 9 ÍNDICE DE FIGURAS Figura 2.1 Gradiente descendente.........................................................................................10 Figura 2.2 Ejemplo de convolución 2-D.................................................................................. 13 Figura 2.3 Estructura de la red AlexNet...................................................................................16 Figura 2.4 Modelo de red adaptado......................................................................................17 Figura 2.5 Módulo fire..............................................................................................................19 Figura 3.1 Interfaz para el entrenamiento de los modelos de red...................................... 21 Figura 3.2 Interfaz para la identificación de las imágenes.................................................. 25 Figura 3.3 Interfaz para la identificación con una imagen seleccionada.........................26 Figura 3.4 Resultado de la identificación............................................................................... 26 Figura 3.5 Muestra de imágenes del DataSet........................................................................27 Figura 3.6 Imágenes del DataSet original de Kaggle sin seleccionar ni clasificar............ 28 Figura 3.7 Fragmento del código en el que se elige la ruta del DataSet.......................... 28 Figura 4.1 Analizador del modelo de red AlexNet................................................................ 31 Figura 4.2 Analizador del modelo de red SqueezeNet.........................................................32 Figura 4.3 Imágenes seleccionadas del DataSet para el entrenamiento......................... 33 Figura 4.4 Informe del proceso de entrenamiento de AlexNet...........................................33 Figura 4.5 Informe del proceso de entrenamiento de SqueezeNet................................... 35 Figura 4.6 Pesos de la primera capa de AlexNet.................................................................. 37 Figura 4.7 Pesos de la primera capa de SqueezeNet...........................................................38 Figura 4.8 Matriz de confusión de AlexNet............................................................................. 39 Figura 4.9 Matriz de confusión de SqueezeNet..................................................................... 40 10 Figura 4.10 Resultados obtenidos para AlexNet y SqueezeNet respectivamente............41 Figura 4.11 Resultados obtenidos para AlexNet y SqueezeNet respectivamente............41 Figura 4.12 Resultados obtenidos para AlexNet y SqueezeNet respectivamente............42 Figura 4.13 Resultados obtenidos para AlexNet y SqueezeNet respectivamente............42 Figura 4.14 Ejemplo de imágen de expresión facial no entrenada....................................43 11 ÍNDICE DE TABLAS Tabla 2.1 Parámetros aprendidos del modelo AlexNet........................................................15 12 Capítulo 1 - Introducción 1.1 Antecedentes El análisis de las expresiones faciales emerge como una consideración crucial para discernir el estado emocional de individuos en diversos contextos de vida y relaciones interpersonales. Este estudio se focaliza precisamente en esta dimensión. Asimismo, los recientes progresos en inteligencia artificial, particularmente en Aprendizaje Profundo (Deep Learning), brindan una formidable herramienta para la identificación de estas expresiones. A continuación, se presentan ambas temáticas como pilares fundamentales del trabajo llevado a cabo. 1.1.1 Expresiones faciales Las expresiones faciales son un concepto creado por los seres humanos para poder identificar los sentimientos de una persona a través de la cara de una persona y la forma y características que le dan sus músculos en un determinado momento. Según una investigación reciente de la Universidad Estatal de Ohio en Estados Unidos (Arenschield, 2019), sólo existen 35 expresiones faciales universales que trascienden las diferencias culturales. Estas expresiones, que van desde el enojo y la tristeza hasta la alegría incontrolable, son reconocidas en todo el mundo. Pero la forma en que nuestros rostros expresan estas emociones puede variar en complejidad y diseño. Por ejemplo, mientras que el disgusto puede reconocerse mediante una única expresión facial en todas las culturas, la felicidad puede expresarse hasta de 17 formas diferentes, lo que refleja la complejidad de este estado emocional. Estas diferencias en las expresiones faciales felices pueden ser tan sutiles como el tamaño de nuestra sonrisa o las arrugas alrededor de nuestros ojos (Rodríguez, 2022). 1 Este fenómeno intrigante ha sido estudiado por científicos cognitivos y expertos en comportamiento humano, como por el profesor de ingeniería eléctrica e informática de la investigación mencionada anteriormente, Alex Martínez. Amplias investigaciones han descubierto que las expresiones faciales son una forma esencial de comunicación emocional y que, en la mayoría de los casos, las personas pueden interpretar con precisión las expresiones faciales basándose únicamente en cambios sutiles en la apariencia facial (Rodríguez, 2022). De esta manera, las expresiones faciales son una herramienta poderosa y universal para la comunicación emocional que trasciende las barreras culturales y lingüísticas. Al estudiar cómo nuestros rostros expresan emociones, se puede obtener una comprensión más profunda de la complejidad y diversidad de la experiencia humana en todo el mundo. 1.1.2 Inteligencia artificial Para hablar de los comienzos de la inteligencia artificial nos tenemos que remontar hasta la antigua Grecia, cuando Aristóteles describió un conjunto de reglas capaces de describir el funcionamiento de la mente humana y con las cuales se podía llegar a conclusiones lógicas para unas premisas dadas. Tras Aristóteles, tenemos que irnos hasta 1275 cuando Ramon Llull inventó un mecanismo con el que se podía demostrar la veracidad o falsedad de un postulado. En 1854 se produjo un gran avance para que se pudiera desarrollar lo que hoy conocemos como inteligencia artificial gracias a la labor de George Boole, que estudió la forma en la que funciona el raciocinio de la mente y dio forma a lo que hoy conocemos como álgebra de Boole. Más adelante, en 1879, Gottlieb Frege creó el cálculo de predicados para tener un mecanismo para los razonamientos mecánicos (Rebollo Delgado, 2023). En 1936 llegaríamos a Alan Turing, a quien se le conoce como el padre de la computación moderna gracias a la invención de la Máquina de Turing, una supuesta 2 máquina que sería capaz de leer un papel perforado y ejecutar las instrucciones escritas en él. En 1943 Warren McCulloch y Walter Pitts presentaron el primer modelo de neuronas artificiales, que fue consolidado siete años más tarde por Alan Turing cuando también creó el test de Turing. A pesar de todo esto, no fue hasta 1956 cuando John McCarthy usó por primera vez la expresión de “inteligencia artificial” para referirse a “la ciencia e ingenio de hacer las máquinas inteligentes” (Rebollo Delgado, 2023). En el campo de la detección de emociones mediante inteligencia artificial, de manera convencional, se ha basado en tener en cuenta expresiones faciales, gestos corporales e incluso el habla. No obstante, las técnicas de reconocimiento de expresiones faciales por parte de una máquina suelen ser poco fiables, debido a la gran cantidad de formas en las que nuestro rostro puede transmitir emociones. Es por ello que, los resultados obtenidos por IA, entrenada previamente con datasets, para detectar ciertas expresiones no suelen ser muy precisos. De esta manera, los estudios se ayudaban en muchos casos de electrocardiogramas para que los resultados obtenidos fuesen más precisos, pero con el fin de dejar a un lado este método tan aparatoso, terminaron innovando mediante la utilización del aprendizaje profundo con ayuda de señales de radio inofensivas como ondas Wifi, de radio o de radar (Rodríguez, 2023). Ciertos investigadores llevaron a cabo un experimento en el que los participantes veían un vídeo que evocaba una de las emociones básicas (placer, alegría, tristeza o ira) y mediante señales de radio inofensivas medían las señales que rebotaban en estos. Fue de esta manera como al analizar estos cambios de señales producidos por movimientos corporales se terminó encontrando información, antes oculta, en la frecuencia respiratoria y cardíaca de los sujetos estudiados. Así Ahsan Noor Khan (2021), estudiante de doctorado en Queen Mary y coautor del estudio, declaraba al respecto que: "ser capaz de detectar emociones utilizando sistemas inalámbricos es un método de creciente interés para los investigadores, ya que ofrece 3 una alternativa a los sensores voluminosos actuales y podría ser directamente aplicable en futuros entornos de viviendas y edificios 'inteligentes'. "En este estudio, nos basamos en el trabajo existente utilizando ondas de radio para detectar emociones y demostrar que el uso de técnicas de aprendizaje profundo puede mejorar la precisión de nuestros resultados", añade (Rodríguez, 2023). Estas innovaciones pueden ser cruciales de cara al futuro ya que se abren infinidad de puertas, como el bienestar emocional en el trabajo o en otros campos, la atención médica o incluso la psicología, aunque es un arma de doble filo y podría invadir nuestra propia privacidad. En la era contemporánea, con los notables avances y logros en el campo del Aprendizaje Profundo, reconocido como un paradigma destacado en el ámbito de la Inteligencia Artificial, surge un interés considerable en explorar su aplicación para el reconocimiento planteado. 1.2 Motivación La inteligencia artificial es un campo que se encuentra en pleno auge y desarrollo debido a la reciente viralización de Chat GPT y otras aplicaciones de chatbot. Debido a esta razón y a la infinidad de posibles aplicaciones de la inteligencia artificial en el futuro, se ha decidido hacer este trabajo para adquirir nuevos conocimientos sobre este campo. Por otra parte, se ha enfocado el proyecto en la identificación de expresiones faciales porque se nos ocurrió que una aplicación que identifique el estado de ánimo de los empleados y lo relacione con su productividad, podría ser una buena forma de vincular de alguna manera este proyecto con nuestra otra carrera, Administración y Dirección de Empresas. 4 De esta forma, este proyecto nos puede ayudar a comprender mejor la inteligencia artificial, más concretamente el aprendizaje profundo, y darnos la oportunidad de seguir desarrollándolo para convertirlo en una aplicación que ayude a los directivos de las empresas a identificar problemas de productividad derivados del malestar de alguno de sus empleados. 1.3 Objetivos El objetivo principal de este trabajo es crear una aplicación que consista en el reconocimiento de expresiones faciales a partir de imágenes a través de técnicas específicas basadas en Aprendizaje Profundo. Esta aplicación podría ser utilizada en el ámbito empresarial para conocer el estado emocional de los trabajadores, y así implementar ciertas medidas por parte de los directores de las empresas. Antes de desarrollar la aplicación y durante su desarrollo se han diferenciado e identificado los siguientes objetivos: - Crear una aplicación con utilidad empresarial para mejorar las condiciones laborales de los trabajadores. - Entender y estudiar los modelos de aprendizaje profundo, como AlexNet y SqueezeNet, para poder implementarlos en la aplicación a desarrollar. - Permitir el entrenamiento de estos modelos a través de ciertos parámetros modificados por el usuario. - Obtener datasets de calidad y con una cantidad de imágenes suficiente para un entrenamiento correcto. - Desarrollar una aplicación intuitiva y sencilla para que el usuario no tenga dificultad en su utilización a través de Matlab. - Validar y comprobar el entrenamiento de los modelos utilizados para mejorar los resultados obtenidos y que sean más precisos. 5 1.4 Plan de trabajo Para realizar este trabajo se han seguido los siguientes pasos: - Antes de comenzar el proyecto pensamos en un tema que pudiera tener alguna relación con Administración y Dirección de Empresas, dentro del doble grado que estamos cursando. - Buscar DataSets válidos y con suficientes imágenes en las que se pueda interpretar de forma clara una expresión facial para clasificarlas en las expresiones elegidas. - Disminución de la cantidad inicial de expresiones faciales elegidas de ocho a cuatro, debido a que al algoritmo le era muy difícil diferenciar algunas expresiones faciales de otras, como cansado y triste, al ser muy parecidas entre sí y algo subjetivo que cada persona puede percibir de forma diferente. - Probar y aprender cómo usar Matlab para desarrollar la aplicación y poder utilizar modelos pre-entrenados, tales como AlexNet y SqueezeNet, habiendo estudiado previamente el funcionamiento de las redes neuronales convolucionales, como una parte esencial dentro del Aprendizaje Profundo. - Elaborar el código lo más ajustado posible a nuestro caso, en el que sólo usamos dos modelos. - Realizar pruebas con imágenes de los datasets obtenidos, mejorando y depurándose para obtener unos resultados más precisos. - Desarrollar a través de Matlab App Designer una interfaz sencilla de utilizar. En esta se proporcionan múltiples opciones al usuario, como modificar los parámetros para entrenar a la red, seleccionar qué red entrenar y subir una foto para detectar la expresión. 6 - Una vez finalizada toda la aplicación se plantea la realización de pruebas (test) para asegurar el correcto funcionamiento de los desarrollos planteados. - Crear un repositorio en el que subir el código. Usaremos GitHub. 1.5 Estructura del trabajo El trabajo consta de los siguientes apéndices: - Introducción: En esta sección se tratan los antecedentes sobre las expresiones faciales y la inteligencia artificial, además de las motivaciones y los objetivos del desarrollo de la aplicación y el orden en el que se realiza todo el trabajo. - Redes neuronales convolucionales como técnica aplicada: Aquí se tratan las técnicas empleadas, dándole más importancia a la convolución, y los modelos utilizados. - Descripción de la aplicación: En este punto se explica cada parte de la aplicación con sumo detalle, junto con la explicación del DataSet y de las herramientas empleadas. - Resultados obtenidos: En esta sección se comentan los resultados que se han obtenido en cada fase junto con los errores que han surgido en todo el desarrollo de la aplicación. - Conclusiones y trabajo futuro: Aquí se llegan a las conclusiones obtenidas de todo el trabajo realizado y se proyecta una posible visión de futuras mejoras. - Anexos: Se incluye un anexo con el manual del usuario, para disponer de una guía de como descargar y utilizar la aplicación. 7 Capítulo 2 - Redes neuronales convolucionales como técnica aplicada Para la realización de este trabajo se han aplicado dos modelos de Redes Neuronales Convolucionales (Convolutional Neural Networks, CNN) concretamente AlexNet y SqueezeNet. Ambos modelos tienen su fundamento en la aplicación correcta de ciertas operaciones en dichas redes, tales como convolución, la función exponencial normalizada o métodos de optimización. Los conceptos teóricos que se exponen a continuación son tomados de Pajares y col. (2021), donde se puede encontrar una descripción más detallada de cada operación y modelo. En primer lugar se describen las operaciones básicas mencionadas y a continuación los dos modelos de redes mencionados. 2.1 Operaciones en redes neuronales convolucionales 2.1.1 Métodos de optimización La optimización consiste en ajustar la variable x para minimizar o maximizar la función f(x). Generalmente se opta por la minimización porque la maximización equivale a minimizar −f(x). La función que se va a minimizar o maximizar se denomina función objetivo o función criterio, similar a los pesos en una red neuronal. La función a minimizar, según Goodfellow y col. (2016), también se la conoce como función de coste, pérdida o error necesaria para propagar hacia atrás el error durante el entrenamiento. Estas funciones se llaman funciones de pérdida. El valor óptimo se denota como x* = arg min f(x). Al entrenar la red neuronal, los resultados previstos se comparan con los reales utilizando una función de pérdida diferenciable. Esta característica puede variar según 8 el tipo de red que se esté utilizando. Si todas las operaciones en la red son diferenciables, entonces la función de pérdida también será diferenciable. Sin embargo, algunas funciones de activación, como ReLU, no son diferenciables, por lo que la retropropagación requiere una aproximación de la derivada. La función de pérdida mide qué tan cerca está el modelo de las predicciones esperadas. El descenso de gradiente es un método común para encontrar el mínimo de esta función, similar a descender de una montaña para alcanzar el punto más bajo. La optimización basada en gradientes implica ajustar los pesos del modelo para minimizar la pérdida. Este ciclo de aprendizaje incluye reenviar datos, hacer predicciones, calcular pérdidas y retransmitir errores para ajustar las ponderaciones. Al ajustar los pesos, el modelo mejorará, que es en definitiva un proceso de aprendizaje. La derivada de una función en un punto indica su pendiente y ayuda a entender cómo un pequeño cambio en la entrada afecta la salida. Para minimizar una función, se utiliza el gradiente descendente, que implica desplazar los datos de entrada en la dirección opuesta a la derivada para reducir la función. En la figura 2.1 se muestra cómo el gradiente descendente se mueve hacia un mínimo. Así la función f(x) = ½ x^2 que se utiliza para ilustrar el proceso, posee derivada, por lo que hay ciertas consideraciones a tener en cuenta: - Para x < 0, f’(X) < 0 y f disminuye hacia la derecha. - Para x > 0, f’(x) > 0 y f disminuye hacia la izquierda. - Para x = 0 el gradiente se detiene puesto que f’(x) = 0. 9 Figura 2.1 Gradiente descendente 2.1.2 Convolución La convolución implica dos funciones con valores reales como argumento. Para ilustrar el concepto considérese un escenario con una fuente de luz variable y un sensor que registra la intensidad en distintas posiciones x en el tiempo t, se busca obtener una señal más limpia mediante el promedio de múltiples lecturas. Considerando el ruido en la captura de la señal, se opta por un promedio ponderado para obtener una señal más limpia, dando más importancia a las lecturas más recientes. Esto se logra mediante una función de promediado ponderado w(a), donde el parámetro a representa el alejamiento temporal de la medida. La operación de promediado ponderado aplicada en cada instante de tiempo t, resulta en una nueva función promediada. (1)𝑠(𝑡) = ∫ 𝑥(𝑎)𝑤(𝑡 − 𝑎)𝑑𝑎 Esta operación se denomina convolución y se denota como sigue: 10 (2)𝑠(𝑡) = 𝑠∫(𝑥 * 𝑤)(𝑡) Es crucial destacar que la función debe ser una densidad de probabilidad para asegurar un promedio adecuado. Además, es necesario que la función sea cero para todos los argumentos negativos, con el propósito de evitar la toma de valores futuros, algo que no es materialmente posible. Dentro del contexto de las CNN, el primer argumento x en la operación de convolución se identifica como la entrada (input), mientras que el segundo, w, se denomina núcleo de convolución (kernel). La salida se denomina comúnmente como un mapa de características (feature map). Desde una perspectiva computacional, utilizando el ejemplo de la fuente de luz, las mediciones son discretas, realizadas en intervalos de tiempo específicos, como cada segundo. Dado que el tiempo t sólo puede tomar valores enteros, y considerando que x y w se definen únicamente en el tiempo t con valores enteros, la convolución discreta se define de la siguiente manera. (3)𝑠(𝑡) = (𝑥 * 𝑤)(𝑡) = 𝑎=−∞ ∞ ∑ 𝑥(𝑎)𝑤(𝑡 − 𝑎) En el ámbito del aprendizaje automático, la entrada se representa como un vector o matriz multidimensional de datos, mientras que el núcleo es típicamente un vector o matriz multidimensional de parámetros ajustados durante el proceso de aprendizaje. Estas estructuras multidimensionales se denominan tensores. Dado que cada elemento de la entrada y del núcleo se almacena por separado, los valores que no pertenecen a estos elementos se consideran nulos, lo que, en la práctica, resulta en una suma finita de valores en un número finito de elementos. Además, las convoluciones se llevan a cabo sobre más de un eje simultáneamente, como en el caso de las imágenes I utilizadas como entradas, que son estructuras bidimensionales y requieren ser procesadas con un núcleo bidimensional K. 11 (4)𝑆(𝑖, 𝑗) = (𝐼 * 𝐾)(𝑖, 𝑗) = 𝑚 ∑ 𝑛 ∑ 𝐼(𝑚, 𝑛)𝐾(𝑖 − 𝑚, 𝑗 − 𝑛) La convolución es conmutativa, lo que significa que la expresión anterior se puede escribir de manera similar a la siguiente, lo que provoca cambios más pequeños en los valores de m y n y, por lo tanto, es más eficiente desde el punto de vista de la implementación. (5)𝑆(𝑖, 𝑗) = (𝐾 * 𝐼)(𝑖, 𝑗) = 𝑚 ∑ 𝑛 ∑ 𝐼(𝑖 − 𝑚, 𝑗 − 𝑛)𝐾(𝑚, 𝑛) A veces, los términos correlación cruzada y convolución se usan indistintamente en el ámbito especializado, generando confusión. En el contexto del aprendizaje automático, el algoritmo estima los valores del núcleo en ambos casos. La figura 2.2 ilustra un ejemplo de convolución con el núcleo K aplicado sobre un tensor 2-D, que puede representar una imagen I. La convolución se representa con solapamiento total del núcleo resultando en una imagen de menor dimensión, pasando de 6×7 a 4×5. Para mantener la dimensión, se puede utilizar el relleno con ceros (zero-padding), añadiendo dos filas (arriba y abajo) y dos columnas (izquierda y derecha) a la imagen original antes de aplicar el núcleo. Este proceso, llamado "same", se diferencia de la convolución sin relleno con ceros, denominada "valid". Por otra parte, en las convoluciones, el campo receptivo se define como la región de entrada que contribuye a la salida generada por el filtro. En la figura 2.2 se muestran sendos campos receptivos de la imagen I que contribuyen a las salidas P y Q generadas por el filtro K. 12 Figura 2.2 Ejemplo de convolución 2-D 2.1.3 Softmax La función softmax, también conocida como función exponencial normalizada, es comúnmente utilizada en las capas finales de las redes neuronales. Esta función se emplea para transformar un vector x de n dimensiones que contiene valores reales, en otro vector softmax(x) de n dimensiones, cuyos valores también son reales pero están en el rango de [0, 1]. La manera en que se calcula cada componente i del vector softmax(x)i toma en consideración todas las n componentes del vector x y se lleva a cabo de la siguiente manera: (6)𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑥) 𝑖 = 𝑒𝑥𝑝(𝑥 𝑖 ) ∑ 𝑗−1 𝑛 𝑒𝑥𝑝(𝑥 𝑗 ) 𝑝𝑎𝑟𝑎 𝑖 = 1,..., 𝑛 𝑦 𝑥 = (𝑥 1 , 𝑥 2 ,..., 𝑥 𝑛 ) ϵ ¡𝑛 Supongamos una red neuronal hipotética con cuatro neuronas (n = 4) en la capa de salida. En un momento dado, los valores obtenidos son x = (1.2, 2.0, 5.6, 3.1). Al aplicar la función softmax a estos valores, los valores resultantes serían q = softmax(x) = (0.011, 0.024, 0.892, 0.073). Es importante destacar que la suma de todos los elementos de q es igual a la unidad, lo que garantiza que la salida esté normalizada. 13 En resumen, la función softmax se aplica a cada elemento xj del vector de entrada x, lo que implica tomar la exponencial de cada valor xj y normalizar estos valores dividiéndolos por la suma de todas las exponenciales. Este proceso garantiza que la suma de las componentes del vector de salida softmax(x) sea igual a uno. Además, existe la posibilidad de ajustar los exponentes de las exponenciales para crear funciones de distribución de probabilidad más concentradas alrededor de las posiciones de los mayores valores de entrada. Esto se logra mediante la introducción de un parámetro α, donde αxi > 0 o −αxi > 0 para i = 1,…,n. (7)𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑥) 𝑖 = 𝑒𝑥𝑝(𝑎𝑥 𝑖 ) ∑ 𝑗−1 𝑛 𝑒𝑥𝑝(𝑎𝑥 𝑗 ) 2.2 Modelos de Redes Neuronales Convolucionales 2.2.1 AlexNet La red AlexNet es una red (ImageNet, 2024; Russakovsky y col., 2015; Krizhevsky y col., 2012; BVLC AlexNet Model, 2020) utilizada en el ámbito de las CNN, la cual ganó la competición de ImageNet LSVRC(2012) en el año 2012. La tercera columna de la tabla 2.1 presenta los parámetros aprendidos en el modelo, incluyendo los pesos de las capas de convolución (conv1 a conv5) y las totalmente conectadas (fc6, fc7 y fc8), independientemente de la aplicación de dropout. Cada capa de convolución tiene un parámetro de sesgo adicional por cada filtro. Estos pesos aprendidos son similares al término independiente "b" en las ecuaciones lineales (y = ax + b). La segunda columna de la misma tabla muestra las dimensiones de salida correspondientes a cada capa del modelo. 14 Nombre de la capa Dimensión de salida Pesos conv1 55x55x96 W = 11x11x3x96 b = 1x1x96 conv2 27x27x256 W = 5x5x48x256 b = 1x1x256 conv3 13x13x384 W = 3x3x256x384 b = 1x1x384 conv4 13x13x384 W = 3x3x192x384 b = 1x1x384 conv5 13x13x256 W = 3x3x192x256 b = 1x1x256 fc6 1x1x4096 W = 4096x9216 b = 4096x1 fc7 1x1x4096 W = 4096x4096 b = 4096x1 fc8 1x1x4096 W = 1000x4096 b = 1000x1 Tabla 2.1 Parámetros aprendidos del modelo AlexNet En la figura 2.3 se presenta la estructura de la red AlexNet mediante una representación gráfica de las operaciones realizadas, indicando las dimensiones de los filtros en las capas convolucionales y totalmente conectadas. Se especifican las dimensiones de los filtros, el stride (s), el padding (p) y el número de filtros (K) para cada tipo de operación, como convolución (conv), ReLU (relu), Normalización (norm), Pooling (pool), dropout (drop) o softmax. La operación stride hace referencia a los saltos que el filtro K realiza sobre la imagen de entrada para realizar la convolución, mientras que la operación padding se refiere al añadido de ceros en la imagen de entrada para obtener las dimensiones de salida deseadas. Por otro lado, la operación ReLU consiste en un rectificado para transformar los valores de entrada negativos a cero dejando el resto invariables y la operación de pooling consiste en agrupar valores, vecinos, siendo las operaciones más habituales en este sentido, las de máximo o promediado. Finalmente, dropout aplica 15 una reducción respecto del número de coeficientes o parámetros de entrada, expresada en términos de porcentaje. Figura 2.3 Estructura de la red AlexNet En ciertas implementaciones, como en Matlab (2023b), después de la función relu7, se lleva a cabo una operación de dropout (reducción del número de coeficientes) con una tasa del 50%, lo que resulta en un cambio en las dimensiones de salida de esa capa. Este modelo de red adopta el diseño de la figura 2.4, presentando dos redes paralelas que modifican las dimensiones de varios volúmenes en comparación con el modelo de la figura 2.3. Se aplican las mismas operaciones de padding, stride, pooling y dimensiones de filtros, así como métodos idénticos de normalización y activación. Las terceras dimensiones de los volúmenes son 96, 256, 384, 384 y 256, permitiendo que se transformen a volúmenes con dimensiones la mitad de estos valores (48, 128, 192, 192 y 128, respectivamente). Este modelo presenta 3 conexiones cruzadas, evidenciadas por las flechas en la segunda capa y en las capas finales totalmente conectadas (antepenúltima y penúltima), culminando en una concatenación en la salida que conduce finalmente a las mismas 1000 categorías 16 para la clasificación que en la estructura de la figura 2.3. En consecuencia, la estructura de la figura 2.3 se clasifica como una convolución de grupo o agrupada en comparación con la figura 2.4. Este modelo podría ser considerado para su implementación e integración en los diseños de arquitecturas correspondientes de redes siamesas. Figura 2.4 Modelo de red adaptado 2.2.2 Squeezenet Estas redes se originan con el objetivo de desarrollar arquitecturas con menos parámetros que otras redes equivalentes, manteniendo niveles similares de precisión y rendimiento. Se basan en módulos llamados fire modules, que son los elementos fundamentales de su estructura. Iandola y col. (2016) proponen tres estrategias para lograr los objetivos de estas redes mediante un diseño modular: ● Estrategia 1: sustituir los filtros de tamaño 3×3 con filtros de tamaño 1×1, basándose en la premisa de que estos últimos poseen 9 veces menos parámetros que los primeros. ● Estrategia 2: reducir el número de canales de entrada a los filtros 3×3. Si se tiene en cuenta una capa de convolución compuesta exclusivamente por filtros 3×3, la cantidad de parámetros en esta capa es calculada como el producto del número de canales de entrada, el número de 17 filtros y las dimensiones 3×3. Por lo tanto, al disminuir el número de canales de entrada, se logra una reducción en la cantidad total de parámetros. Este ajuste se realiza mediante el uso de capas de compresión, conocidas como capas "squeeze", las cuales se describirán más adelante. ● Estrategia 3: realizar un submuestreo posterior en una CNN para obtener capas de convolución con mapas de activación de alta dimensionalidad. Cada capa de convolución en una CNN genera un mapa de activación con una resolución espacial de al menos 1×1, y en la mayoría de los casos, de dimensiones superiores. El ancho y alto de estos mapas de activación se controlan tanto por las dimensiones de los datos de entrada como por la elección de las capas donde se implementa el submuestreo en la arquitectura de la CNN. Por lo general, el submuestreo se realiza configurando el desplazamiento (stride) con valores superiores a uno (s > 1). De esta manera, si se aplican desplazamientos elevados en las capas previas a una capa específica, los mapas de activación resultantes tendrán dimensiones reducidas. En contraste, si muchas capas de la red tienen un desplazamiento de unidad, y los desplazamientos mayores que 1 se concentran en las capas finales, se obtendrán muchas capas con mapas de activación de grandes dimensiones. ● Siguiendo la intuición expuesta por Iandola y col (2016), la configuración de red que genera mapas de activación más extensos debido al retraso del submuestreo resulta en niveles superiores de precisión en la clasificación. He y Sun (2015) detallan este comportamiento de las CNN, considerando factores como el número de filtros, sus dimensiones y otros parámetros asociados. 18 Considerando las estrategias 1 y 2 para reducir el número de parámetros manteniendo la precisión, y la estrategia 3 para mejorar la precisión con un número limitado de parámetros, Iandola y col (2016) proponen el módulo fire. Este consta de una capa de convolución comprimida (squeeze) con filtros de dimensión 1×1, que alimenta a una capa de expansión (expand) con una combinación de filtros de convolución de dimensiones 1×1 y 3×3. En este módulo, hay tres parámetros ajustables: s1 (número de filtros en la capa squeeze, todos de dimensión 1×1), e1 (número de filtros en la capa expandida, de dimensión 1×1) y e3 (número de filtros en la capa expandida, de dimensión 3×3). Para cumplir con la estrategia 2, se impone la restricción s1 < e1 + e3. Aunque estos módulos tienen un diseño diferente, comparten una filosofía similar a las capas inception mencionadas previamente. La salida de las capas comprimida y expandida se concatena, y el resultado se alimenta a unidades de activación ReLU respectivas. Figura 2.5 Módulo fire 19 Los módulos fire generan arquitecturas más complejas, como la propuesta en Iandola y col (2016), que consta de 10 capas, siendo 8 de ellas módulos fire. La referencia proporciona métodos para diseñar redes con estos módulos, estableciendo un conjunto de meta-parámetros de alto nivel para todos los módulos en la CNN. Se define "be" (base) como el número de filtros en la capa expandida del primer módulo fire en la CNN. Después de cada "nf" módulos fire, el número de filtros en la capa expandida se incrementa por "de". Específicamente, para el módulo fire i, el número de filtros en esta es calculado como "be + i * de". Dado que esta capa incluye filtros de dimensiones 1×1 y 3×3, el número de cada tipo se determina según un porcentaje "pe" establecido para cada dimensión. El número de filtros en la capa comprimida, "si", se establece en función del parámetro "ps", mantenido constante en un rango de [0,1] para todos los módulos, es decir, "si = psei". En un estudio comparativo utilizando imágenes de la base de datos ImageNet (2024), Iandola y col determinan que los mejores resultados se obtienen con "ps = 0.75" y "pe = 50%". 20 Capítulo 3 - Descripción de la aplicación En este capítulo se exponen y describen los detalles y conceptos sobre la aplicación desarrollada, cuya interfaz se muestra en el esquema de la figura 3.1. Por lo tanto, se describen las funcionalidades y las opciones que se pueden modificar para las etapas de entrenamiento y de identificación, sobre los datasets utilizados y sobre las herramientas utilizadas durante el desarrollo del proyecto. 3.1 Etapa de entrenamiento Figura 3.1 Interfaz para el entrenamiento de los modelos de red El usuario que utilice la aplicación podrá entrenar la red neuronal modificando ciertos parámetros que influyen en los resultados obtenidos, estando el DataSet ya 21 preseleccionado. El número de imágenes que contenga este DataSet juega un papel importante, ya que cuanto mayor sea el número, mejor será el aprendizaje de la red al haber mayor variedad y prepararse ante imágenes con condiciones distintas a las del DataSet. La figura 3.1 muestra la interfaz correspondiente a la sección de entrenamiento de la aplicación. Para llevar a cabo el entrenamiento, el usuario puede continuar con los valores por defecto y pulsar directamente en el botón de entrenar o bien modificar los parámetros. De cualquier manera, se usará en todos los casos el mismo Dataset ya mencionado y descrito más adelante. 3.1.1 Selección de la red neuronal Para empezar, se debe seleccionar el modelo de red neuronal con el que se realizará el entrenamiento, habiendo dos opciones posibles de rendimiento muy similar como se verá en la sección de resultados obtenidos. Estas dos opciones son AlexNet y SqueezeNet. Como ambos modelos solo procesan imágenes de entrada de dimensiones 227x227x3, es muy importante que las imágenes que se utilicen, tanto en el entrenamiento como en la clasificación, se redimensionen a este tamaño como requisito imprescindible para el procesamiento. 3.1.2 Parámetros de entrenamiento Los parámetros que se pueden modificar en la aplicación para realizar el entrenamiento son los que se describen a continuación: - MiniBatchSize El parámetro MiniBatchSize determina el tamaño de la muestra para cada lote durante el entrenamiento. Este valor afecta al número total de iteraciones necesarias 22 para entrenar todas las imágenes en el conjunto de datos. Cuanto mayor sea el tamaño de la muestra en cada lote, menos iteraciones serán necesarias para completar el proceso de entrenamiento. Un lote se define como el número de muestras, en este caso imágenes, que procesa la red antes de actualizar los pesos. - MaxEpochs El parámetro MaxEpochs es importante al entrenar un modelo porque determina el número máximo de iteraciones que se realizan durante el proceso. Esta variable juega un papel importante en la convergencia del modelo ya que cada iteración requiere ajustar los pesos del modelo en función de los datos del entrenamiento. Por otro lado, el tamaño del lote (MiniBatchSize) también afecta a la eficiencia del entrenamiento, el cual al ser correcto puede ayudar a agilizar el proceso de optimización y evitar problemas como el uso de demasiadas herramientas o la falta de ellas. Al considerar estos dos parámetros juntos, se puede calcular la cantidad total de muestras que se utilizarán durante todo el proceso de actualización de los pesos de la red. Simplemente se multiplica el valor de MaxEpochs por el tamaño del lote (MiniBatchSize). Este producto da una idea de los volúmenes de entrenamiento y ayuda a ajustar estos valores en función de la disponibilidad de datos. Para lograr eficiencia y eficacia en el ajuste, es importante encontrar un equilibrio entre el número de épocas y el tamaño del lote. En la práctica, es importante adaptar estos valores a la naturaleza del conjunto de datos y a las limitaciones computacionales. Por ejemplo, si se tiene un conjunto de datos grande, es posible que se necesite aumentar la cantidad de épocas para permitir un entrenamiento del modelo más completo. De manera similar, los lotes de mayor tamaño pueden acelerar el proceso de ajuste, pero también pueden requerir más memoria y potencia de procesamiento. Por tanto, la selección de estos 23 parámetros debe basarse en un análisis exhaustivo de las características de los datos y recursos disponibles. - InitialLearnRate El parámetro InitialLearnRate determina la tasa de aprendizaje inicial, es decir, la rapidez con la que la red neuronal ajusta sus parámetros en cada etapa de aprendizaje. Este es un factor fundamental porque su escala afecta directamente a la efectividad y precisión del entrenamiento. Cuando InitialLearnRate es alto, el aprendizaje se produce rápidamente, lo que significa que habrá ajustes más significativos en los parámetros de la red en cada iteración. Sin embargo, esta tasa puede ser menos precisa porque cambios demasiado grandes pueden dificultar que el modelo alcance la solución óptima. Por otro lado, si el valor inicial es bajo, el proceso de aprendizaje será más lento y el ajuste de parámetros será más sutil. Si bien esto puede proporcionar una mayor precisión, también puede aumentar significativamente el tiempo de entrenamiento. Al buscar el valor óptimo para este parámetro, es importante lograr un equilibrio entre la eficiencia y la precisión del aprendizaje. Este compromiso puede variar significativamente según el modelo de red neuronal y las características del conjunto de datos. Por lo tanto, es importante realizar los ajustes adecuados según las necesidades específicas de cada escenario de aplicación para optimizar tanto la velocidad como la precisión del proceso de aprendizaje. 3.1.3 Finalización del entrenamiento Con el modelo y los parámetros ya seleccionados se puede proceder al entrenamiento, que en función de estos y del número de imágenes que contenga el dataset, demorará una mayor o menor cantidad de tiempo. 24 3.2 Etapa de identificación La red neuronal una vez entrenada, permite introducir una imagen de la cara de una persona en la aplicación para que esta indique de qué expresión facial se trata, dentro de las entrenadas, y con qué porcentaje cree que la persona de esa imagen tiene esa expresión. Para que la red neuronal identifique una imagen primero debemos seleccionarla dentro de la aplicación. Para hacer esto simplemente se debe pulsar el botón de “Seleccionar imagen” que se muestra en la figura 3.2 y elegir la imagen, que debe estar en formato .png o .jpg. Figura 3.2 Interfaz para la identificación de las imágenes Una vez se tenga seleccionada la imagen que se quiere identificar será necesario pulsar el botón de “Comenzar” para iniciar la fase de identificación. Al pulsarlo, la aplicación se encargará de mostrarla, tal y como aparece en la figura 3.3, 25 redimensionar la imagen al tamaño de entrada que admiten los modelos y proceder a su identificación. Figura 3.3 Interfaz para la identificación con una imagen seleccionada Tras la identificación de la imagen aparecerá una ventana, como la que se puede ver en la figura 3.4, con la expresión seleccionada por el modelo y la certeza de que sea esa expresión, en este caso es feliz con un 99.5%. Figura 3.4 Resultado de la identificación 26 3.3 DataSet El DataSet utilizado para realizar el proyecto se compone de 184 imágenes, 4 expresiones faciales y 46 imágenes para cada expresión facial. Las expresiones faciales que se han elegido han sido enfadado, feliz, neutro y sorpresa. Figura 3.5 Muestra de imágenes del DataSet Este DataSet ha sido regenerado y reestructurado a partir del original seleccionando y clasificando de forma cuidadosa cada imágen de un DataSet de caras sintéticas de la página de Kaggle (2024), debido a que no encontramos ningún DataSet existente de expresiones faciales que nos satisficiera y estuviesen ya clasificadas por expresiones. El enlace al DataSet mencionado es el siguiente: https://www.kaggle.com/datasets/sujaykapadnis/emotion-recognition-dataset/data. Este dataset está disponible bajo licencia Creative Commons CC BY-NC-SA 4.0, y por tanto con permiso de uso para trabajos docentes como el presente Para dividir las imágenes entre las usadas para el entrenamiento y para la validación se ha utilizado la función “splitEachLabel” de Matlab de tal forma que el 70% de las imágenes se asignen al entrenamiento y el 30% restante a la validación, todo esto de forma aleatoria y distinta cada vez que se entrena el modelo ya que esta 27 https://www.kaggle.com/datasets/sujaykapadnis/emotion-recognition-dataset/data misma función admite el parámetro shuffle, para mezclar los datos de la forma indicada. Todas las imágenes utilizadas son de caras en las que aparece una única persona mirando de frente a la cámara. En la figura 3.6 se muestra una parte representativa del DataSet original del cual se ha seleccionado nuestro DataSet. Figura 3.6 Imágenes del DataSet original de Kaggle sin seleccionar ni clasificar En la figura 3.7 se muestra el fragmento de código en lenguaje Matlab y la ruta de datos que se encarga de seleccionar el DataSet, y que habría que modificar para utilizar la aplicación en otro ordenador. Figura 3.7 Fragmento del código en el que se elige la ruta del DataSet 28 3.4 Herramientas utilizadas A lo largo de todo el proyecto se han utilizado varias herramientas para alcanzar los objetivos propuestos, estas han sido: - Google Drive: Es un servicio de almacenamiento en la nube desarrollado por Google que permite a los usuarios almacenar archivos en línea, sincronizarlos entre dispositivos y compartirlos con otros usuarios. Es una herramienta muy flexible que ofrece muchas funciones tales como almacenamiento de archivos, sincronización multiplataforma, colaboración en tiempo real, integración con otros servicios de Google y seguridad. En este trabajo ha sido utilizado para compartir la memoria, a través de documentos de Google, y las modificaciones realizadas en el código. - Matlab R2023b: Es un entorno de programación y computación numérica desarrollado por The Mathworks (2023), que proporciona un entorno flexible e interactivo para realizar una variedad de tareas como análisis de datos, modelado y simulación, visualización, desarrollo de algoritmos y desarrollo de interfaz gráfica de usuario. Se ha utilizado para el desarrollo de la aplicación. - WhatsApp: Aplicación de mensajería instantánea para dispositivos móviles y computadoras que se ha utilizado para comunicarnos y organizarnos en cuanto a los días para realizar las reuniones varias de desarrollo del proyecto. - Discord: Plataforma de comunicación en línea que se utiliza principalmente para realizar las reuniones mencionadas anteriormente, en las que se han acordado los aspectos específicos del trabajo que además permite compartir la pantalla para facilitar las explicaciones de cada uno. - Gmail: Servicio de correo electrónico gratuito utilizado para comunicarnos con nuestro tutor del Trabajo de Fin de Grado. 29 - GitHub: Plataforma de desarrollo colaborativo que permite a los desarrolladores alojar, gestionar y compartir proyectos de software. Se ha utilizado esta plataforma para subir el código elaborado para el desarrollo de la aplicación. 30 Capítulo 4 - Resultados obtenidos En este capítulo se analizan todos los resultados obtenidos en ambas fases, la de entrenamiento y la de identificación de la imagen. 4.1 Fase de entrenamiento Una vez seleccionados los parámetros y el modelo de red neuronal a entrenar, se inicia el entrenamiento de este. No obstante, antes de iniciarse el proceso se muestra el analizador del modelo o Deep Learning Network Analyzer que, como se puede observar en la figura 4.1, muestra tanto el número de pesos a aprender por el modelo (total learnables) como las distintas capas junto con sus conexiones. En este caso, habiendo seleccionado AlexNet, el número de pesos a aprender es de 56.8 millones, las capas totales (layers) son 25 y no aparecen ni avisos (warnings) ni errores (errors). Esto último nos indica que el modelo está preparado para iniciar el proceso de entrenamiento. Figura 4.1 Analizador del modelo de red AlexNet 31 En el caso concreto de haber seleccionado SqueezeNet, observamos en la figura 4.2 que el analizador del modelo proporciona la misma información que en el caso anterior. Sin embargo, sí que cambian los valores que se muestran, siendo el número de pesos a aprender por el modelo 724.500 y el total de capas de 68. Esta diferencia respecto de AlexNet se debe en parte a lo mencionado en el capítulo 2, y es que SqueezeNet tiene una arquitectura más compacta usando técnicas como las capas de convolución 1x1 para reducir significativamente el número de parámetros. Por otra parte, al utilizar técnicas de compresión también hace uso de capas más profundas, por eso el número de estas es mayor respecto de AlexNet. Figura 4.2 Analizador del modelo de red SqueezeNet Tras la información proporcionada por el analizador del modelo, se muestran una serie de imágenes ilustrativas seleccionadas aleatoriamente del conjunto de datos utilizado. Esta exhibición proporciona una visión general del tipo de imágenes que forman parte del proceso de ajuste de pesos durante el entrenamiento. La Figura 4.3 ejemplifica uno de estos subconjuntos de imágenes. 32 Figura 4.3 Imágenes seleccionadas del DataSet para el entrenamiento Como parte de esta investigación sobre el aprendizaje automático de las redes neuronales, se han realizado una serie de entrenamientos, empleando de forma constante los modelos de red SqueezeNet y AlexNet. Específicamente, para el caso que se ilustra en la figura 4.4, se centra la atención en un entrenamiento utilizando el modelo de red AlexNet con su configuración de parámetros por defecto (MiniBatchSize = 8, MaxEpochs = 20 e InitialLearnRate = 0.0003). Figura 4.4 Informe del proceso de entrenamiento de AlexNet 33 La razón por la que se ha decidido establecer MiniBatchSize = 8, MaxEpochs = 20 e InitialLearnRate = 0.0003 como valores por defecto es la reducida cantidad de imágenes de las que se disponen, ya que debido a eso el entrenamiento es bastante rápido. Para compensarlo, se asigna a InitialLearnRate un valor algo bajo, pero tampoco demasiado, como es 0.0003, para que el entrenamiento no varíe demasiado entre iteraciones, y a MaxEpochs el valor de 20, con lo que se consigue proporcionar suficientes iteraciones al entrenamiento para que se estabilize. A MiniBatchSize se le ha asignado el valor de 8 para obtener 16 iteraciones por época, una cantidad suficiente para el número de imágenes de las que se dispone. De esta forma se logra que el entrenamiento sea bastante rápido, tardando entre 10 y 20 segundos al realizar el entrenamiento con una GPU. Observando la gráfica puede verse la evolución del entrenamiento. Este comienza con valores de precisión (Accuracy) bastante bajos, en torno al 25%, pero que rápidamente suben al 65%. Tras este incremento subida inicial la precisión sigue subiendo, pero a un ritmo menor, hasta alcanzar valores ligeramente superiores al 80%, donde la precisión empieza a fluctuar hasta estabilizarse en el 85.7%. El objetivo ideal sería alcanzar un valor de precisión más cercano al 100%, o del 100%, si bien, y teniendo en cuenta que el número de imágenes disponibles no es excesivamente elevado, este valor del 85.7% es un valor suficientemente bueno para este caso, ya que entre otros motivos este modelo con estos parámetros no se va a aplicar a ningún mecanismo de control con vidas en juego. Para conseguir un valor mejor se necesitaría incorporar al DataSet muchas más imágenes en las que se diferenciara de forma clara las distintas expresiones faciales y, posteriormente, ajustar los parámetros al nuevo DataSet. En la gráfica de la pérdida (Loss) puede observarse un comportamiento en espejo con respecto a la precisión. La pérdida empieza con un valor de 4 y baja rápidamente hasta 1, donde ya se estabiliza para todo el entrenamiento. En este caso 34 lo ideal sería terminar alcanzando un valor de pérdida de 0 que se podría conseguir si se lograra una precisión del 100%. Para obtener la figura 4.5 se ha realizado el entrenamiento utilizando SqueezeNet con los mismo parámetros por defecto que en el caso anterior. Figura 4.5 Informe del proceso de entrenamiento de SqueezeNet En el caso de SqueezeNet se han vuelto a usar los parámetros por defecto, es decir, MiniBatchSize, MaxEpochs e InitialLearnRate con los mismos valores que AlexNet, así se pueden observar las diferencias entre ambos modelos. La duración del entrenamiento de este modelo ha sido de 15 segundos, un 36,36% más elevado que en el caso de AlexNet con 11 segundos, siendo en esta situación este último modelo el más rápido. No obstante, al tener una mayor duración de entrenamiento, si nos fijamos en la curva de aprendizaje se observa que SqueezeNet es más precisa llegando a un porcentaje de precisión (Validation Accuracy) del 94.64%. 35 Analizando en profundidad la curva de aprendizaje se puede observar que la precisión comienza siendo muy baja, procediendo a elevarse rápidamente por encima del 50% justo antes de terminar la primera época. De esta manera, sigue subiendo progresivamente hasta por encima del 80% en la sexta época, a partir de la cual se mantiene en porcentajes en torno al 80% y el 100%, concluyendo el entrenamiento con un excelente porcentaje de precisión (94.64%). Respecto a la gráfica de la función de pérdida, la evolución que sigue en términos de variación es muy similar a la curva de aprendizaje pero a la inversa, comenzando con valores muy elevados y decayendo rápidamente para mantenerse en valores relativamente bajos. A partir de la iteración 200 se mantiene estable. Tomando en cuenta estas dos gráficas podemos asegurar que SqueezeNet tiene una elevada precisión, sin embargo, es muy importante tener en cuenta la diversidad de expresiones faciales que poseen los seres humanos. Ante tantas variaciones, si no se entrena correctamente al modelo con el número suficiente de imágenes y de expresiones lo más probable es que los resultados no sean tan precisos. Una característica importante que se observa en ambos modelos, radica en el hecho de que tanto las gráficas correspondientes al entrenamiento y validación en accuracy y loss, evolucionan sin observarse divergencias entre ellas, lo cual es garantía de que no se está produciendo ni sobreajustes ni infraajustes de los pesos. Las figuras 4.6 y 4.7 ofrecen una visualización detallada de los pesos que las redes AlexNet y SqueezeNet, respectivamente, han aprendido en su primera capa convolucional. En esta etapa inicial, conocida como conv1 (véanse las figuras 4.1 y 4.2), la red emplea 96 filtros para el primer caso y 64 para el segundo, cada uno asociado a los tres canales de color (rojo, verde y azul), lo que se traduce en una representación visual a todo color en la figura. Estos filtros son esenciales para detectar características específicas en las imágenes de entrada. 36 Figura 4.6 Pesos de la primera capa de AlexNet En el campo de las redes neuronales convolucionales, la interpretación de estos resultados se basa en un proceso de convolución en el que cada filtro se mueve a lo largo de la imagen original para extraer características relevantes. Los elementos visuales que destacan con mayor intensidad en la representación gráfica, como los colores más brillantes, indican regiones de la imagen donde estos filtros están más activos, lo que indica la presencia de características importantes. Por otro lado, las áreas más oscuras de la imagen representan valores de filtros bajos o nulos, lo que significa que esas regiones de la imagen no han activado en un grado significativo esos filtros. Por lo tanto, estas áreas pueden contener información menos importante o simplemente ser un fondo o un área vacía de la imagen. Además, las representaciones con tonos intermedios en la figura representan diferentes activaciones en los filtros, lo que sugiere la presencia de características visuales menos distintivas pero aún importantes. Este rango intermedio de activación 37 puede ser importante para capturar detalles sutiles o contextuales de la información visual procesada por la red neuronal. Figura 4.7 Pesos de la primera capa de SqueezeNet 4.2 Fase de identificación Una vez se ha entrenado la red, lo primero que se observará será el resultado de la clasificación de las imágenes seleccionadas para el test. Este resultado se mostrará en forma de Matriz de Confusión, como las que pueden observarse en las figuras 4.8 y 4.9. Las matrices de confusión son una herramienta que se suele utilizar en el campo de la inteligencia artificial para representar los resultados, ya que nos ayuda a verlos de forma clara. Las matrices de confusión están estructuradas de manera que en cada fila se ve la clase real a la que pertenece cada imagen y en las columnas la clase que ha predicho la red neuronal para cada imagen. Además, a la derecha se 38 muestra el porcentaje de imágenes que se han predicho bien en cada clase y debajo el porcentaje de imágenes que pertenecen a la clase que se predijo. Figura 4.8 Matriz de confusión de AlexNet Usando la figura 4.8 se explica cómo se leería la matriz. En ella puede observarse que, para hacer el test, se han seleccionado 15 imágenes de enfadado, 15 imágenes de feliz, 14 imágenes de neutro y 12 de sorpresa. De las 15 imágenes de enfadado 11 se han predicho de forma correcta, 2 como feliz y otras 2 como sorpresa, lo que deja un porcentaje de acierto del 73.3% para imágenes de enfadado. En el caso de feliz 12 se han predicho bien, 1 como enfadado y 2 como neutro, de tal manera que el porcentaje de acierto es del 80%. Con las imágenes de neutro 12 se han predicho bien y 2 como enfadado, obteniendo un 85.7% de acierto. Y en sorpresa las 12 imágenes se han predicho bien, lo que nos deja con un 100% de acierto. Además, la tabla de la parte inferior de la figura indica que el 78.6% de las imágenes que se predijeron como enfadado eran imágenes reales de enfadado, el 85.7% de las predichas como feliz eran de feliz, el 85.7% de las predichas como neutro eran de neutro y el 85.7% de las 39 predichas como sorpresa eran de sorpresa. De esta forma puede verse en una sola imágen, y de manera rápida, que el modelo de AlexNet proporciona unos resultados aceptables, aunque no perfectos. En la figura 4.9 se observa la matriz de confusión correspondiente al modelo de SqueezeNet. En este caso los resultados obtenidos han sido mejores que los de AlexNet, ya que ha habido un número menor de imágenes predichas de forma incorrecta. Con este modelo, el porcentaje de acierto para enfadado ha sido del 86.7%, al fallar en dos imágenes, y para feliz, neutro y sorpresa ha sido del 92.9%, al fallar en solo una imágen. Figura 4.9 Matriz de confusión de SqueezeNet Por otra parte, se han tomado cuatro imágenes, una para cada expresión facial, con el fin de comparar la precisión de cada modelo y poder analizarlo: 40 ● Enfadado Figura 4.10 Resultados obtenidos para AlexNet y SqueezeNet respectivamente Tras la identificación correcta de la expresión facial de enfado, podemos observar que la probabilidad de acierto es del 92% con SqueezeNet, un resultado bastante bueno. No obstante, en el caso de AlexNet la probabilidad es del 69.8%, bastante por debajo del 90%. Esto puede deberse a que la expresión es fácilmente confundible con la de feliz, sobre todo por los dientes. Una posible mejora de precisión sería añadir más imágenes del DataSet para que elimine confusiones entre enfadado y feliz. ● Feliz Figura 4.11 Resultados obtenidos para AlexNet y SqueezeNet respectivamente La expresión facial feliz es detectada correctamente por ambos modelos y con buenas probabilidades de acierto. Para el caso de AlexNet la probabilidad es del 41 87.1% mientras que en el segundo modelo supera el 95%. De nuevo, SqueezeNet obtiene mejores resultados, un patrón que se repite en la mayoría de los casos. ● Neutra Figura 4.12 Resultados obtenidos para AlexNet y SqueezeNet respectivamente Tras la identificación correcta de la expresión facial neutra en ambos modelos, se rompe el patrón, rozando AlexNet el 100% de probabilidad de acierto mientras que SqueezeNet obtiene un 89%. A pesar de haber un 10% de diferencia, ambas probabilidades son muy buenas, siendo AlexNet la mejor opción. ● Sorpresa Figura 4.13 Resultados obtenidos para AlexNet y SqueezeNet respectivamente Ambos modelos identifican correctamente y con la misma probabilidad de acierto que la expresión facial es la de sorpresa. Esta probabilidad es muy elevada (99.9%) situándose por encima del 90%, aunque convendría incluir más imágenes en el DataSet ya que puede haber pequeñas confusiones con las expresiones de enfado y felicidad al mostrarse los dientes en ambos casos. 42 4.3 Problemas conocidos Se han detectado algunos errores frecuentes en la fase de clasificación que pueden suponer un problema a la hora de identificar una expresión sobre una imagen: - Expresión facial que no ha sido incluida en el entrenamiento: si se pretende identificar una expresión facial no entrenada, como tristeza, el resultado que se mostrará será de alguna de las expresiones que se han incluido y, por lo tanto, incorrecto. Figura 4.14 Ejemplo de imágen de expresión facial no entrenada - Falta de calidad en la imagen: En este caso, la aplicación podría no detectar ninguna cara, lo cual sería un problema ya que haría inviable la identificación de su correspondiente expresión facial. - Imágen con varias caras: Al haber varias caras, la detección de estas no funciona de manera correcta y no termina identificando bien, por lo que es mejor evitar este tipo de imágenes. 43 Capítulo 5 - Conclusiones y trabajo futuro 5.1 Conclusiones El uso de CNNs, en particular AlexNet y SqueezeNet, para la identificación de expresiones faciales mediante el aprendizaje profundo en Matlab ofrece una capacidad excepcional para detectar y clasificar expresiones faciales con una precisión aceptable. Esto abre oportunidades en nuevas áreas como recursos humanos, psicología, la atención médica y la interacción humano-computadora. Gracias a la implementación de estas redes en Matlab, se ha conseguido desarrollar una aplicación intuitiva y funcional que permite comprender y analizar el estado emocional de las personas a partir de imágenes faciales. Además, se ha mejorado la precisión y el rendimiento del sistema gracias a la capacidad de ajustar parámetros y entrenar modelos con DataSets adecuados, haciéndose aplicable en entornos empresariales y de investigación. Por todo ello, el uso de redes neuronales como SqueezeNet y AlexNet para identificar expresiones faciales resulta ser una poderosa herramienta para comprender y analizar el comportamiento humano, con un gran potencial de mejora y que lo hace aplicable a muchos ámbitos, destacando el empresarial pues es el enfoque principal del trabajo. 5.2 Trabajo futuro En un futuro la aplicación podría mejorarse de diversas maneras: - Añadir más imágenes del DataSet o incluso buscar un DataSet más grande. - Permitir la detección de expresiones faciales a través de vídeos para que las empresas puedan usarlas al momento con sus propias cámaras. 44 - Incluir más expresiones faciales pues solo se tienen en cuenta cuatro de las ofrecidas por el Dataset, cabe mencionar en este sentido que las imágenes originales de este conjunto fueron reorganizadas y reestructuradas. - Añadir más variables a modificar permitiendo así mayores posibilidades de entrenamientos. 45 Introduction Preliminary Facial Expression Analysis emerges as a crucial consideration in discerning individuals' emotional states across various life contexts and interpersonal relationships. This study precisely focuses on this dimension. Furthermore, recent advancements in artificial intelligence, particularly in Deep Learning, provide a formidable tool for identifying these expressions. Both topics are introduced as fundamental pillars of the conducted work. Facial expressions Facial expressions are a concept created by humans to identify a person's feelings through their facial features and the shape and characteristics given by their muscles at a given moment. According to recent research from Ohio State University in the United States (Arenschield, 2019), there are only 35 universal facial expressions that transcend cultural differences. These expressions, ranging from anger and sadness to uncontrollable joy, are recognized worldwide. However, the way our faces express these emotions can vary in complexity and design. For example, while disgust can be recognized through a single facial expression in all cultures, happiness can be expressed in up to 17 different ways, reflecting the complexity of this emotional state. These differences in happy facial expressions can be as subtle as the size of our smile or the wrinkles around our eyes (Rodríguez, 2022). This intriguing phenomenon has been studied by cognitive scientists and experts in human behavior, such as the aforementioned electrical engineering and computer science professor Alex Martinez. Extensive research has found that facial expressions are an essential form of emotional communication, and in most cases, people can 46 accurately interpret facial expressions based solely on subtle changes in facial appearance (Rodríguez, 2022). Thus, facial expressions are a powerful and universal tool for emotional communication that transcends cultural and linguistic barriers. By studying how our faces express emotions, we can gain a deeper understanding of the complexity and diversity of the human experience worldwide. Artificial intelligence To discuss the beginnings of artificial intelligence, we must go back to ancient Greece when Aristotle described a set of rules capable of describing the functioning of the human mind and with which logical conclusions could be reached for given premises. After Aristotle, we have to go back to 1275 when Ramon Llull invented a mechanism with which the veracity or falsehood of a proposition could be demonstrated. In 1854, there was a great breakthrough to develop what we now know as artificial intelligence, thanks to the work of George Boole, who studied how the mind's reasoning works and shaped what we now know as Boolean algebra. Later, in 1879, Gottlieb Frege created predicate calculus to have a mechanism for mechanical reasoning (Rebollo Delgado, 2023). In 1936, we would come to Alan Turing, known as the father of modern computing thanks to the invention of the Turing Machine, a supposed machine capable of reading a punched paper and executing the instructions written on it. In 1943, Warren McCulloch and Walter Pitts presented the first model of artificial neurons, which was consolidated seven years later by Alan Turing when he also created the Turing test. Despite all this, it was not until 1956 that John McCarthy first used the expression "artificial intelligence" to refer to "the science and ingenuity of making machines intelligent" (Rebollo Delgado, 2023). 47 In the field of emotion detection through artificial intelligence, conventionally, it has been based on considering facial expressions, body gestures, and even speech. However, machine-based facial expression recognition techniques tend to be unreliable due to the numerous ways in which our face can convey emotions. Therefore, the results obtained by AI, previously trained with datasets, for detecting certain expressions are usually not very accurate. In this way, studies often relied on electrocardiograms to make the results more precise, but in order to set aside this cumbersome method, they ended up innovating through the use of deep learning with the help of harmless radio signals such as Wi-Fi, radio, or radar waves (Rodríguez, 2023). Certain researchers conducted an experiment in which participants watched a video evoking one of the basic emotions (pleasure, joy, sadness, or anger), and through harmless radio signals, they measured the signals bouncing off them. It was in this way that by analyzing these signal changes produced by body movements, information previously hidden in the respiratory and cardiac frequency of the subjects studied was found. Ahsan Noor Khan (2021), a doctoral student at Queen Mary and co-author of the study, stated in this regard that: "being able to detect emotions using wireless systems is a method of growing interest for researchers, as it offers an alternative to current bulky sensors and could be directly applicable in future smart home and building environments." "In this study, we build on existing work using radio waves to detect emotions and demonstrate that using deep learning techniques can improve the accuracy of our results," he adds (Rodríguez, 2023). These innovations can be crucial for the future as they open countless doors, such as emotional well-being in the workplace or in other fields, healthcare, or even psychology, although it is a double-edged sword and could invade our privacy. In the contemporary era, with notable advances and achievements in the field of Deep Learning, recognized as a prominent paradigm in the field of Artificial 48 Intelligence, there is considerable interest in exploring its application for the proposed recognition. Motivation Artificial intelligence is a field that is booming and developing due to the recent viralization of Chat GPT and other chatbot applications. Due to this reason and the multitude of possible applications of artificial intelligence in the future, we have decided to do this work to acquire new knowledge about this field. On the other hand, we have decided to focus the project on the identification of facial expressions because we thought that an application that identifies the mood of employees and relates it to their productivity could be a good way to somehow link this project with our other career, Business Administration and Management. In this way, this project can help us better understand artificial intelligence, more specifically deep learning, and give us the opportunity to continue developing it to turn it into an application that helps business managers identify productivity problems derived from the discomfort of some of their employees. Goals The main objective of this work is to create an application consisting of facial expression recognition from images through specific Deep Learning-based techniques. This application could be used in the business environment to understand the emotional state of workers and thus implement certain measures by company managers. Before developing the application and during its development, the following objectives have been differentiated and identified: 49 - Create an application with business utility to improve working conditions for employees. - Understand and study deep learning models, such as AlexNet and SqueezeNet, to be able to implement them in the application to be developed. - Allow the training of these models through certain parameters modified by the user. - Obtain quality datasets with a sufficient number of images for correct training. - Develop an intuitive and simple application so that the user does not have difficulty in its use through Matlab. - Validate and check the training of the models used to improve the results obtained and make them more accurate. Work plan To carry out this work, the following steps have been followed: - Before starting the project, we brainstormed a topic that could be related to Business Administration and Management, within the double degree we are pursuing. - Search for valid datasets with sufficient images in which a facial expression can be clearly interpreted to classify them into the chosen expressions. - Reduce the initial number of selected facial expressions from eight to four, because the algorithm found it very difficult to differentiate some facial expressions from others, such as tired and sad, as they are very similar to each other and somewhat subjective, perceived differently by each person. 50 - Experiment and learn how to use Matlab to develop the application and be able to utilize pre-trained models, such as AlexNet and SqueezeNet, having previously studied the operation of convolutional neural networks as an essential part of Deep Learning. - Develop the code as closely as possible to our case, in which we only use two models. - Conduct tests with images from the obtained datasets, improving and refining them to obtain more precise results. - Develop a user-friendly interface through Matlab App Designer. This provides multiple options to the user, such as modifying parameters to train the network, selecting which network to train, and uploading a photo to detect the expression. - Once the entire application is completed, testing (testing) is planned to ensure the correct operation of the proposed developments. - Create a repository to upload the code. We will use GitHub. 51 Conclusions and future work Conclusions The use of CNNs, particularly AlexNet and SqueezeNet, for facial expression identification through deep learning in Matlab offers exceptional capability to detect and classify facial expressions with acceptable accuracy. This opens opportunities in new areas such as human resources, psychology, healthcare, and human-computer interaction. Thanks to the implementation of these networks in Matlab, an intuitive and functional application has been developed, allowing understanding and analysis of individuals' emotional states from facial images. Furthermore, the system's accuracy and performance have been enhanced through parameter tuning and model training with appropriate datasets, making it applicable in both business and research environments. Therefore, the utilization of neural networks like SqueezeNet and AlexNet for facial expression identification proves to be a powerful tool for understanding and analyzing human behavior, with significant potential for improvement and applicability across various domains, particularly in the business realm, which is the primary focus of this work. Future Work In the future, the application could be enhanced in several ways: - Adding more images to the dataset or even seeking a larger dataset. - Allowing facial expression detection through videos so that companies can use them in real-time with their own cameras. 52 - Including more facial expressions, as currently only four are considered from the dataset. It's worth mentioning that the original images in this set were reorganized and restructured. - Adding more variables for modification, thus allowing for greater possibilities in training. 53 Contribuciones Personales Jesús Hernández Guillamot - Aportar ideas sobre las que realizar el Trabajo de Fin de Grado y llegar a un consenso con mi compañero. - Establecer los objetivos a alcanzar con la aplicación junto a mi compañero. - Búsqueda de un DataSet que cumpla con los requisitos. - Clasificación de las imágenes del DataSet en expresiones faciales de enfado y neutra. - Depuración de imágenes que no fueran detectables durante el entrenamiento, procediendo con su eliminación. - Familiarización con el entorno Matlab y búsqueda de tutoriales para aprender sobre el lenguaje. - Estudio e investigación sobre el funcionamiento de las redes neuronales, sobre todo de AlexNet y SqueezeNet. - Entender el código guía para desarrollar de la mejor manera posible la aplicación junto con mi compañero. - Aportación de ideas para el diseño de la aplicación. - Modificación del DataSet para que la precisión fuese mayor en función de lo que me comentaba mi compañero sobre el entrenamiento y la identificación de imágenes. - Creación y gestión del Google Drive para trabajar en equipo junto con mi compañero. - Elección de la metodología a emplear. - Reparto y organización de las tareas a realizar. - Aclarar las dudas junto a mi compañero y en caso de no solucionarse aclararlas con el tutor. 54 - Repasar las partes de la memoria realizadas por mi compañero para corregirlas llegando a un consenso. - Realización de los apartados iniciales previos al índice a excepción del índice de figuras y tablas. - Realización del apartado 1.1.1 relativo a los antecedentes de las expresiones faciales. - Realización del apartado 1.3 en el que se detallan los objetivos a alcanzar con el proyecto. - Realización del apartado 1.4 donde se menciona el plan de trabajo. - Realización del apartado 2.1.1 relativo a los métodos de optimización como operaciones de redes. - Realización del apartado 2.1.3 relativo a softmax como operación de redes neuronales. - Realización del apartado 2.2.1 donde se explica el funcionamiento de AlexNet con todas sus características. - Realización del apartado 3.1 en el que se explica cómo realizar el entrenamiento del modelo. - Realización del apartado 3.4 sobre las herramientas utilizadas. - Realización de la mitad inicial del apartado 4.1 sobre la explicación de la fase de entrenamiento. - Realización de la segunda mitad del apartado 4.2 sobre la explicación de la fase de identificación de la expresión facial. - Realización del apartado 4.3 donde se comentan los problemas conocidos en la fase de clasificación. - Realización del apartado 5.1 sobre las conclusiones obtenidas. - Realización del apartado de la introducción en inglés. - Realización del manual del usuario junto con mi compañero. 55 - Realización del apartado de contribuciones personales junto con mi compañero. 56 Pablo Matarranz Burgos - Aportar ideas sobre las que realizar el Trabajo de Fin de Grado y llegar a un consenso con mi compañero. - Establecer los objetivos a alcanzar con la aplicación junto a mi compañero. - Búsqueda de un DataSet que cumpla con los requisitos. - Clasificación de las imágenes del DataSet en expresiones faciales de feliz y sorpresa. - Familiarización con el entorno Matlab y búsqueda de tutoriales para aprender sobre el lenguaje. - Estudio e investigación sobre el funcionamiento de las redes neuronales, sobre todo de AlexNet y SqueezeNet. - Entender el código guía para desarrollar de la mejor manera posible la aplicación junto con mi compañero. - Pensar y sugerir ideas para el diseño de la aplicación. - Elaborar el código para implementar nuestras ideas. - Crear funciones para implementarlas en el código. - Pensar en una interfaz de usuario para que sea más sencillo utilizar la aplicación. - Crear la interfaz de usuario usando Matlab. - Repasar las partes de la memoria realizadas por mi compañero para corregirlas llegando a un consenso. - Reparto y organización de las tareas a realizar. - Aclarar las dudas junto a mi compañero y en caso de no solucionarse aclararlas con el tutor. - Realización del índice de figuras y tablas. - Realización de varios entrenamientos con AlexNet y SqueezeNet utilizando diferentes configuraciones para encontrar la óptima. 57 - Realización del apartado 1.1.2 relativo a los antecedentes de la inteligencia artificial. - Realización del apartado 1.2 en el que se explican las motivaciones que nos han llevado a realizar este trabajo. - Realización del apartado 1.5 donde se expone la estructura del trabajo. - Realización del apartado 2.1.2 relativo a la convolución aplicada a la inteligencia artificial. - Realización del apartado 2.2.2 donde se explica el funcionamiento de SqueezeNet y sus características. - Realización del apartado 3.2 en el que se explica cómo se realiza la etapa de identificación. - Realización del apartado 3.3 en el que se detalla el contenido, el origen y la elaboración del DataSet utilizado. - Realización de la segunda mitad del apartado 4.1 sobre la explicación de la fase de entrenamiento. - Realización de la primera mitad del apartado 4.2 sobre la explicación de la fase de identificación de la expresión facial. - Realización del apartado 5.2 sobre el trabajo futuro del proyecto. - Realización del apartado de conclusiones y trabajo futuro en inglés. - Realización del manual del usuario junto con mi compañero. - Realización de capturas de pantalla que se han utilizado de manera ilustrativa en el trabajo. - Creación del repositorio de GitHub en el que se ha subido el código realizado durante el proyecto. - Realización del apartado de contribuciones personales junto con mi compañero. 58 - Añadir a la bibliografía las fuentes utilizadas durante la realización del proyecto con su correcta citación. 59 Bibliografía 1. Rebollo Delgado, L. (2023). Inteligencia artificial y derechos fundamentales. Madrid: Dykinson, S.L. Disponible en: https://www-digitaliapublishing-com.bucm.idm.oclc.org/a/128997 2. Rodríguez, H. (2023). Así interpreta la inteligencia artificial nuestros estados de ánimo. Disponible en: https://www.nationalgeographic.com.es/cienc ia/asi-interpreta-la-inteligencia-artificial-nuestros-estados-de-animo-_1630 4 [Consultado 27-02-2024]. 3. Rodríguez, H. (2022). Así expresa tu cara los cambios en tus emociones. Disponible en: https://www.nationalgeographic.com.es/ciencia/asi-exp resa-tu-cara-cambios-tus-emociones_13803 [Consultado 27-02-2024]. 4. Arenschield, L. (2019). The 17 different ways your face conveys happiness. Disponible en: https://ece.osu.edu/news/2019/01/17-different-ways-your-f ace-conveys-happiness. [Consultado 27-02-2024]. 5. Noor Khan, A. (2021). Deep learning framework for subject-independent emotion detection using wireless signals. Disponible en: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0242946. [Consultado 27-02-2024]. 6. Pajares, G., Herrera, P.J., Besada, E. (2021). Aprendizaje Profundo. RC-Libros, Madrid 7. ImageNet. (2024). Disponible en: http://www.image-net.org (Accedido Marzo 2024). 8. Russakovsky, O., Deng, J., Su, H., Krause, J., Satheesh, S., Ma, S. Huang, Z., Karpathy, A., Khosla, A., Bernstein, M., Berg, A.C., Fei-Fei, L. (2015). ImageNet Large Scale Visual Recognition Challenge. International Journal of Computer Vision (IJCV). 115(3), pp. 211–252. 60 https://www-digitaliapublishing-com.bucm.idm.oclc.org/a/128997 https://www.nationalgeographic.com.es/ciencia/asi-interpreta-la-inteligencia-artificial-nuestros-estados-de-animo-_16304 https://www.nationalgeographic.com.es/ciencia/asi-interpreta-la-inteligencia-artificial-nuestros-estados-de-animo-_16304 https://www.nationalgeographic.com.es/ciencia/asi-interpreta-la-inteligencia-artificial-nuestros-estados-de-animo-_16304 https://www.nationalgeographic.com.es/ciencia/asi-expresa-tu-cara-cambios-tus-emociones_13803 https://www.nationalgeographic.com.es/ciencia/asi-expresa-tu-cara-cambios-tus-emociones_13803 https://ece.osu.edu/news/2019/01/17-different-ways-your-face-conveys-happiness https://ece.osu.edu/news/2019/01/17-different-ways-your-face-conveys-happiness https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0242946 http://www.image-net.org 9. Krizhevsky, A., Sutskever, I., Hinton, G.E. (2012). ImageNet Classification with Deep Convolutional Neural Networks. In Proc. 25th Int. Conf. on Neural Information Processing Systems (NIPS’12), vol. 1, pp. 1097-1105. 10. BVLC AlexNet Model (2020). Disponible en: https://github.com/ BVLC/caffe/tree/master/models/bvlc_alexnet (Accedido Diciembre 2020). 11. Iandola, F.N., Han, S., Moskewicz, M.W., Ashraf, K., Dally, W.J., Keutzer, K. (2016). SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size. arXiv:1602.07360v4 [cs.CV]. 12. He, K., Sun, J. (2015). Convolutional Neural Networks at Constrained Time Cost. arXiv:1412.1710 [cs.CV]. 13. Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep learning. MIT Press. Disponible on-line: https://www.deeplearningbook.org/ 14. Kaggle. (2024). Disponible en: https://www.kaggle.com/code/selfishgene /explore-synthetic-faces-hq-sfhq-dataset (Accedido Marzo 2024). 15. Kovenko, V.; Shevchuk, V. (2021), OAHEGA : EMOTION RECOGNITION DATASET, Mendeley Data, V2, doi: 10.17632/5ck5zz6f2c.2 16. GitHub. (2024). Disponible en: https://github.com/SelfishGene/SFHQ- dataset (Accedido Marzo 2024). 17. The Mathworks, 2024. Matlab para Inteligencia Artificial. Disponible online: https://es.mathworks.com/ (Accedido Octubre 2023) 61 https://github.com/BVLC/caffe/tree/master/models/bvlc_alexnet https://github.com/BVLC/caffe/tree/master/models/bvlc_alexnet https://www.deeplearningbook.org/ https://www.kaggle.com/code/selfishgene/explore-synthetic-faces-hq-sfhq-dataset https://www.kaggle.com/code/selfishgene/explore-synthetic-faces-hq-sfhq-dataset https://github.com/SelfishGene/SFHQ-dataset https://github.com/SelfishGene/SFHQ-dataset https://es.mathworks.com/ ANEXOS Anexo A - Manual del usuario Para la ejecución correcta de la aplicación se deben seguir los siguientes pasos en el orden indicado: 1. Instalar Matlab R2023b donde se ejecutará el código descargable. 2. Descargar el código y el DataSet de “Imagenes por expresión” a través del repositorio GitHub desde el siguiente enlace: https://github.com/PablMata/TFG-INFO. 3. Cambiar la ruta de datos de la línea 7 del archivo “ConvertirSizesRedes.m” a la ruta en la que se encuentre nuestro DataSet, y la línea 8 si se ha modificado el nombre de la carpeta, como se muestra en la siguiente imagen: 4. Crear en la carpeta “DATASET227x227” en la misma carpeta que se encuentre el código. 5. Crear dentro de la carpeta “DATASET227x227” tantas carpetas como expresiones distintas se tengan, en este caso serían 4, con los nombres de cada expresión, en nuestro caso la estructura de carpetas quedaría como se muestra en la siguiente imagen: 62 https://github.com/PablMata/TFG-INFO 6. Abrir Matlab y acceder a Design App que se puede encontrar en el apartado de APPS, como se muestra en la siguiente imagen: 7. Abrir el archivo interfaz.mlapp descargado en el punto 2. 8. Proceder con la ejecución de la aplicación dándole click a Run: 9. Una vez hecho el click en Run aparecerá la interfaz de la aplicación con el apartado de entrenamiento. Una vez entrenado el modelo elegido con sus parámetros, dándole al botón de entrenar, se podrá proceder con la identificación de la expresión. 63