scieee AI-readable full text Open interactive document viewer

Reconocimiento de acciones de movimiento humanas con un smartphone mediante aprendizaje profundo

Talavera Rodríguez, Emma

Abstract

En este trabajo se propone una aplicación inteligente con capacidad de procesar datos sensoriales procedentes de un dispositivo móvil, del tipo smartphone o tablet mediante técnicas basadas en Aprendizaje Profundo (Deep Learning). La finalidad consiste en la detección de acciones de movimiento humanas para su monitorización. Para ello se propone el uso de una red neuronal recurrente, cuyo modelo exacto es del tipo LSTM (Long Short Term Memory). Esta red está entrenada con datos de Aceleración, en los tres ejes (X, Y, Z), procedentes de los sensores del smartphone para reconocer cinco tipos concretos de acciones: “Dancing”, “Running”, “Sitting”, “Standing” y “Walking”. La aplicación está diseñada de tal manera que cuando se reciben datos de aceleración, correspondientes a una de las acciones mencionadas, éstos se procesan en la red para identificar el tipo de acción asociada. Además, de lo anterior, el trabajo posee una funcionalidad añadida bajo el paradigma de Internet de las Cosas (IoT, Internet of Things), de forma que los datos son enviados a una plataforma específica para IoT su almacenamiento junto con el resultado de su procesamiento mediante la red LSTM. Desde esta plataforma se pueden enviar mensajes sobre las acciones realizadas para ser recibidos en una cuenta de la red social Twitter, a la vez que es posible su visualización accediendo a la mencionada plataforma con fines de monitorización de las acciones almacenadas en ella. Por tanto, la aplicación desarrollada combina dos capacidades de interés, la primera se refiere a la utilización de técnicas inteligentes avanzadas mediante Deep Learning y la segunda a su extensión bajo el ámbito de IoT. Los experimentos realizados han verificado la validez de la propuesta, destacando los aspectos relacionados con el sistema inteligente y la navegación autónoma del vehículo autómata.

Full text

RECONOCIMIENTO DE ACCIONES DE MOVIMIENTO HUMANAS CON UN SMARTPHONE MEDIANTE APRENDIZAJE PROFUNDO RECOGNITION OF HUMAN MOVEMENT ACTIONS WITH A SMARTPHONE USING DEEP LEARNING TRABAJO DE FIN DE GRADO CURSO 2021-2022 AUTOR EMMA TALAVERA RODRÍGUEZ DIRECTOR GONZALO PAJARES MARTINSANZ COLABORADORA EXTERNA CLARA ISABEL LÓPEZ GÓNZALEZ GRADO EN INGENIERÍA DEL SOFTWARE FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DE MADRID Resumen En este trabajo se propone una aplicación inteligente con capacidad de procesar datos sensoriales procedentes de un dispositivo móvil, del tipo smartphone o tablet mediante técnicas basadas en Aprendizaje Profundo (Deep Learning). La finalidad consiste en la detección de acciones de movimiento humanas para su monitorización. Para ello se propone el uso de una red neuronal recurrente, cuyo modelo exacto es del tipo LSTM (Long Short Term Memory). Esta red está entrenada con datos de Aceleración, en los tres ejes (X, Y, Z), procedentes de los sensores del smartphone para reconocer cinco tipos concretos de acciones: “Dancing”, “Running”, “Sitting”, “Standing” y “Walking”. La aplicación está diseñada de tal manera que cuando se reciben datos de aceleración, correspondientes a una de las acciones mencionadas, éstos se procesan en la red para identificar el tipo de acción asociada. Además, de lo anterior, el trabajo posee una funcionalidad añadida bajo el paradigma de Internet de las Cosas (IoT, Internet of Things), de forma que los datos son enviados a una plataforma específica para IoT su almacenamiento junto con el resultado de su procesamiento mediante la red LSTM. Desde esta plataforma se pueden enviar mensajes sobre las acciones realizadas para ser recibidos en una cuenta de la red social Twitter, a la vez que es posible su visualización accediendo a la mencionada plataforma con fines de monitorización de las acciones almacenadas en ella. Por tanto, la aplicación desarrollada combina dos capacidades de interés, la primera se refiere a la utilización de técnicas inteligentes avanzadas mediante Deep Learning y la segunda a su extensión bajo el ámbito de IoT. Los experimentos realizados han verificado la validez de la propuesta, destacando los aspectos relacionados con el sistema inteligente y la navegación autónoma del vehículo autómata. Palabras clave: Aprendizaje profundo, LSTM, IoT, aceleración, acciones de movimiento, entrenamiento, clasificación. Abstract In this work, an intelligent application is proposed with the ability to process sensory data coming from a mobile device, such as a smartphone or tablet, and using techniques based on Deep Learning. The purpose is the detection of human movement actions for monitoring. A recurrent neural network is proposed for this purpose, whose exact model is of the type of LSTM (Long Short-Term Memory). This network is trained with acceleration data, in the three axes (X, Y, Z), from the smartphone sensors to recognize five specific types of actions: “Dancing”, “Running”, “Sitting”, “Standing” and “Walking”. The application is designed in such a way that when acceleration data are received, corresponding to one of the mentioned actions, they are processed in the network to identify the type of associated action. In addition to the above, a functionality, under the paradigm of Internet of Things (IoT, Internet of Things), is added, so that the data are sent to a specific IoT platform for storage together with the result of their processing through the LSTM net. This platform offers a offers a messaging service sending the type of action recognized and stored, which can be received through a Twitter social network account, while it is possible to gain access to the platform for the purposes of monitoring the actions stored in it. Therefore, the developed application combines two abilities of interest, the first refers to the use of advanced intelligent techniques through Deep Learning and the second to its extension under the scope of IoT. Keywords: Deep Learning, LSTM, IoT, acceleration, movement actions, training, classification. Índice Capítulo 1. Introducción ................................................................................................................ 1 1.1 Antecedentes ...................................................................................................................... 1 1.2 Objetivos ............................................................................................................................. 4 1.3 Plan de Trabajo .................................................................................................................... 4 1.4 Organización de la memoria ............................................................................................... 5 Chapter 1. Introduction ................................................................................................................. 6 1.1 Preliminary .......................................................................................................................... 6 1.2 Objectives ............................................................................................................................ 8 1.3 Workplan ............................................................................................................................. 9 1.4 Report organization ........................................................................................................... 10 Capítulo 2. Modelos de redes ..................................................................................................... 11 2.1 Introducción ...................................................................................................................... 11 2.2 Redes Neuronales Recurrentes ......................................................................................... 12 2.3 Redes LSTM (Long Short-Term Memory) .......................................................................... 15 2.3.1 Entrenamiento y aprendizaje ............................................................................. 16 2.3.2 Parámetros de aprendizaje ................................................................................ 21 2.4 Clasificación ....................................................................................................................... 22 Capítulo 3. Diseño de la aplicación ............................................................................................. 23 3.1 Herramientas ..................................................................................................................... 23 3.1.1 Matlab ................................................................................................................ 23 3.1.2 ThingSpeak ......................................................................................................... 24 3.2 Diseño de la aplicación ...................................................................................................... 25 3.2.1 Arquitectura ....................................................................................................... 25 3.2.2 Diseño ................................................................................................................ 27 Capítulo 4. Resultados ................................................................................................................. 34 4.1 Entrenamiento .................................................................................................................. 34 4.2 Clasificación ....................................................................................................................... 37 4.3 Twitter ............................................................................................................................... 38 4.4 Historial ............................................................................................................................. 40 Capítulo 5. Conclusiones y trabajo futuro ................................................................................... 41 5.1. Conclusiones..................................................................................................................... 41 5.2 Trabajo futuro ................................................................................................................... 41 Chapter 5. Conclusions and future work ..................................................................................... 43 5.1 Conclusions........................................................................................................................ 43 5.2 Future work ....................................................................................................................... 43 Bibliografía .................................................................................................................................. 45 ANEXO: Manual de usuario ......................................................................................................... 47 1 Capítulo 1. Introducción 1.1 Antecedentes El presente trabajo se enmarca dentro del ámbito de la Inteligencia Artificial (IA), cuya esencia consiste en que una máquina o sistema imite, lo más fielmente posible, comportamientos de los seres humanos, pudiendo así razonar, aprender y tomar decisiones. Alan Turing fue uno de los pioneros de tratar con la IA, cuando en 1950 (Turing, 1950) publicó su famoso artículo Computing Machinery and Intelligence en el que se planteaba si las máquinas eran capaces de pensar, AI (2022). Desde entonces y hasta el momento actual la evolución de esta disciplina ha sido constante, hasta llegar a los tiempos actuales donde se ha producido una explosión significativa debido, fundamentalmente al desarrollo tecnológico con la aparición de distintas tecnologías y metodologías, que convenientemente combinadas han hecho posible los actuales avances en esta disciplina. Como consecuencia de ello, la IA facilita la vida de las personas en diferentes facetas. Por citar sólo algunas, cabe señalar cómo la utilización de sistemas basados en GPS permite calcular rutas inteligentes teniendo en cuenta las diferentes ubicaciones, a la vez que consideran variables tales como zonas de difícil acceso, con dificultad o de difícil acceso. En el ámbito del reconocimiento de voz o tratamiento de textos son bien conocidos los asistentes inteligentes tales como Siri o Alexa, de forma que interpretan y reconocen el mensaje de voz recibido para realizar una acción determinada, como puede ser activar un dispositivo para poner una canción o apagar un interruptor determinado, acceder a determinados servicios, como los meteorológicos. Los traductores de texto también se encuadran bajo el paradigma de procesamiento del lenguaje natural con carácter inteligente. Continuando dentro del contexto de las aplicaciones inteligentes, resultan bien conocidos los sistemas de monitorización de actividades físicas realizadas por las personas. Existen aplicaciones instaladas en la mayoría de los dispositivos móviles con capacidad de contar el número de pasos o la distancia recorrida durante determinados espacios de tiempo, tal es el caso de Adidas Running o GoogleFit por citar sólo algunas. Dentro del control de las mencionadas actividades físicas algunos dispositivos, tales como los velocímetros de Garmin (Garmin, 2022) que incluyen sensores de velocidad y cadencia del movimiento que permiten detectar posibles cambios bruscos de movimiento y cadencias de velocidad y enviar avisos a 2 través de un smartphone con conexión bluetooth ante posibles incidencias tales como caídas de una bicicleta. Es justamente en el ámbito de la monitorización física de actividades de personas donde se enmarca el presente trabajo. Más concretamente se propone el desarrollo de un sistema inteligente que identifica la actividad realizada por una persona a partir de los datos de movimiento proporcionados por los sensores embebidos dentro de un dispositivo móvil (smartphone o tablet). Los datos disponibles son, generalmente: aceleración, velocidad, campo magnético, orientación, velocidad angular y posición. Estos datos se reciben en el propio dispositivo móvil a través de la correspondiente aplicación de Matlab (App Matlab Mobile, 2022), previamente instalada según el sistema operativo de Android o iOS. Con los valores de aceleración se entrena un modelo de red neuronal específicamente diseñada con tal propósito. Se trata de una red específica dentro de la IA y bajo el paradigma de lo que se conoce como Aprendizaje Profundo (Deep Learning) y más concretamente el modelo denominado Long-Short Term Memory (LSTM) con capacidad de procesamiento de secuencias de datos recibidos a lo largo del tiempo, que es justamente como se reciben los valores de aceleración asociados con una acción determinada. El mecanismo de procesamiento de las secuencias temporales, junto con el modelo de esta red se puede encontrar en Goodfellow y col. (2016) o Pajares y col. (2021). De hecho, Sa-nguannarm y col. (2021) recomiendan la utilización de acelerómetros para la identificación de acciones de movimiento mediante técnicas basadas en los modelos LSTM. De esta manera, se pueden monitorizar determinadas actividades realizadas por una persona equipada con un dispositivo móvil y con la App instalada de Matlab. El modelo de red LSTM se encuentra previamente entrenado con capacidad para identificar las siguientes acciones: “Dancing”, “Running”, “Sitting”, “Standing” y “Walking”. Una vez recibida una secuencia de datos de aceleración el programa indicará el tipo de actividad que corresponda a dichos datos según las categorías anteriores. Otro aspecto destacable importante es que los resultados del procesamiento y los propios datos pueden ser tratados desde el punto de vista de otro de los paradigmas emergentes actuales, cual es, el conocido como Internet de las Cosas (IoT, Internet of Things), que también se aborda en el presente proyecto. En este caso, el dispositivo móvil es la “Cosa” que proporciona los datos, como se ha indicado previamente, los cuales se procesan de forma inteligente mediante el modelo de red LSTM bajo Matlab (2022). Los resultados del 3 procesamiento se almacenan en la correspondiente plataforma en la nube, en este caso a través de la plataforma ThingSpeak (2022), que es específica de Matlab para IoT. Con este planteamiento es importante mencionar que este diseño permite su aplicación a diversos campos que, sin duda, pueden ayudar a mejorar la calidad de vida de las personas. Por ejemplo, en el ámbito de la medicina y de cara a procesos de rehabilitación se puede controlar de forma inteligente las actividades realizadas en las diferentes sesiones. O bien, estudiar la causa-efecto de determinados tratamientos farmacológicos en función de la actividad realizada a lo largo del tiempo. Durante la realización de las actividades bajo monitorización se pueden programar acciones en ThingSpeak para que avise de la realización de las mismas, por ejemplo vía Twitter, a la vez que se almacenan los datos en esta plataforma y se visualizan de forma remota, de forma que se favorece el seguimiento y control de las actividades bajo una supervisión inteligente. Este trabajo se inspira en modelos y planteamientos previos con la misma o similar finalidad. En este sentido, Bayat y col. (2014) utilizan un smartphone también para obtener datos de aceleración, según los tres ejes de coordenadas (X, Y, Z), exactamente como los utilizados en este proyecto. Si bien, como método de identificación de las acciones se utiliza una red neuronal del tipo retro-propagación junto con otras técnicas inteligentes como las Máquinas de Vectores Soporte, que también se utilizan en Pilataxi y col. (2019) con la misma finalidad. Kozina y col. (2013) identifican las caídas de personas por cambios bruscos en el movimiento de un acelerómetro, similar a la funcionalidad que ofrece el dispositivo Garmin (2022) mencionado previamente. Por otra parte, en los dos cursos precedentes, tanto Pavón (2020) como HerreroFernández y Jiménez-González (2021) desarrollaron sendas aplicaciones, en sus correspondientes trabajos fin de grado, con similares características a la propuesta en el presente trabajo y por tanto, dentro del paradigma de Aprendizaje Profundo. De hecho, en ambos casos se utilizaron también como datos los valores de aceleración en los tres ejes y el modelo de red LSTM. En el primer caso el procesamiento de datos se realiza en un servidor adaptado al efecto y en el segundo caso, el tratamiento se realiza en modo local, al igual que en este trabajo. Además, en Herrero-Fernández y Jiménez-González (2021) también se utiliza IoT y la plataforma ThingSpeak para recepción y monitorización de los datos. 10 1.4 Report organization The report is structured in chapters as follows: • The first chapter, which is the introduction, in addition to preliminary aspects, describes the objectives and planning of the project. • The second chapter explains the different types of networks and their functioning. • The third chapter describes the design of the application, starting with the description of the tools used and its architecture. • The fourth chapter presents the results obtained, both from the point of view of training, classification and management of the functionalities in the cloud. • The fifth chapter presents the conclusions and possible future improvements of the application. 11 Capítulo 2. Modelos de redes 2.1 Introducción El presente capítulo describe el modelo de red neuronal aplicado en este trabajo, para el que se sigue la referencia de Pajares y col. (2021). Concretamente, las Redes Neuronales Recurrentes (RNN, Recurrent Neural Network) y bajo el concepto de ellas el modelo conocido como Long Short-Term Memory (LSTM). Como se especifica más adelante, la aplicación recibe secuencias de entrada temporales de la forma ( ) 1 T tt t ,. = xy En este caso concreto son secuencias de movimientos a partir de los datos suministrados por un smartphone, figura 2.1, dotado de tecnologías sensoriales apropiadas, que proporcionan los siguientes datos secuenciados en el tiempo: 1) Orientación, expresada en grados con respecto a los correspondientes ejes X, Y y Z, esto es: azimut (yaw,  ) o ángulo entre el eje Y positivo y el norte magnético N, definido en el rango [0,360]; cabeceo (pitch,  ) positivo o giro del eje Z positivo hacia el eje Y positivo; y alabeo (roll,  ) positivo o giro del eje Z positivo hacia el eje X positivo. 2) Velocidad angular (wx, wy, wz) en los respectivos ejes X, Y y Z en rad/s; 3) Aceleración (ax, ay, az) en los respectivos ejes X, Y y Z en m/s2. En cada instante de tiempo t se puede definir un vector de entrada a la red que caracteriza las aceleraciones, tal como: xt  (ax, ay, az)t 3  de forma que a cada secuencia se le asocia una etiqueta que en realidad es una clase yt  ci, siendo i el número de clases definidas. De esta forma, el objetivo consiste en determinar el estado de movimiento de una persona equipada con un dispositivo móvil según la actividad que esté desarrollando en cada momento concreto, por ejemplo, entre otras, c1  sentada; c2  saltando; c3  corriendo o c4  caminando. En este caso se trataría de un sistema con cuatro clases y por tanto i es cuatro en este ejemplo. El vector xt puede definirse con los nueve valores, tres de orientación, tres de velocidad angular y otros tres de aceleración, de forma que en este caso 9 tx . 12 Figura 2.1 Ángulos de orientación Esta es la idea expuesta en el trabajo de Rego-Drumond y col. (2018), donde los valores de orientación, velocidad angular y aceleración se obtienen mediante dispositivos del tipo IMU (Inertial Measurement Units), esto es, unidades de medición inercial. A modo de ejemplo ilustrativo, las cuatro clases definidas previamente se representan por los siguientes valores: c1  (1,0,0,0), c2  (0,1,0,0), c3  (0,0,1,0) y c4  (0,0,0,1). 2.2 Redes Neuronales Recurrentes Las RNN se caracterizan por su utilidad para resolver problemas donde aparecen datos secuenciales, de forma que pueden retener información de un estado en la secuencia de una iteración a la siguiente (Rumelhart y col., 1986). La clave de estos modelos está en el hecho de que comparten parámetros, lo que permite su aplicación a problemas de distinta naturaleza, a la vez que se consiguen generalizaciones específicas para extraer la información procedente de los datos. Conviene señalar que, generalmente, las secuencias están estructuradas en el tiempo, siendo por tanto el tiempo una de las variables clave en estos procesos. Justamente esto es lo que sucede en el presente trabajo, de forma que los datos a procesar son componentes de aceleración, que representan acciones de movimiento. Existen diversos modelos de RNN, cuya representación más simple es la que se muestra en la figura 2.2 tanto en su versión plegada como desplegada. 13 (a) (b) Figura 2.2 Modelo de red RNN: (a) plegada y (b) desplegada Cada flecha representa una conexión total entre las capas (fully connected), que se establece mediante los correspondientes pesos representados por las matrices W, que son justamente las estructuras para aprender durante el proceso de entrenamiento de la red. Existen conexiones laterales y verticales. Las verticales conectan las respectivas capas de entrada, oculta y salida en un instante de tiempo y por tanto para una entrada dada x. En el caso que nos ocupa estos vectores x son las componentes de aceleración proporcionadas por el dispositivo móvil en el instante de tiempo t, mientras que las laterales permiten conexiones entre distintos instantes de tiempo (t-1, t, t+1). En la figura 2.3 se muestra la arquitectura del modelo de forma extendida y en un mayor nivel de detalle. Así, para cada entrada xt se genera una salida yt, esto es, para una entrada con las tres componentes de aceleración se produce una salida que representa la acción realizada. 14 Figura 2.3 Redes recurrentes con salidas y conexiones entre unidades ocultas El mecanismo de funcionamiento de este modelo se puede sintetizar como sigue: a) La secuencia de entrada xt genera la secuencia de salida ot. La función de pérdida L mide la similitud de ot con respecto a la salida objetivo o deseada yt, de forma que internamente se obtiene ( ) tt ˆsoftmax=yo comparándola con yt. b) El modelo RNN tiene entradas a conexiones ocultas definidas por la matriz de pesos U, conexiones recurrentes entre unidades ocultas parametrizadas por una matriz de pesos W y conexiones entre unidades ocultas hacia la salida, parametrizadas por una matriz de pesos V. c) La función total de pérdida para una secuencia dada de valores x emparejados con una secuencia de valores de salida y, es justo la suma de las funciones de pérdida sobre todos los pasos de tiempo. La pérdida total para una secuencia dada de valores x emparejados con una secuencia de valores y sería exactamente la suma sobre todos los pasos de tiempo. Por ejemplo, si Lt es la estima de máxima verosimilitud (log-likelihood) negativa de yt dadas x1,…, xt, entonces,     ( )   ( ) 1 1 1 t t t modelo t t tt L ,..., , ,..., L log p y | ,...,= = −  x x y y x x (2.1) donde   ( ) 1modelo t t p y | ,...,xx viene determinado leyendo la entrada para yt a partir del vector modelo t ˆ y . d) Para el entrenamiento se requiere un número considerable de datos, con sus correspondientes asociaciones entrada-salida, es decir los mencionados pares (xt, yt) que asocian los datos de aceleración con la acción realizada. Por otra parte, existen diferentes topologías de red teniendo en cuenta la conexión entre las distintas capas Goodfellow y col. (2016). En la figura 2.4 se muestran varias estructuras 15 topológicas. Para cada uno de ellos se muestran algunos ejemplos ilustrativos de aplicación según el esquema correspondiente: • Uno a uno: un objeto de una imagen → una etiqueta de su clasificación. • Uno a muchos: imagen → sentencia descriptiva de la imagen. • Muchos a uno: frase → sentimiento (positivo o negativo). • Muchos a muchos (secuencia-secuencia): datos de aceleración → acción de movimiento. • Muchos a muchos (secuencia-secuencia sincronizada): frames de vídeo → bounding boxes asociados con cada objeto. Figura 2.4 Diferentes topologías de red Como puede observarse, el modelo que se corresponde con este trabajo es el “muchos a muchos sincronizado”, ya que las secuencias de entrada xt se producen espaciadas en el tiempo, esperando para esa misma entrada y en el mismo instante de tiempo una salida, yt, de aquí el concepto de sincronización. 2.3 Redes LSTM (Long Short-Term Memory) Resulta bien conocido que en las redes neuronales profundas las dependencias conocidas como long-term constituyen un reto importante. El problema se resume en el hecho de que los gradientes que se retropropagan sobre muchos estados tienden o bien a desaparecer, la 16 mayoría de las veces, o a una explosión computacional, menos a menudo, que afecta claramente al proceso de optimización. Esto se debe principalmente a que el gradiente depende de los errores, tanto actuales como pasados, de forma que la acumulación continuada de errores origina problemas importantes para memorizar dependencias a largo alcance, de aquí la terminología denominada long-term. Goodfellow y col. (2016) proporcionan algunas propuestas para resolver esta problemática. Dentro de las citadas propuestas destaca la que se describe a continuación, que se basa en el concepto denominado Long Short-Term Memory (LSTM) que permite especificar la información que debe preservarse o eliminarse, esto es, almacenarse en forma de memoria, de ahí el término memory, o descartarse. Este es el modelo propuesto en este trabajo. Como en cualquier modelo de aprendizaje, como es el caso, estos modelos constan de dos fases: Aprendizaje y Clasificación. 2.3.1 Entrenamiento y aprendizaje Las LSTM fueron introducidas por Hochreiter y Schmidhuber (1997) con el fin de resolver el problema del gradiente indicado previamente. Se trata de una red RNN específica que procesa una secuencia de pares de entrada-salida ( ) 1 T tt t ,= xy . Para cada par de valores ( ) tt ,xy , la correspondiente celda LSTM toma una nueva entrada xt y el valor oculto ht-1 obtenido en el paso previo, y con ello produce una estima t ˆ y para la salida objetivo yi establecida al efecto y dada la secuencia de entrada previa x1, x2,…, xt también con un nuevo valor oculto ht y un nuevo valor del estado de la celda o memoria Ct. La figura 2.5 muestra de forma detallada la estructura de una celda LSTM sobre el tiempo, con el cómputo establecido como se describe seguidamente tal y como aparece en Graves (2013). En la referida figura se muestra una estructura característica del mencionado tipo LSTM tal y como se especifica en los trabajos de Gers y col. (2002) y Olah (2015). Cada celda temporal recibe, en cada paso de tiempo, una muestra de la secuencia x procedente de la capa de entrada, y envía el estado de la celda actualizado, así como el valor de la salida h al siguiente paso, es decir, a la siguiente celda. Por otra parte, en cada paso también se envía el correspondiente valor h a la capa de salida. Estos términos están indexados por el subíndice t correspondiente que establecen los pasos concretos de la secuencia en cada una de las distintas unidades que conforman el modelo. 17 (a) (b) Figura 2.5 Estructura general y conexión de las celdas LSTM El estado de cada celda viene a ser una línea de transporte que atraviesa la celda con las interacciones que se indican explícitamente en la figura 2.6, de modo que la LSTM puede eliminar o añadir información al estado de la celda mediante estructuras que se denominan en la terminología especializada como gates, formadas por operaciones del tipo mostrado en la subfigura de la parte derecha de la figura 2.5 con el flujo de información indicado por las flechas en dicha subfigura. Figura 2.6 Línea de estado de la celda El primer paso en una estructura LSTM es decidir qué información eliminar del estado de la celda, cuya responsable es una capa sigmoidal denominada puerta de olvido o forget gate, ft, definida según la ecuación (2-2) y la figura 2.7, 18 ( ) 1t g xf t hf t f UW  − = + +f x h b (2.2) de forma que teniendo en cuenta los pesos Uxf y Whf y un bias bf, a través de la función sigmoide (σg) se genera un valor entre 0 y 1 para cada estado de la celda Ct-1. Un valor de 1 significa mantener este estado por completo y un 0 deshacerse de él. Por ejemplo, en el modelo de identificación de acciones de movimiento, que trata de predecir la siguiente acción en base a todas las anteriores, el estado de la celda podría incluir la acción actual. Cuando se ve un elemento nuevo, la idea podría ser conservar la acción anterior por considerar que los movimientos entre transiciones son suaves y no bruscas. Es decir, si estamos realizando la acción de correr, el paso a una situación de sentado, no es inmediato, requiriendo un proceso de transición. Figura 2.7 Forget gate El siguiente paso consiste en decidir qué información nueva se va a almacenar en el estado de la celda, lo cual tiene dos partes. Primero, una capa sigmoide llamada puerta de entrada (input gate) it, figura 2.8, decide qué valores se actualizan. ( ) ( ) 1 1 t g xi t hi t i t c xc t hc t c UW UW   − − = + + = + + i x h b g x h b (2.3) Seguidamente, una capa c  (generalmente de tipo tangente hiperbólica, tanh) crea nuevos valores candidatos gt, que podrían agregarse al estado, teniendo en cuenta los pesos Uxi, Whi, Uxc y Whc, junto con los correspondientes bias bi y bc. En el siguiente paso, se combinan ambos para generar una actualización del estado. 19 Figura 2.8 Input gate y estado de la celda Ahora es el momento de actualizar el estado previo de la celda, gt-1, al nuevo estado de esa celda gt. Los pasos anteriores ya decidieron qué hacer, solo es necesario hacerlo ahora, para ello se multiplica el estado antiguo por ft, olvidando las cosas que se decidieron olvidar antes. Luego se suma el término tt ige , figura 2.9, que son los nuevos valores candidatos, en función de cuánto se decide actualizar cada valor de estado. 1t t t t t f− =+C C i gee (2.4) En el caso del modelo de detección de acciones, aquí es donde realmente se conserva o se elimina la información sobre la acción anterior anterior y se agrega la nueva información, tal como se decidió en los pasos anteriores. Figura 2.9 Actualización del estado de la celda Finalmente, es necesario obtener el resultado de la salida, que se basa en el estado de la celda, si bien, se trata de una versión filtrada, figura 2.10. Primero, se aplica la función sigmoide que decide qué partes del estado de la celda van a contribuir a la salida. Luego, se aplica la función tanh, que sitúa los valores en el rango −1 y 1 y se multiplica por la salida de la puerta de tipo sigmoidal, de modo que solo contribuyen a la salida las partes seleccionadas. ( ) ( ) 1t g xo t ho t o t t c t UW   − = + + = o x h b h o Ce (2.5) 26 Figura 3.1 Arquitectura de la aplicación • Matlab Matlab abarca las funcionalidades básicas y principales de la aplicación, consistentes en el entrenamiento de la red LSTM y la clasificación de acciones una vez actualizados los pesos de las diferentes capas tras dicho entrenamiento. Una vez realizado el entrenamiento, se procede a activar los sensores en el dispositivo móvil y a capturar los datos de la aceleración para proceder a la clasificación de la acción ejecutada en ese momento y que constituyen las entradas a la red entrenada. • ThingSpeak ThingSpeak proporciona y habilita la posibilidad de gestión y almacenamiento de los datos en la nube. Cuando se completa la clasificación de acciones, se introducen los datos obtenidos de los sensores en el correspondiente canal de ThingSpeak así como la acción realizada, lo que sirve para poder acceder al historial de todas las acciones realizadas, además de posibilitar la publicación de los tweets correspondientes según la acción realizada. En este caso, se trata de una funcionalidad específica programada a través de la interfaz de aplicaciones que proporciona ThingSpeak. 27 3.2.2 Diseño En la figura 3.2 se muestra la pantalla principal de la aplicación. En la parte izquierda se encuentran las ventanas de acceso a las distintas funcionalidades implementadas, a saber: • Entrenamiento de la red. • Preparación del entorno de operación, a través del cual se carga la red previamente entrenada, así como la identificación del dispositivo móvil que se utilizará para la captura de acciones a través de los sensores de movimiento. • Clasificación de una acción en función de los valores de aceleración proporcionados por los sensores del dispositivo móvil. • Acceso al historial de las actividades mediante los servicios de ThingSpeak. En el panel de la parte derecha de la figura 3.2 se muestra un contendor relativa a una representación gráfica, en este momento vacía, de los datos de la aceleración y el nombre de la acción realizada, que se actualiza una vez terminado el proceso de clasificación. Figura 3.2 Vista principal de la aplicación 28 3.2.2.1 Funcionalidades • Entrenamiento Como se ha mencionado previamente, bajo el paradigma de Aprendizaje Profundo, se entrena una red de tipo LSTM con los datos de los sensores de movimiento, concretamente los correspondientes a la aceleración, obtenidos mediante un dispositivo móvil y utilizando las componentes del vector aceleración según sus correspondientes tres ejes X, Y, Z. Para el entrenamiento se dispone de seis secuencias de datos de aceleración con el número de datos que se muestra en la tabla siguiente. Son datos disponibles en el repositorio de Matlab. En la figura 3.3 se muestra una representación de los datos de aceleración para la secuencia de entrenamiento número 3, con sus 56.416 datos. Todas las secuencias contienen datos correspondientes a las cinco acciones indicadas, que por otra parte constituyen las etiquetas utilizadas como referencia para el entrenamiento. Secuencia 1 2 3 4 5 6 Número de datos 64.480 53.396 56.416 50.688 51.888 54.256 Tabla 3.1 Secuencias y número de datos de aceleración Figura 3.3 Representación de datos de entrenamiento para la secuencia 3 Cuando los datos de reconocimiento de la actividad humana están cargados, se define la arquitectura de la red LSTM indicando como entrada secuencias de tamaño 3, especificando una capa LSTM con 200 unidades ocultas y generando una secuencia completa tal y como se 29 muestra en la figura 3.4, S2S (2022). Donde la secuencia de entrada (sequenceinput) constituye el nodo de entrada, que conecta con la mencionada estructura LSTM y a partir de aquí las salidas se proyectan sobre una capa totalmente conectada (fc, fully connected), que a su vez se enlaza con la capa softmax para determinar las probabilidades de pertenencia de cada dato de aceleración a una de las clases previstas (Dancing, Running, Sitting, Standing, Walking), de forma que en la capa final classoutput se determina la acción correspondiente en función de la máxima probabilidad obtenida en la mencionada capa softmax. Figura 3.4 Modelo de la red con la estructura LSTM insertada Continuando con la figura 3.5, se muestra el panel correspondiente a lo que se denomina Solver, la Tasa o razón inicial de aprendizaje y el Número máximo de épocas del entrenamiento por defecto, si bien tal y como se ha definido la aplicación estos valores son modificables. El Solver, que se refiere al algoritmo de optimización utilizado, da la opción de elegir uno de los siguientes valores (Pajares y col., 2021): • sgdm (stochastic gradient descent with momentum) – utiliza el optimizador SGDM. • adam – utiliza el optimizador Adam. • rmsprop – utiliza el optimizador RMSProp. El número máximo de épocas es el número de veces que el algoritmo procesa todo el conjunto de entrenamiento. Respecto a la razón de aprendizaje inicial, si es muy baja el entrenamiento se extenderá con un mayor número de iteraciones, y si es muy alta el resultado puede llegar a ser 30 subóptimo o divergir. Es necesario, por tanto, buscar un equilibrio dentro del rango de valores permitido, esto es [0,1], sin que exista un criterio claro de cuál debe ser el mejor valor, TrainingOptions (2022). Figura 3.5 Opciones de entrenamiento de la red • Inicio Con anterioridad a la clasificación, para recibir los datos que envían los sensores de un dispositivo móvil es necesario identificar dicho dispositivo. La cuenta en la que se inicie sesión de Matlab Desktop o Matlab Online debe ser la misma que la de Matlab Mobile. • Actividad Utilizando la red LSTM ya entrenada y activando los sensores en el móvil, se procede a la clasificación de la actividad desde la versión de escritorio u online de Matlab, teniendo en cuenta para ello sólo los datos de aceleración en sus tres componentes X, Y y Z, coincidiendo con los correspondientes valores de entrenamiento. • Historial Se puede llevar a cabo un seguimiento de las acciones realizadas con una tabla que señala la fecha y la actividad, como se observa en la figura 3.6. Las fechas estarán ordenadas de mayor a menor, teniendo así la más reciente en la primera fila. Esta funcionalidad corresponde al diseño de ThingSpeak. 31 Con tal propósito, el canal creado en ThingSpeak consta de cuatro campos, en los que se introducen datos cuando se obtiene el tipo de actividad a través del proceso de clasificación en Matlab con la red LSTM. Estos campos se corresponden exactamente con los tres ejes mencionados de la aceleración y la clasificación de la acción correspondiente, como se muestra en la figura 3.6. Cuando se accede al historial, se obtienen los datos previamente introducidos en el canal de ThingSpeak, figura 3.7. Figura 3.6 Vista del historial de acciones Figura 3.7 Campos del canal de ThingSpeak 32 • Twitter Cada vez que se registra un movimiento en ThingSpeak, se publica un tweet por medio de las aplicaciones ThingTweet y React. Los tweets se indican por medio de la última aplicación mencionada, de forma que cada acción tiene el suyo propio, excepto cuando se detecta que el usuario está sentado (Sitting), ya que en este caso se publica un tweet cuando se obtiene esta actividad dos o más veces seguidas, que corresponde a la reacción “Sin movimiento” de la figura 3.8. Cada una de las acciones se especifica tal y como se muestra en el ejemplo de la figura 3.9. Figura 3.8 Reacciones de la aplicación React de ThingSpeak vinculadas a Twitter 33 Figura 3.9 Reacción del movimiento “Bailar” en React En ThingTweet se encuentra la cuenta de Twitter vinculada con el usuario @EmmaTFG y las reacciones de ésta, figura 3.10. Figura 3.10 ThingTweet 34 Capítulo 4. Resultados En este capítulo se muestran los resultados de la aplicación según las funcionalidades de la aplicación descritas anteriormente. 4.1 Entrenamiento Por defecto se dispone de una red previamente entrenada con la función de optimización adam, utilizando 60 épocas como valor máximo y 0.001 como razón de aprendizaje inicial. Si se quisiera cambiar cualquiera de estos valores, se introduce en cada cuadro de texto de la ventana correspondiente el valor que se desee y se pulsa sobre “Comenzar entrenamiento”. En total aparecerán tres gráficas, una al iniciar este proceso y otras dos al finalizarlo, figura 4.1. En la figura 4.1(a) se muestra una secuencia de datos previamente capturados con el dispositivo móvil, correspondientes a valores de aceleración con los que se entrena el modelo de red. Se identifican por su color los datos de aceleración correspondientes a cada una de las cinco acciones que reconoce la red LSTM (Dancing, Running, Sitting, Standing, Walking), capturados a lo largo del tiempo. Por otro lado, se dispone también de una serie de datos de test, igualmente previamente capturados y almacenados correspondientes a valores de aceleración para el mismo tipo de acciones previstas. En esta gráfica aparecen representadas de forma superpuesta tres tipos de datos de test (Características 1, 2 y 3) a lo largo del tiempo. Utilizando estos datos de test se procede a la validación de los mismos clasificando las acciones correspondientes con el modelo entrenado, de esta forma se realiza una predicción de los resultados en cuanto a las acciones identificadas y a la vez se comparan con las acciones verdaderas, que aparecen recogidas también en los datos de test. Es decir, los datos de test contienen la acción que corresponde a cada terna de datos de aceleración. Esto permite comparar los resultados de la clasificación del modelo LSTM con los de test, en lo que se conoce como validación del modelo. De hecho, en el gráfico de la figura 4.1(c) se representan solapados tanto los datos predichos o clasificados con el modelo, identificados como “Predicción”, como los verdaderos, que se identifican como “Datos test”. La forma gráfica de determinar el grado de acierto consiste en analizar las discrepancias de color según las gráficas de predicción y datos de test, observándose una muy alta coincidencia, ya que las predicciones (gráfica azul) ocultan los valores del test (gráfica naranja). 35 Si antes de comenzar el entrenamiento no se dispone del archivo de red previamente almacenado, se creará uno nuevo tras la finalización del entrenamiento. En caso contrario, se sobrescribirá el existente, actualizándose el modelo LSTM de red entrenado. (a) (b) (c) Figura 4.1. (a) Datos de entrenamiento del modelo LSTM; (b) Datos de test; (c) Actividades predichas Al empezar el entrenamiento también emergerá una ventana indicando el progreso del éste. Por ejemplo, poniendo como épocas máximas 10, como solver sgdm y la tasa de aprendizaje inicial al valor 0.01, aparecería la ventana mostrada en la figura 4.2. En la parte izquierda se muestran dos gráficas, una correspondiente a la evolución de la precisión y otra a la función de pérdida, y en la parte derecha la información relativa al entrenamiento, así como la leyenda de las líneas de cada gráfica. Como se ha indicado previamente, las gráficas sirven para determinar el progreso de la precisión y pérdida de la red. Cada una de ellas muestran tres tipos de datos, aunque en esta 42 • Añadir más avisos a través de tweets, por ejemplo, si no se ha detectado movimiento en un día entero, como alerta ante situaciones no deseadas. • Ofrecer la posibilidad de entrenar los modelos LSTM con distintos tipos de acciones, no necesariamente las establecidas por defecto. De esta forma, para la clasificación se podrán utilizar distintos tipos de red entrenada a elección del usuario. • Añadir, mediante la interfaz de usuario, la posibilidad de introducir todos los parámetros configurables para el entrenamiento, citando expresamente el umbral de gradiente o la frecuencia de validación de la red, cuyo objetivo es poder obtener una red entrenada más personalizada. • Añadir más tipos de movimientos, que se añadan a la base de movimientos preestablecidos. • Añadir una nueva funcionalidad para para resetear el historial de movimientos, borrando los campos del canal correspondiente en ThingSpeak. • Añadir estadísticas de los movimientos realizados, cada cierto periodo de tiempo, por ejemplo diario, semanal o mensual, incluyendo gráficas y porcentajes actualizados. 43 Chapter 5. Conclusions and future work 5.1 Conclusions Thanks to the use of the tools provided by Matlab and ThingSpeak, it has been possible to develop the application presented, which consists of the classification of human actions according to the movement performed. The motion data are captured by the sensors of a mobile device, specifically acceleration values in the three axes X, Y, Z. The application design consists of a user interface, which gives access to the processes implemented under its coverage. One such process is the training of a network of the LSTM type, within the Deep Learning paradigm, whose architecture consists of a series of sequential cells in time, having as input the aforementioned acceleration data. A second process is the classification of new actions, also using acceleration data, obviously once the network has been trained. Both functionalities are developed in Matlab. A third associated functionality consists of the connection to a cloud server for data logging and storage, as well as the history of actions performed. This is done through the services offered by the ThingSpeak platform, specially designed to work under the IoT paradigm. Taking advantage of the resources and services offered by ThingSpeak, an event has been programmed that connects with the social network Twitter and allows receiving tweets in an account to that network containing information of the actions performed. All this with the consequent internet coverage. The tests carried out have allowed to verify the correct functioning of the application developed for the different types of movements foreseen with which the network has been trained. 5.2 Future work Looking ahead, the app could be improved by making the following changes and extensions discovered during development: • Add more warnings through tweets, for example, if no movement has been detected for a whole day, as an alert to unwanted situations. 44 • Offer the possibility of training LSTM models with different types of actions, not necessarily those established by default. In this way, for the classification, different types of trained network can be used at the user's choice. • Add, through the user interface, the possibility of introducing all the configurable parameters for training, expressly citing the gradient threshold or the network validation frequency, whose objective is to be able to obtain a more personalized trained network. • Add more types of movements, which are added to the base of pre-established movements. • Add a new functionality to reset the history of movements, deleting the fields of the corresponding channel in ThingSpeak. • Add statistics of the movements made, every certain period of time, for example daily, weekly or monthly, including graphs and updated percentages. 45 Bibliografía 1. Bishop, C.M. (2006). Pattern Recognition and Machine Learning, Springer, NY, USA. 2. Gers, F.A, Schraudolph, N.N., Schmidhuber, J. (2002). Learning precise timing with LSTM recurrent networks. Journal of Machine Learning Research, 3,115–143. 3. Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep learning. MIT Press. Disponible online: https://www.deeplearningbook.org/ (Accedido Marzo 2022). 4. Graves, A. (2013). Generating sequences with recurrent neural networks, Computer Science. arXiv:1308.0850. 5. Hochreiter, S., Schmidhuber, J. (1997). Long short-term memory. Neural Computation, 9(8), 1735–1780. 6. Olah, C. (2015). Understanding LSTM Networks. Disponible on-line: http://colah.github.io/posts/2015-08-Understanding-LSTMs/ (Accedido Marzo 2022). 7. Pajares, G., Herrera, P.J., Besada, E. (2021). Aprendizaje Profundo. RC-Libros, Madrid. 8. Rego-Drumond, R., Dorta-Marques, B., Nader-Vasconcelos, C. Clua, E. (2018). PEEK - An LSTM Recurrent Network for Motion Classification from Sparse Data. In Proc. 13th International Joint Conference on Computer Vision, Imaging and Computer Graphics Theory and Applications - Volume 1: GRAPP, pp. 215-222. 9. Rumelhart, D.E., Hinton, G.E., Williams, R.J. (1986). Learning representations by backpropagating errors. Nature. 323 (6088), 533–536. 10. Ruder, S. (2017). An overview of gradient descent optimization algorithms. arXiv:1609.04747v2 [cs.LG]. 11. S2S (2022) Sequence-to-Sequence Classification Using Deep Learning. Disponible on-line: https://es.mathworks.com/help/deeplearning/ug/sequence-to-sequence-classificationusing-deep-learning.html (Accedido Abril 2022). 12. AI (2022). Artificial intelligence. The Alan Turing Institute. Disponible on-line: https://www.turing.ac.uk/research/research-programmes/artificial-intelligence-ai (Accedido Abril 2022). 13. Casado-Fernández, M.C. (2022). Manual Básico de Matlab. Servicios Informáticos U.C.M. Apoyo a Investigación y Docencia. Disponible on-line: https://webs.ucm.es/centros/cont/descargas/documento11541.pdf (Accedido Abril 2022). 46 14. Matlab (2022). Descripción del producto MATLAB. Disponible on-line: https://es.mathworks.com/help/matlab/learn_matlab/product-description.html (Accedido Abril 2022). 15. TrainingOptions (2022). Options for training deep learning neural network. Disponible online: https://es.mathworks.com/help/deeplearning/ref/trainingoptions.html (Accedido Abril 2022). 47 ANEXO: Manual de usuario A continuación se describen los pasos necesarios y las instrucciones correspondientes para la ejecución de la aplicación, cuyo código se encuentra en el siguiente enlace: https://github.com/emmatalavera/TFG.git Pasos previos Para poder ejecutar la aplicación, es necesario seguir previamente estos pasos: 1. Descargar Matlab Desktop. 2. Descargar Matlab Drive. 3. Instalar en el móvil Matlab Mobile. 4. Instalar en Matlab Desktop los siguientes toolboxes: Deep Learning Toolbox, MATLAB Support Package for Apple iOS Sensors o MATLAB Support Package for Apple Android Sensors, Sensor Fusion and Tracking Toolbox. Instrucciones Entrenamiento Como ya se ha explicado anteriormente, se dispone de un archivo de red entrenada por defecto llamado “RedLSTM” con la función de optimización adam, utilizando 60 épocas como valor máximo y 0.001 como razón de aprendizaje inicial. Si se quiere modificar algún campo, se introducen los nuevos valores y se debe pulsar sobre “Comenzar entrenamiento”. Esto sobrescribirá el archivo existente. Si se desea, se puede parar este proceso para que el archivo no se vea modificado, pulsando sobre el botón de stop situado en la parte de arriba a la derecha. Clasificación Para llevar a cabo la clasificación, se debe abrir la aplicación Matlab en el dispositivo móvil que se vaya a usar y activar todos los sensores. Una vez hecho esto, se pulsará sobre el botón “Inicio” de la página principal y por último “Clasificación”. 48 La clasificación aparecerá en la parte derecha de la vista, junto con el diagrama correspondiente a la aceleración. Además, se publicará un tweet con la acción realizada en la cuenta que está asociada a ThingSpeak (@EmmaTFG). Historial Para ver el historial de movimientos, pulsar sobre “Historial” de la página principal.