scieee AI-readable full text Open interactive document viewer

Reconocimiento de acciones corporales mediante aprendizaje profundo con datos sensoriales de dispositivos móviles

Herrero Fernández, Mercedes; Jiménez González, Nerea

Abstract

En la actualidad, el uso de redes neuronales recursivas es muy frecuente, aunque no lo veamos a simple vista. Desde nuestras pulseras inteligentes hasta la aplicación más sencilla, es posible que exista una de estas redes trabajando en un segundo plano. En este proyecto mostramos cómo, con una sencilla red, se puede llegar a clasificar movimientos corporales. Para ello se propone el uso de una red neuronal del tipo LSTM (Long Short Term Memory), de forma que utilizando datos de aceleración procedentes de los sensores integrados en un dispositivo móvil, es posible, por un lado entrenar el modelo de red indicado para proceder, en segundo lugar a la clasificación de nuevas acciones. Se ha diseñado una aplicación que realiza esta funcionalidad. Además, se propone una extensión en el ámbito de lo que se conoce como Internet de las Cosas (IoT, Interner of Things) de forma que los resultados obtenidos se cargan en un servidor remoto, esto es, en la nube, que permite el acceso e intercambio de la información almacenada, mediante la red social Twitter. En el planteamiento que se propone se amplía la posibilidad de clasificar movimientos mediante una red previamente entrenada o bien diseñar una red definida ad hoc según las acciones requeridas.

Full text

Reconocimiento de acciones corporales mediante aprendizaje profundo con datos sensoriales de dispositivos móviles Recognition of body actions through deep learning with sensory data from mobile devices Trabajo de Fin de Grado Curso 2020–2021 Autores Mercedes Herrero Fernández Nerea Jiménez González Director Gonzalo Pajares Martinsanz Grado en Ingeniería del Software Facultad de Informática Universidad Complutense de Madrid Reconocimiento de acciones corporales mediante aprendizaje profundo con datos sensoriales de dispositivos móviles Recognition of body actions through deep learning with sensory data from mobile devices Trabajo de Fin de Grado en Ingeniería Software Departamento de Ingeniería de Software e Inteligencia Artificial Autores Mercedes Herrero Fernández Nerea Jiménez González Director Gonzalo Pajares Martinsanz Convocatoria: Junio 2021 Calificación: Grado en Ingeniería del Software Facultad de Informática Universidad Complutense de Madrid 5 de junio de 2021 Agradecimientos Mercedes Herrero En primer lugar, me gustaría agradecer a mi tutor Gonzalo, por cada consejo y sugerencia recibida durante el proyecto, por estar siempre dispuesto a atender nuestras dudas y guiarnos con su gran profesionalidad. Gracias a mi compañera Nerea por amenizar este trabajo desde el primer día. Gracias a todos los profesores que han dedicado su tiempo en resolver mis dudas y darme sus consejos para mejorar tanto a nivel profesional como personal. También quiero agradecer a todas las personas que me han hecho más llevaderos estos años. En especial a Juan, Esther y Jairo por estar desde el principio. A las CUP por ser mi desconexión, mi fuente de energía y los hombros donde me desahogo. A David por confiar más en mí que yo misma, gracias por acompañarme de la mano y darme un empujón cuando lo necesitaba. Para terminar, gracias a mi familia. A mis padres, por el enorme esfuerzo que han hecho para darme la enseñanza que quería, por inculcarme que con trabajo y perseverancia puedo alcanzar las metas que me proponga. A mis hermanos, por relajarme con risas siempre que necesito tomarme un respiro. A mi tía Ana, mi ángel que me cuida, gracias por enseñarme que la vida hay que disfrutarla venga lo que venga, ojalá pudiera enseñarte todo lo que he aprendido estos años. iv Nerea Jiménez Agradecimientos a todas las personas que me han ayudado día a día a seguir con la carrera. A la asociación ASCII por hacer que mi vida universitaria estuviese llena de recuerdos. A mis padres por apoyarme y darme mi espacio cuando lo necesitaba. A mi hermana por acompañarme en los momentos bajos. A mi novio por aguantarme en los momentos malos. A mis amigos, Toni por acompañarme en muchos momentos especiales para mí, Fer por estar ahí incluso cuando yo parecía no estar, Aru por seguir ahí aún cuando parecía que no y ayudarme con Latex Y BibTex, sin ti probablemente hubiese terminado odiando este trabajo. Alv por hacer de mis primeros años de carrera los mejores, a Juan por seguir a mi lado incluso en los peores momentos. A mis chicas Belén, Ela, Silvia y V por ayudarme a sentir que no estaba sola en la facultad. Agradecer a Mario que me ayudó a realizar el logo de la aplicación y que ha sido un compañero de oro. Agradecer a todos aquellos que me hacían compañía en las actividades, Eva, Richard, David, Tomás, Rubén, gente de videojuegos que vosotros sabéis quienes sois, gracias por aquel año maravilloso de bailes. Gracias a David Pascal, que me ha ayudado en muchos momentos y ha sido mi mentor de Látex. Gracias en especial a mi tutor del TFG, Gonzalo, por hacer que este trabajo final no se convirtiese en un infierno, si no en otro paso más de la carrera. Gracias a mi compañera Mercedes, por ayudarme a apretar cuando se necesitaba, y a relajarse cuando hacía falta. Y finalmente, gracias a todos aquellos profesores que me han ayudado a llegar aquí, con sus tutorías y su paciencia. Resumen En la actualidad, el uso de redes neuronales recursivas es muy frecuente, aunque no lo veamos a simple vista. Desde nuestras pulseras inteligentes hasta la aplicación más sencilla, es posible que exista una de estas redes trabajando en un segundo plano. En este proyecto mostramos cómo, con una sencilla red, se puede llegar a clasificar movimientos corporales. Para ello se propone el uso de una red neuronal del tipo LSTM (Long Short Term Memory), de forma que utilizando datos de aceleración procedentes de los sensores integrados en un dispositivo móvil, es posible, por un lado entrenar el modelo de red indicado para proceder, en segundo lugar a la clasificación de nuevas acciones. Se ha diseñado una aplicación que realiza esta funcionalidad. Además, se propone una extensión en el ámbito de lo que se conoce como Internet de las Cosas (IoT, Interner of Things) de forma que los resultados obtenidos se cargan en un servidor remoto, esto es, en la nube, que permite el acceso e intercambio de la información almacenada, mediante la red social Twitter. En el planteamiento que se propone se amplía la posibilidad de clasificar movimientos mediante una red previamente entrenada o bien diseñar una red definida ad hoc según las acciones requeridas. Palabras clave: redes neuronales recurrentes, clasificación, movimientos, IoT, ThingSpeak,redes LSTM, entrenamiento, aprendizaje automático, inteligencia artificial vi Abstract Currently, the use of recursive neural networks is very frequent, although we don’t see it right away. From our smart bracelets to the simplest application, it is possible to find one of these networks working in the background. In this project, we show how with a simple network, it is possible to classify body movements. For this, the use of a neural network of the LSTM type (Long Short Term Memory) is proposed. It is feasible to use acceleration data from the sensors integrated in a mobile device and also to train the indicated network model to proceed to the classification of new shares. An application has been designed that performs this functionality. In addition, an extension is proposed in the field of what is known as the Internet of Things (IoT) so that the results obtained are uploaded to a remote server, that is, in the cloud, which allows access and exchange of stored information, through the social network Twitter. The suggested come up with the possibility of classifying movements through a previously trained network or designing a defined ad hoc network according to the required actions. Keywords: recurrent neural networks, classification, movements, IoT, ThingSpeak, LSTM networks, training, automatic learning, artificial intelligence. vii Índice 1. Introducción 1 1.1. Consideraciones generales . . . . . . . . . . . . . . . . . . . . 1 1.2. Estadodelarte .......................... 4 1.3. Objetivos ............................. 5 1.4. Plandetrabajo.......................... 6 1.5. Estructura del documento . . . . . . . . . . . . . . . . . . . . 6 1.6. Contribuciones personales . . . . . . . . . . . . . . . . . . . . 7 1.6.1. Mercedes Herrero . . . . . . . . . . . . . . . . . . . . . 8 1.6.2. Nerea Jiménez . . . . . . . . . . . . . . . . . . . . . . 10 1. Introduction 12 1.1. General considerations . . . . . . . . . . . . . . . . . . . . . . 12 1.2. Objectives............................. 14 1.3. Workplan ............................. 15 2. Estado del arte: métodos aplicados 16 2.1. Inteligencia Artificial . . . . . . . . . . . . . . . . . . . . . . . 16 2.2. Aprendizaje Automático . . . . . . . . . . . . . . . . . . . . . 17 2.3. Redes Neuronales Recurrentes . . . . . . . . . . . . . . . . . . 19 2.4. RedesLSTM ........................... 22 2.4.1. Modelo y entrenamiento . . . . . . . . . . . . . . . . . 22 viii 2.4.2. Parámetros y mecanismos de Aprendizaje . . . . . . . 25 2.4.3. Clasificación . . . . . . . . . . . . . . . . . . . . . . . . 26 3. Análisis y diseño 28 3.1. Arquitectura ........................... 28 3.2. Tecnologías ............................ 30 3.2.1. Matlab........................... 31 3.2.2. Thingspeak ........................ 32 3.3. Diseño............................... 32 3.3.1. Entrenamiento de la red LSTM . . . . . . . . . . . . . 33 3.3.2. Clasificación de acciones . . . . . . . . . . . . . . . . . 34 3.3.3. IoT............................. 34 4. Resultados 36 4.1. Recursos.............................. 36 4.2. Resultados integrados de la aplicación . . . . . . . . . . . . . 38 4.2.1. Entrenamiento de red . . . . . . . . . . . . . . . . . . 38 4.2.2. Clasificación mediante la red LSTM . . . . . . . . . . 42 4.2.3. Uso de ThingSpeak . . . . . . . . . . . . . . . . . . . . 44 4.3. Análisis comparativo: entrenamiento y clasificación . . . . . . 47 4.3.1. Entrenamiento . . . . . . . . . . . . . . . . . . . . . . 47 4.3.2. Clasificación . . . . . . . . . . . . . . . . . . . . . . . . 48 5. Conclusiones y trabajo futuro 51 5.1. Conclusiones ........................... 51 5.2. Trabajofuturo .......................... 52 5. Conclusions and future work 53 5.1. Conclusions............................ 53 5.2. Futurework............................ 54 Bibliografía 55 ANEXO 58 de avanzada edad. En este sentido Kozina y col.[11] proponen un sistema para el reconocimiento de caídas basada en la captura de datos a partir de acelerómetros instalados en dispositivos portables. Ciertamente, la metodología basada en LSTM ha cobrado gran relevancia en HAR desde hace más de una década, de ahí que diversos trabajos hayan abordado el tema bajo esta perspectiva, tal es el caso de la propuesta realizada por Sa-nguannarm y col.[12] que llegan a demostrar que la utilización de acelerómetros en HAR mejora el rendimiento con respecto al uso de técnicas basadas en Redes Neuronales Convolucionales[1]. No obstante, conviene señalar que existen otros trabajos que proponen el uso de métodos basados en análisis de videos para HAR, tal es el caso puesto en [13]. Si bien, aunque desde el punto de vista del desempeño en cuanto a la mejora de resultados puede ser favorable frente a métodos basados en LSTM, lo cierto es que necesitan siempre que la persona realizando la acción esté situada bajo el campo de vista de la cámara, algo que no es necesario en el enfoque propuesto en este trabajo, ya que el único requisito es que la persona lleve consigo el smartphone con los sensores de aceleración activados. Esta es una poderosa razón por la que en este trabajo se ha optado por la opción de utilizar las técnicas basadas en LSTM para HAR, además de su uso extendido en diversas aplicaciones, complementado con el hecho de que estos dispositivos son de uso común y en continuo crecimiento en la población con carácter general. 1.3. Objetivos El objetivo general de este proyecto es conseguir clasificar los movimientos realizados por una persona, a través de los sensores de un dispositivo móvil, utilizando para ello una red neuronal LSTM. Como ampliación u objetivo extra, se propone implementar un modelo de red particularizada y entrenada con movimientos definidos por nosotras mismas, de forma que se pueda crear una red que clasifique aquellos movimientos deseados, y por tanto, adaptando el rango de utilidad del modelo a acciones específicas propias. Para cumplir los objetivos previos, se plantean los siguientes objetivos específicos que debe cumplir la aplicación propuesta. Son los siguientes: Diseño de un módulo de captura de datos. Diseño de un módulo de procesamiento de datos mediante LSTM, que incluye entrenamiento y reconocimiento de acciones con los datos obtenidos. 5 Diseño de un modelo de red LSTM ad hoc, adaptado para el reconocimiento de acciones propias. Diseño de un módulo bajo el paradigma IoT Integración de todos los módulos anteriores, incluyendo el flujo de datos entre los módulos. Diseño de un IHM para dar cobertura a la integración, con captura y presentación de datos y resultados. 1.4. Plan de trabajo Al comenzar con el trabajo, se nos plantearon una serie de retos para lo cuales, nos propusimos los siguientes puntos a seguir: Investigación y documentación del tema general. Aprender conocimientos básicos de Matlab. Aprender conocimientos básicos de Látex. Estructuración de la aplicación. Número de módulos de la aplicación. Dividir las tareas entre los miembros del trabajo. Implementación de los módulos de la aplicación. Análisis de los resultados de la aplicación. Documentación en la memoria del transcurso del trabajo. Correcciones y revisiones de la memoria. Posible ampliación. 1.5. Estructura del documento Los diferentes capítulos que componen este documento son: Capítulo 1, Introducción Consideraciones generales, estado del arte, objetivos, estructura del documento, plan de trabajo y contribuciones personales. 6 Capítulo 2, Estado del arte: métodos aplicados Teoría sobre los métodos aplicados en este proyecto, relativos a conceptos tales como la inteligencia artificial, el aprendizaje automáticos, las redes neuronales recurrentes, y las redes LSTM. Capítulo 3, Análisis y diseño Explicación sobre la arquitectura, las tecnologías y diseño de la aplicación. Capítulo 4, Resultados Recursos utilizados y resultados integrados de la aplicación, relativos a los procesos de entrenamiento y clasificación del modelo. Capítulo 5, Conclusiones y trabajo futuro Conclusiones y trabajo futuro. Bibliografía Bibliografía relativa al trabajo ANEXO, Uso de la aplicación Guía sobre cómo utilizar la aplicación. Tras ir realizando los puntos, finalmente se decidió realizar la ampliación, debido a que el transcurso fue positivo. 1.6. Contribuciones personales En el desarrollo de esta aplicación se han realizado diferentes tareas, solapándose estas en algunos casos y siendo realizadas conjuntamente por ambas componentes del equipo. 7 1.6.1. Mercedes Herrero Labores en investigación: Investigar sobre el uso del sistema de composición de textos Látex con el fin de utilizar este recurso para el desarrollo de la memoria. Estudio del funcionamiento de las redes LSTM. Investigar el uso de distintas arquitecturas de red LSTM. Formación en las nociones básicas del lenguaje de programación MATLAB a través de distintos cursos que pone a disposición MathWorks. Investigar el uso de App Designer, un entorno de desarrollo para el diseño de interfaces totalmente integrado con MATLAB. Capturar registros de datos propios para entrenar la red. Realización de distintos movimientos para comprobar el funcionamiento de la red entrenada. Investigar la diferencia de resultados entre una red entrenada con datos propios y la red entrenada mediante los datos HumanActivityTrain, que son datos proporcionados por Mathworks. Estudio del funcionamiento de las distintas aplicaciones que pone a disposición Thingspeak. Vinculación de cuenta de Twitter con Thingspeak para utilizar la aplicación de ThingTweet. Gestión del proyecto software: Creación de un tablero Kanban mediante la herramienta Trello. Identificar las diferentes tareas necesarias para realizar el proyecto. Fijar prioridades entre las distintas tareas. Organizar las tareas según su función y estado. Establecer fechas de entrega para las tareas. Actualizar las tareas finalizadas. Identificar las dudas e impedimentos para consultar con Gonzalo. Establecer reuniones junto con mi compañera Nerea para ser conscientes del estado del proyecto y establecer nuevos objetivos. 8 Diseño y desarrollo software: Implementación de la conexión al smartphone para proceder a la captura de datos en vivo y clasificación de estos. Implementación de la moda estadística de la clasificación de datos importados desde un archivo. Desarrollo e implementación de la interfaz de clasificación de datos. Testeo de la aplicación con distintos sistemas operativos. Implementación para el control de errores de la aplicación. Creación e integración con Matlab de un canal de ThingSpeak destinado a almacenar los valores X, Y, Z de las aceleraciones de los registros capturados a través del smartphone. Creación e integración con Matlab de un canal de ThingSpeak que almacene los valores de la clasificación obtenidos. Relacionar ThingTweet con React para mandar alertas por Twitter cuando los datos de los canales cumplan unas determinadas condiciones. Memoria: Desarrollo de la introducción inicial del capítulo 1. Desarrollo del punto 1.6.1: Contribuciones personales - Mercedes Herrero. Desarrollo del capítulo 2: Métodos aplicados. Desarrollo de los puntos del capítulo 3: 3.1 Arquitectura, 3.2 Tecnologías, 3.3.1 Entrenamiento de la red LSTM, 3.3.2 Clasificación de acciones y 3.3.3 IoT. Desarrollo de los puntos del capítulo 4: 4.1 Recursos, 4.2.2 Clasificación mediante la red LSTM, 4.2.3 Uso de ThingSpeak y 4.3 Análisis comparativo: entrenamiento y clasificación Desarrollo del ANEXO, uso de la clasificación de acciones. Revisiones periódicas de cada capítulo. Traducción al inglés del capítulo 1 y capítulo 5. 9 1.6.2. Nerea Jiménez Labores en investigación: Funcionamiento de Látex Uso de Google Académico Investigación de cómo usar bibliografía en Látex Uso de BibTex Uso de Matlab Desktop Uso de App Designer, entorno de desarrollo para el diseño de interfaces integrado con Maltab Investigación de la creación de archivos a partir de movimientos propios Investigación de captura de movimientos a través de sensores Uso de Thingspeak Investigación sobre la relación de Matlab y Thingspeak Gestión del proyecto software: Planificación y realización de reuniones con los miembros del equipo y tutor para valorar la progresión del trabajo y las futuras tareas a realizar Reparto de tareas para el desarrollo de la aplicación Planificación para las revisiones de la memoria con tutor y compañeros de equipo Planificación para una ampliación del TFG Planificación de corrección de errores y revisión antes de la entrega final Diseño y desarrollo software: Implementación de la creación y entrenamiento de redes neuronales para la futura clasificación de acciones Desarrollo e implementación de la interfaz de la creación de redes neuronales 10 Desarrollo de pestaña principal Creación del logo de la aplicación Pruebas del funcionamiento de la aplicación Memoria: Creación de la estructura de la memoria en Látex Desarrollo punto 1.1 Objetivo Desarrollo punto 1.2 Estructura del documento Desarrollo punto 1.3.2 Contribuciones personales - Nerea Jiménez Desarrollo del punto 2.3 Redes Neuronales Recurrentes Desarrollo del punto 2.4 Redes LSTM Desarrollo del punto 3.2.1 Matlab Desarrollo del punto 3.3 Diseño Revisión y corrección del apartado 2 Enumeración de ecuaciones Creación del índice de ecuaciones Desarrollo del punto 4.1 Recursos Desarrollo del punto 4.2.1 Entrenamiento de red Desarrollo del ANEXO, uso de la interfaz del entrenamiento de red Revisión y corrección del apartado 1 Revisión y corrección del apartado 2 Desarrollo del resumen y palabras clave Revisión y corrección del apartado 4 11 CHAPTER 1 Introduction Human activity recognition is a field in continuous expansion thanks to the technological development of mobile devices. They are equipped with motion sensors that allow identifying human activities based on the kind of movement carried out by a person equipped with such a device. Sports and health are two areas of interest, where devices such as activity watches, speedometers or their own smartphones are elements gifted with enough sensory technology with such purpose. Due to the wide diffusion of smartphones among the general population, it has allowed us to focus this project in the sense of developing an intelligent activity detection application. We have used deep learning techniques where the smartphone is equipped with some sensors: angular velocity, acceleration, position, magnetic field and orientation. Simultaneously, the application is proposed with an extension to another of the topical paradigms, such as the Internet of Things. 1.1. General considerations Human Activity Recognition (HAR) constitutes a technological field that has gained a great boom in recent years thanks to the development and growth of the computational technologies and the ones inside the field of Artificial Intelligence. Nowadays, Deep Learning is one of its main paradigms. This project is based on the development of a Deep Learning based approach. It is possible to find different devices on the market that perform HAR 12 in different areas, either in sports or health, to name two clear areas of application. In addition to the above, it is appropiate to review its usefulness at the level of monitoring actions to determine activity or inactivity, when it is assumed that this may be a risk in different segments of the population, such as activity-oriented video surveillance for children or the elderly, depending on the time of day. There are commercial technological developments that provide specific information with which they carry out HAR-type processes. The most common that we can find available for use among the population are activity watches, smart watches and the smartphones themselves. Generally, these devices are directly equipped with sensors that record the useful data to recognize the actions. The recognition can be determined through an indirect connection via Bluetooth or another type of connection to another device, for example, a watch connected to a smartphone. The most common data collected by these sensors are relative to angular velocity, acceleration, position, magnetic field, and orientation. The actions to be recognized are generally programmed based on the data received and in a generic way. It may be that, in the case of watches, it is not so common to find such a device in a large number of people that use it. In comparison, a large percentage of the population has a smartphone, which makes this device a more widely used item. This is the main reason why, in this project, it has been chosen to propose an application for use, using the smartphone’s sensors and the device itself as support elements for data acquisition, and sending them to a remote server for processing what is known as the cloud. In addition to the above, the justification for this option is based on the possibility of generating your own data, designing a processing strategy, which in this case is based on Deep Learning[1] and more specifically in models known as Long-Short Term Memories (LSTM) which is the intelligent strategy used [2], described in detail in chapter three. Definitely, the work proposed consists on the development of a smart app based on a smartphone as an enabled device to capture sensory data. These data are sent to a network model of the LSTM type that has been previously trained and hosted in the cloud, where the prediction is done.The action will return already classified to the device itself. The model is also endowed with a specific functionality under the paradigm of the Internet of Things (IoT), therefore, this project consists of an intelligent application in IoT. Although later, in chapter three the architectural model is described in more in depth, the figure 1.1 provides the general scheme with its main components that establish the starting point of the approach formulated in the present work. 13 1. There is a central processor, conveniently equipped where the training of the LSTM network is carried out, although they could also be trained in the cloud, specifically in Matlab Drive [3], that way, the model trained is accessible from a mobile device. 2. Using the mobile device, connected to Matlab Drive, the sequences of motion data are captured and allow the following: a) to store them in the cloud, in this case in ThingSpeak [4], which is the analytical platform provided by TheMathworks for IoT and b) to provide sequences of movement to the trained LSTM model for classification of a certain action. 3. ThingSpeak also receives the data resulting from the classification by returning the corresponding message via Twitter about the identified action. 4. The different modules communicate with each other through a wireless connection, either over the internet or any other type of network such as 4G and in the near future 5G. 1.2. Objectives The main objective of this project is to be able to classify the movements (actions) made by a person, through the sensors of a mobile device, using an LSTM neural network. Another goal is to implement a particularized and trained network model with movements defined by ourselves. That way, a network can be created that classifies those desired movements, and therefore, adapting the range of utility of the model to actions on specific ones. In order to meet the previous objectives, the following specific goals are proposed. They are as follows: Design of a data capture module. Design of a data processing module using LSTM, which includes training and recognition of actions with the data obtained. Design of an ad hoc LSTM network model, adapted for the recognition of own actions. Design of a module under the IoT paradigm. Integration of all the previous modules, including the data flow between the modules. 14 modelo que se establecen y ajustan durante el proceso de aprendizaje. Estos pesos determinan los valores de conexión entre las distintas unidades del modelo, de forma que una vez establecidos son determinantes para la clasificación de las acciones. 3. Los valores de las matrices de U,VyWse inicializan de forma aleatoria siendo posteriormente ajustados por el modelo en función de las entradas y salidas esperadas. Para cada valor xque entra se va pasando hacia arriba hasta llegar a la capa de salida donde se comprueba que la acción correspondiente al valor de entrada coincide con la yque es la acción asociada a la salida. Además, en el tránsito por cada celda, como están conectadas entre si, se obtiene información de la anterior. Esto hace que, si se genera un error porque la acción asociada a xno coincide con el valor de y, se deberá evaluar una determinada función según el error cometido, que a su vez se propaga hacia atrás desde la capa de salida para reajustar los pesos de U,VyWhasta que la entrada xproduzca la salida esperada yo al menos lo más próxima a ésta. Todos los ajustes se definen en las denominadas funciones de pérdida Lpara determinar según el modelo qué error se ha cometido. Como ejemplo, definimos la función Ltsiendo esta la estima de máxima verosimilitud negativa de ytdadas por los valores x1, ..., xt: L(x1, ..., xt, y1, ..., yt) = X t Lt=X t logpmodelo(yt|x1, ..., xt)(2.1) donde pmodelo(yt|x1, ..., xt)se define a partir de la entrada yt, la cual se determina a partir del vector (~y1, ..., ~yt). 4. Para lograr un alto nivel de éxito a la hora de entrenar y clasificar la acción, es conveniente tener múltiples datos para cada acción. En función del número de acciones que se desean reconocer y por tanto aprender, se establecen los vectores de salida con sus componentes necesarias. Tal y como se muestran en la figura 2.4 se pueden establecer diferentes topologías de red según la conexión entre las distintas capas. En este trabajo se utilizará como topología de red el modelo muchos a muchos sincronizada, esto es así porque el modelo establecido es que se suministran secuencias de datos de entrada espaciadas en el tiempo que constituyen las entradas xtal modelo, para cada unidad de tiempo se proporciona un valor de xy para cada xse espera un valor determinado a la salida y sincronizada en el tiempo t. Por tanto, la asociación es la mencionada muchos a muchos. 21 Figura 2.4: Diferentes tipologías de red 2.4. Redes LSTM Como cualquier modelo de AP se distinguen los dos procesos característicos de aprendizaje, donde se ajustan los parámetros involucrados, y clasificación, que determina el tipo de acción realizada. Ambos se describen a continuación. 2.4.1. Modelo y entrenamiento En el ámbito de las redes neuronales que tratan con secuencias temporales, resulta bien conocido el hecho de que durante el proceso de ajuste de los pesos del modelo por retropropagación, los gradientes se propagan hacia atrás por los diferentes estados, de forma que cuando existen muchos estados o secuencias, los gradientes tienden a desvanecerse o conducen a una explosión computacional, afectando al proceso de optimización, esto es, al ajuste. Esto es debido a que los errores propagados hacia atrás por el gradiente dependen tanto de los errores presentes como pasados en la secuencia. La acumulación de errores origina problemas en secuencias largas, de aquí el término longterm. Para abordar esta problemática Goodfellow y col.[20] proponen las ya mencionadas LSTM que en definitiva, ofrecen la posibilidad de establecer la información que debe conservarse o eliminarse de ahí el término memory. El modelo LSTM fue introducido por Hochreiter y Schmidhuber[21] con el fin de tratar la problemática expuesta, que es precisamente el modelo adoptado en el presente trabajo. Conceptualmente las LSTM se estructuran en celdas que procesan una 22 secuencia de pares de entrada-salida (xt,yt)donde, para cada uno de ellos, la correspondiente celda LSTM toma una nueva entrada xtjunto con el valor oculto obtenido en la celda previa ht−1. Así se genera una estima ˜yt para la salida objetivo yty por supuesto teniendo en cuenta la secuencia de entrada previa x1,x2, ..., xt. También se genera un nuevo valor oculto ht en la celda actual, que constituye de alguna manera el estado actual. Como se ha mencionado previamente, en el presente trabajo los valores de entrada en las correspondientes xtson los datos de aceleración proporcionados por el sensor y por tanto, se trata de vectores tridimensionales según las tres componentes en los ejes X, Y y Z. El vector ˜ytes la salida estimada por el modelo y proporcionada en un instante de tiempo, la cual se compara con la salida deseada u objetivo yt. Estas salidas se codifican de forma que en función del número de acciones a reconocer a cada salida se le asigna un valor en el vector. Por ejemplo la acción sentada se puede codificar como (1, 0, 0), la acción bailar como (0, 1, 0) y así sucesivamente. La diferencia entre la salida esperada, que por ejemplo para sentada podría ser (0.80, 0.15, 0.05) y la deseada determina el error de predicción del modelo. Si ambas coinciden, el error es nulo, lo que significa que los parámetros del modelo están bien ajustados, no requiriendo ningún ajuste. Por el contrario, si se produce un error, los parámetros del modelo deben ajustarse, constituyendo la fase de entrenamiento. Este error se establece con relación a la correspondiente función de pérdida, como por ejemplo la definida en la ecuación (2.1), tras lo cual, el error se propaga hacia atrás realizando el ajuste requerido de los pesos hasta que las salidas esperadas de las acciones se aproximen lo más posible a las predichas. La figura 2.5 muestra el esquema general del modelo con sus correspondientes entradas y salidas, así como sus estados internos y operaciones correspondientes. En (a) se muestra un esquema con una estructura de celdas simple, mientras que en (b) la estructura interna de cada celda es más compleja, si bien en ambos casos con tres celdas interconectadas. Es importante señalar que en este modelo los estados internos htson también las salidas estimadas ˜yt. En el esquema de dicha figura, los símbolos σgyσcrepresentan respectivamente las operaciones sigmoide y tangente hiperbólica. 23 Figura 2.5: Estructura general y conexión de las celdas LSTM Como se ve en la figura 2.5, para cada dato de entrada xtse realizan una serie de operaciones: 1. En primer lugar, la capa sigmoidal, también llamada puerta de olvido oforget gate, es la responsable de decidir qué información eliminar del estado de la celda. Para ello, la forget gate utiliza la siguiente ecuación, ft=σg(Uxf xt+Whf ht−1+bf)(2.2) 2. A continuación, se debe decidir qué nueva información se va a almacenar en el estado de la celda. Para ello en primer lugar, otra capa sigmoide denominada puerta de entrada o input gate es la que decide qué valores se van a actualizar, apoyándose en la siguiente ecuación, it=σg(Uxixt+Whiht−1+bi)(2.3) 3. Tras actualizar la información, otra capa crea nuevos valores candidatos de gt, que podrían añadirse al estado de la celda, teniendo en cuenta los pesos de las matrices U,VyW. Estos valores se crean siguiendo la ecuación descrita a continuación, gt=σc(Uxcxt+Whcht−1+bc)(2.4) 24 4. Los valores itygtse combinan convenientemente junto con el estado de la celda previa, obteniendo de esta forma una actualización del estado total de la celda, que se puede identificar como Ct. 5. Finalmente se calcula el valor otsegún la ecuación 2.5, para a continuación calcular hty por tanto la salida de la celda combinando el estado actualizado de la celda con este ot, ot=σg(Uxoxt+Whoht−1+bo)(2.5) 2.4.2. Parámetros y mecanismos de Aprendizaje El proceso de aprendizaje conlleva la necesidad de definir y establecer una serie de parámetros y mecanismos de aprendizaje, entre los que destacan como de especial relevancia los siguientes: Gradiente descendente, que es una técnica de minimización utilizada para el ajuste de los pesos involucrados en los modelos de las redes durante el proceso de retro-propagación. La función a optimizar se conoce como función objetivo y cuando se está minimizando, se le denomina también loss function o error function. Se trata de minimizar una función objetivo que tiene la forma, J(w) = 1 n i=1 X n OJi(w)) (2.6) donde el parámetro w que minimiza J(w) es el que debe estimarse, constituyendo el objetivo principal del aprendizaje. Jise asocia con la i-ésima observación en el conjunto de datos utilizados para el entrenamiento (ajuste). El gradiente descendente se usa para minimizar esta función de forma iterativa, con iteraciones t, w(t+ 1) = w(t)−ε1 n n X i=1 OJi(w)(2.7) De esta forma iterativa el método recorre el conjunto de datos de entrenamiento y realiza la actualización anterior para cada muestra de entrenamiento. Se pueden realizar varios pasos sobre el conjunto de entrenamiento hasta que el algoritmo consiga la convergencia. Estas muestras así seleccionadas constituyen lo que se denomina batch, como se describe seguidamente, a la hora de seleccionar los parámetros de entrenamiento. En este sentido, es habitual utilizar exactamente la técnica conocida como Gradiente Descendente Estocástico (SGD, Stochastic Gradient Descent) [22][23] o alguna de sus variantes tal como Adam, cuyo nombre deriva de Adaptive Moment Estimation[24]. 25 Batch size:durante el proceso de actualización de los pesos de la red, mediante el cálculo del error y su retro-propagación a través de la técnica del gradiente descendente se dispone de N datos de entrenamiento en un proceso iterativo. Esto significa que al buscar el mínimo se realizan una serie de pasos, siendo el objetivo de cada paso ajustar lo mejor posible los pesos. La dimensión de un lote (batch) define el número de datos utilizados antes de llevar a cabo una actualización de los pesos de la red en el modelo. Epochs e iteraciones: define el número de veces que el conjunto total de muestras son procesadas por el algoritmo de optimización. Esto significa que cada muestra del conjunto Nha tenido una oportunidad de actualizar los pesos en cada epoch. También se puede fijar un número máximo de epochs para detener el proceso de entrenamiento cuando se alcanza dicho número, lo cual puede ser útil en el caso de que no se llegue a alcanzar la convergencia, esto es, que el error no sea aceptable. Razón de aprendizaje (learning rate): determina la rapidez con la que la red actualiza o ajusta los pesos involucrados. En el diseño propuesto se establece una razón de aprendizaje variable, de forma que sobre la razón fijada inicialmente cada cierto número de epochs se aplica un determinado factor de reducción. Método de optimización: es el método aplicado para realizar la minimización de la función de coste. Softmax: consistente en proyectar los valores de la salida en la capa final al rango [0,1], proporcionando así una especie de probabilidad de pertenencia a cada una de las clases para una imagen de entrada dada. Su función se define según la siguiente expresión. softmax(x)i=exp(xi) Pn j=1 exp(xj)(2.8) 2.4.3. Clasificación Una vez finalizada la fase de entrenamiento, y con los pesos actualizados se está en condiciones de reconocer nuevas acciones. Centrándonos en el objetivo del presente trabajo, estas redes nos permiten clasificar una secuencia de movimientos que serán obtenidos a partir de los datos suministrados por los sensores de un dispositivo móvil. Como se ha indicado previamente, en cada instante de tiempo t se define un vector de entrada que representa las aceleraciones, de forma que a cada secuencia se le asocia una clase yt≡ci, siendo i el número de clases definidas. En nuestro caso estas clases corresponderán a movimientos convenientemente etiquetados como por ejemplo, c1≡sentada;c2≡corriendo;c3≡bailando. La capa de salida de la red tiene la dimensión de un vector de etiquetas asociado a cada clase, es decir, 26 cada componente de este vector representa la probabilidad de un tipo de movimiento definido por la correspondiente clase, tal y como se ha indicado previamente. Con las salidas así obtenidas y teniendo en cuenta las salidas esperadas, según la acción de entrada convenientemente etiquetada, se puede incorporar como nueva muestra de entrenamiento para un proceso posterior, de esta forma se genera el correspondiente genera el correspondiente error, procediendo a la propagación del error hacia atrás para actualizar de nuevo los pesos en las matrices U,VyW. 27 CAPÍTULO 3 Análisis y diseño En este capítulo se plantea el desarrollo de la aplicación inteligente para su uso con un dispositivo móvil de tipo smartphone. Para ello, en primer lugar, se expone la arquitectura de la aplicación, que incluye los módulos operativos de que consta. En segundo lugar, se describen las tecnologías utilizadas, así como sus ventajas e inconvenientes para su elección. Finalmente, en tercer lugar, se aborda el diseño de la aplicación en base a las consideraciones derivadas de la arquitectura planteada y las tecnologías analizadas. 3.1. Arquitectura Como continuación del modelo introducido en la figura 1.1, seguidamente se describe la arquitectura del modelo planteado desde el punto de vista lógico y operativo. Para el desarrollo e implementación de este proyecto se diferencian tres módulos básicos que permiten el uso de las diferentes técnicas citadas en los capítulos previos. Estos módulos se ven diferenciados en el esquema de la figura 3.1 representando la arquitectura de la aplicación y las tecnologías que se utilizan para la conexión y transmisión de datos. En este sentido se observan las líneas de conexión existentes en los distintos módulos de suerte que existen comunicación y transferencia de entre ellos a distintos niveles, a través del dispositivo móvil y mediante el uso del espacio en la nube. 28 Figura 3.1: Esquema arquitectura El proceso de funcionamiento del sistema en su conjunto y atendiendo a la arquitectura de la figura 3.1 es el que se describe a continuación. Módulo de entrenamiento 1. El dispositivo móvil captura los datos de aceleración necesarios etiquetados según la acción que les corresponde. Estos datos se encuentran convenientemente almacenados en un fichero de datos asociada. 2. Se dispone de un modelo de red LSTM, convenientemente configurado. 3. Con los datos disponibles y el modelo LSTM se procede al entrenamiento de la red en el Matlab de escritorio, tras lo cual se genera el correspondiente modelo entrenado. Dicho modelo queda visible a través de Matlab Drive para el módulo de clasificación. Módulo de clasificación 1. El dispositivo móvil captura los datos de aceleración con el objetivo de identificar la acción correspondiente, que son recibidos en este módulo, el cual a su vez accede al modelo de red LSTM. 2. Con ello se obtiene el resultado de la clasificación de la acción, cuyo proceso se lleva a cabo a través de Matlab OnLine, que es el acceso que se realiza a través del dispositivo móvil a Matlab Drive. 29 3. El resultado de la acción se envía a ThingSpeak para su almacenamiento y procesamiento mediante el módulo IoT. Módulo IoT 1. Recibe el registro de los sensores junto con el resultado de la clasificación de la acción y almacena los datos convenientemente. 2. Cuando el canal lleva un tiempo sin recibir información, este envía un tweet indicando que el usuario lleva tiempo sin realizar ningún tipo de movimiento. 3. En el momento en el que se inserta en el canal la clasificación obtenida se envía un tweet referenciando al tipo de movimiento que se ha realizado. 3.2. Tecnologías Para implementar estos tres módulos de la aplicación se realizó un estudio de las posibles tecnologías a utilizar, entre ellas: Tensorflow: Librería de código abierto desarrollada por Google Brain Team para construir y entrenar redes detectando y descifrando patrones. Nos plantemos su uso al ser la librería más extendida, sin embargo su alto nivel de complejidad hizo que descartáramos esta tecnología dadas las características del proyecto. PyTorch: Es un paquete de Python de código abierto que utiliza programación de tensores optimizada para el aprendizaje profundo permitiendo agilizar los cálculos numéricos haciendo uso de la GPU. Nos llamó la atención ya que aún siendo una tecnología reciente, su uso se ha visto disparado gracias al hecho de ofrecer una cierta complejidad con grandes ventajas. Se descartó debido a la necesidad de integrar diferentes módulos con despliegues de servicios en plataforma en la nube, tal como Google Colab[25] u otros, requiriendo un alto nivel de manejo de Python, que desbordaba los objetivos planteados en el proyecto. Matlab: Este software ofrece un entorno de trabajo con un lenguaje de programación de alto nivel para aplicaciones en el cálculo numérico. Además posee una extensa biblioteca de herramientas que facilitan la integración de distintas aplicaciones científicas. Se optó por la elección de este software dada la gran cantidad de contenidos de ejemplo que ofrece MathWorks y el libre acceso a la licencia que ofrece la Universidad Complutense de Madrid a los alumnos. 30 Dispositivos Tipo Modelo SO CPU RAM Procesador Smartphone Redmi Note 8T Android 10 QKQ1.200114.002. Octa-core Max 2.2GHz 3GB Snapdragon 665 Smartphone Mi 8 Lite Android 10 QKQ1.200114.002. Octa-core Max 2.2GHz 4GB Snapdragon 660 Tablet Ipad mini 2 IOS 12.4.5 1.30MHz 1GB Apple A7 Ordenador MSI CX61 2QF Windows 10 Pro 64 bits 2.60GHz 8GB Intel Core i5-4210M Ordenador Lenovo ideapad z500 Windows 10 Home 2.10GHz 16GB Intel Core i7-3612QM Tabla 4.1: Recursos utilizados Otro aspecto relevante en el uso de recursos es el uso de HumanActivity[26][27]. Disponemos de este dataset gracias a que Matlab lo ofrece para el entrenamiento de la red para clasificar actividades. Este dataset contiene 24.075 observaciones de 5 actividades: sentado, de pie, andando, corriendo y bailando. Cada observación tiene 60 características extraídas del dato de aceleración, medido por los sensores de aceleración de un dispositivo móvil. La figura 4.1 muestra la representación gráfica de una secuencia de datos de aceleración a lo largo del tiempo precedente del conjunto de datos original HumanActivity, donde se aprecian claramente las oscilaciones correspondientes a los movimientos de alta variabilidad en la aceleración, como son las de “Dancing” y “Running” frente a las de baja variabilidad como “Sitting” y “Standing”. En el caso de “Walking” las variaciones son de naturaleza intermedia. Figura 4.1: Representación gráfica de una secuencia de datos de aceleración Por otra parte, además de los datos procedentes de HumanActivity se han utilizado datos propios para definir acciones específicas. Esto muestra la flexibilidad de la aplicación desarrollada y su posibilidad de adaptación para 37 el reconocimiento de actividades ad hoc, lo que otorga un valor relevante añadido a la aplicación. Durante el proceso de entrenamiento del modelo es práctica habitual seleccionar una fracción de los datos disponibles para el entrenamiento y otra parte para validación, a veces una tercera para test. Por ejemplo 70 % para entrenamiento y 20 % para validación y 10 % para test, siendo diferentes en cada uno de los subconjuntos 4.2. Resultados integrados de la aplicación Tras el lanzamiento de la aplicación, lo primero que aparece es la pestaña de Inicio. Esta pestaña proporciona unas breves instrucciones para comenzar a utilizar la aplicación, como se puede ver en la figura 4.2. Figura 4.2: Pestaña de Inicio Las pestañas a las que podemos acceder son concretamente Entrenamiento red y Clasificaciones, que se describen a continuación. Ambas se corresponden con sendos procesos asociados a la red LSTM. En el Anexo se proporcionan detalles adicionales desde el punto de vista de un manual o guía de usuario, pero que en cualquier caso son también clarificadores del proceso de ejecución del modelo de aplicación con sus diferentes módulos integrados. 4.2.1. Entrenamiento de red En esta pestaña podemos diferenciar dos recuadros, el primero con un botón en el que se puede leer “Entrenar red”, y el segundo con un mayor 38 número de opciones, tal y como se muestra en la figura 4.3. A continuación se detalla cada uno de los procedimientos en relación a ambas opciones. Figura 4.3: Pestaña Entrenamiento de Red El primer botón, al ser pulsado, procede a entrenar una red default, con datos almacenados en la aplicación procedentes del conjunto de datos HumanActivity. Como se ha indicado previamente la red está diseñada para reconocer cinco tipos de movimientos: “Sitting”, “Standing”,“Dancing”, “Running” y “Walking”. El entrenamiento de esta red, por la gran cantidad de datos procesados, del orden de veinticuatro mil, puede tardar de 2 a 4 horas, dependiendo de las características del ordenador donde se ejecute. El segundo recuadro activa una serie de campos para introducir valores correspondientes al diseño específico del modelo de red. Los campos se podrán ir completando según se rellene de manera correcta el anterior. Como se ha indicado previamente, estos datos se utilizarán para crear una red a partir de movimientos propios, por lo que el tiempo de entrenamiento estará ligado a la cantidad de datos de cada movimiento recopilado. Por otra parte, conviene señalar que cuantos más datos tengamos de cada movimiento, más fiable será el modelo debido al mejor ajuste de los pesos involucrados en la red. Como se puede ver en la figura 4.4 en la parte de la izquierda, según hemos ido rellenarlo los campos, se han ido deshabilitando, dejando solo posibilidad de completar el siguiente, hasta llegar a que se habilite el botón para comenzar el entrenamiento. Una vez pulsado este botón, aparece una ventana, que corresponde a la imagen de la derecha, en la cual se puede revisar si los datos que hemos introducido son correctos, y una vez que se pulsa OK comenzará el entrenamiento. Entre las opciones que aparecen se encuen39 tra el número de movimientos que se van a capturar, correspondiéndose con el número de clases de actividad a reconocer. También aparece el nombre del archivo donde se almacenarán los datos capturados correspondientes al movimiento a realizar. Finalmente, aparece el nombre del modelo de red así definida. Figura 4.4: Segundo recuadro Cuando se tienen los campos completados, se puede pulsar el botón de “Comenzar entrenamiento”. Tras lo cual comenzará el entrenamiento de la red a partir de los archivos de datos indicados, y al finalizar el entrenamiento obtendremos una red propia con el nombre indicado. En la figura 4.5 se puede ver la ventana que aparece una vez pulsemos el botón de OK. Se observa la evolución del proceso de entrenamiento. En estas gráficas podemos diferenciar dos líneas. La línea azul indica la precisión (accuracy) del entrenamiento, mientras la roja indica la evolución de la función de pérdida (loss). La figura 4.6 muestra la leyenda asociada en ambos casos. En relación con la mencionada figura 4.5 se observa que el proceso comienza con valores muy desfavorables tanto en lo que respecta a la precisión como a la validación, evolucionando hacia el valor óptimo, que es cero, en el caso de la función de pérdida, no así en la precisión que se ha estabilizado con valores alrededor del 40 % y por tanto lejos del ideal, que en este caso es del 100 %. 40 Figura 4.5: Progreso del entrenamiento de un modelo de red LSTM Se han definido un máximo de 80 iteraciones, sobre un total de 60 epochs y una única iteración por epoch. Por otro lado, la razón de aprendizaje se ha fijado a un valor constante de 0.001 y por tanto sin disminución a lo largo de las diferentes epochs. Se informa igualmente sobre el tiempo transcurrido durante el proceso de entrenamiento. Figura 4.6: Leyenda Durante este proceso, también se crearán otros archivos para el entrenamiento de la red. Estos se crean a partir de los datos de los movimientos recogidos, y se guardan en la carpeta de Matlab Drive denominada archivosTrain. Son utilizados para el entrenamiento de la red, y se almacenan con el mismo nombre de la red, pero añadiendo la terminación -Train. 41 4.2.2. Clasificación mediante la red LSTM Como se ha mencionado en apartados anteriores en este módulo clave de la aplicación se distinguen dos secciones (captura de acciones y clasificación de acciones), como se puede apreciar en la figura 4.7. Figura 4.7: Módulo clasificación A fin y efecto de poder ejecutar cualquiera de las dos partes es necesario comprobar la existencia de una red entrenada para poder proceder a la clasificación. Tal y como se observa en la figura 4.8, al pulsar el botón “Comprobar red” se buscará la existencia de algún modelo entrenado, habilitando un desplegable con todos los modelos encontrados o generando una ventana emergente avisando de la inexistencia de resultados. Figura 4.8: Selección de red y notificación La parte izquierda de la figura 4.7 permite establecer la conexión a un smartphone, realizar la captura de datos en tiempo real y obtener la clasificación de dicha captura. Una vez finalizado el proceso se mostrarán los resultados en una ventana emergente como la mostrada en la figura 4.9 con todo el registro de los sensores y la clasificación obtenida para cada conjunto de valores X, Y, Z de la aceleración previamente registrada. A su vez, 42 se muestra una representación gráfica de la evolución de la aceleración y el ángulo de orientación frente al tiempo. Obsérvese en esta figura 4.9 la distinta evolución gráfica de la aceleración y la orientación respecto de las actividades que aparecen en la tabla de la izquierda. En esta tabla aparecen cuatro tipos de actividades (Running, Walking, Standing y Sitting). Estas acciones implican diferentes movimientos del cuerpo según la actividad, esto se representa en la gráfica inferior, que muestra una alta variabilidad de la aceleración en su evolución a lo largo del tiempo, mientras que la orientación del sensor, representa una evolución estable a lo largo del tiempo. Esto significa que la aceleración es determinante para identificar el tipo de acción realizada, como no puede ser de otra manera, ya que son los datos de aceleración los que se utilizan para la identificación de las acciones tanto en el entrenamiento de la red como en la clasificación. No ocurre lo mismo con la orientación, ya que su estabilidad no es nada discriminante, acorde, por otra parte, con el hecho de que el modelo de red no está entrenado con este tipo de datos. Figura 4.9: Representación de los datos capturados En el caso de no poder realizar la conexión con el dispositivo móvil al pulsar el botón de “Conectar” se mostrará el mensaje de error mostrado en la figura 4.10. Figura 4.10: Error al conectar el dispositivo móvil Por otro lado, el panel en la parte de la derecha de la figura 4.8 proporciona la opción de importar archivos previamente capturados desde Matlab 43 Mobile sin necesidad de disponer en ese momento de la conexión con el smartphone y obtener la moda (valor más frecuente), como medida estadística de la clasificación de los datos. Este proceso se visualiza como muestra la figura 4.11. Mediante una ventana emergente se indica el fin de la clasificación junto con la moda estadística obtenida, a la vez que se rellena el recuadro junto a la etiqueta “Resultado moda clasificación”. Figura 4.11: Resultado moda Además, para dar a conocer de forma visual el resultado de la clasificación, en este caso se muestra una ventana con un diagrama de sectores como se puede apreciar en la figura 4.12, que expresa los porcentajes de acciones realizadas. Figura 4.12: Diagrama de sectores de la clasificación 4.2.3. Uso de ThingSpeak El proceso que se genera en segundo plano bajo el paradigma de IoT se puede visualizar en el canal donde se almacena toda la actividad de captura de acciones. Cada canal dispone de unos campos, los cuales se rellenan cada vez que se ejecuta el módulo de clasificación en tiempo real. La configuración perteneciente a este canal se detalla en la figura 4.13. Obsérvese cómo los valores correspondientes a las tres componentes de aceleración (X, Y, Z) se almacenan respectivamente en los campos 1 a 3 (Field 1, Field 2 y Field 44 3). En cuanto al diseño del canal, en la figura 4.14 se pueden observar los distintos campos con su representación de datos que contiene, con indicación de los intervalos de tiempo en que han sido introducidos. Aunque el campo referente al resultado de la clasificación parezca vacío, este contiene los movimientos obtenidos en la clasificación. La ausencia de elementos en la gráfica se debe a que ThinSpeak no soporta el pintado de strings, sin embargo gracias al uso de React se comprueba que la escritura de los datos es correcta puesto que cada vez que se inserta un movimiento se envía un Tweet referenciándolo. Figura 4.13: Configuración del canal de ThingSpeak Figura 4.14: Visor canal de ThingSpeak 45 En lo que concierne al uso de las aplicaciones de React y ThingTweet, estas se ejecutan automáticamente cuando se cumplen las correspondientes condiciones. Como ejemplo ilustrativo, se muestra en la figura 4.15 la programación para el tipo de movimiento “Walking”. En el momento en que se inserta un valor en el campo 4 del canal llamado Registro Aceleración sensores se comprueba si es de tipo “string” igual a “Walking”. Cada vez que esta condición se cumpla se hace uso de ThingTweet mandando el mensaje estipulado a la cuenta asociada. Figura 4.15: Programación de React En la figura 4.16 se distinguen los distintos tweets que se envían con la programación de React para cada tipo de movimiento. Todas las alertas generadas a lo largo del desarrollo de la aplicación se pueden visualizar en la siguiente cuenta: https://twitter.com/DappHar. 46 CHAPTER 5 Conclusions and future work 5.1. Conclusions Throughout this project, a HAR application has been developed with the goal of classifying human actions from body movements, whether in real time or not. This system makes use of mobile devices equipped with motion sensors. For the development of this application, Deep Learning has been used, specifically the LSTM model for time sequence analysis and IoT. After developing the system and conducting tests, the following conclusions were reached: There is a possibility of connecting a mobile device with a program, using the cloud as a remote server, and using a WiFi network, to collect data in real time, or to create data files. (Section 3.1 and 3.3.1) It is possible to obtain optimal results by training a network with sufficient data, as with the default network. (Section 4.3) In case of training a network with few data, the classification results are less satisfactory. (Section 4.3) There is the possibility of sending these results to a third destination, where graphs can be created and linked to social networks, in this case, working resources and strategies in the field of IoT. (Section 3.3.3) 53 5.2. Future work Looking ahead, the application can be improved by taking the following considerations into account. Regarding the network training part, one of the possible improvements would be the re-training of a previously trained network. For instance, adding a new movement to the default network, keeping the data with which it was already trained, and adding new data for the new movement to be incorporated. Another improvement possibility in this same section would be the improvement of training of personalized networks. Get more data to more reliably train networks that are trained right from the start. Also, as an enhacement in the training process, it is possible to experiment with different training parameters, such as optimization methods, variation of the learning rate, changing the number of iterations and epochs, among others. Regarding the classification part, a possible development would be to omit the time restriction when classifying movements in real time. That is, to be able to collect data continuously without having to limit the collection to a specific period of time, and stop collecting them when the user indicates it. Regarding the extension of ThingSpeak, a possible improvement would be the personalized sending of tweets for the user. That is, to be able to customize who the tweets are sent to so that they are directed to the desired user, and not simply to the application account. 54 Bibliografía [1] Herrera PJ. Pajares G., B. and Besada E. Aprendizaje Profundo. RCLibros, 2021. [2] Ian Goodfellow, Yoshua Bengio, and Aaron Courville. Deep Learning. MIT Press, 2016. http://www.deeplearningbook.org. [3] The Mathworks. Matlab drive, 2021. https://es.mathworks.com/ products/matlab-drive.html. [4] ThingSpeak. Thingspeak for iot projects, 2021. https://thingspeak. com/. [5] Akram Bayat, Marc Pomplun, and Duc A Tran. A study on human activity recognition using accelerometer data from smartphones. Procedia Computer Science, 34:450–457, 2014. [6] Ian H. Witten Eibe Frank, Mark A. Hall. The WEKA Workbench. Online Appendix for Data Mining: Practical Machine Learning Tools and Techniques. Morgan Kaufmann, 2016. [7] Pierluigi Casale, Oriol Pujol, and Petia Radeva. Human activity recognition from accelerometer data using a wearable device. In Iberian Conference on Pattern Recognition and Image Analysis, pages 289–296. Springer, 2011. [8] Jhon Ivan Pilataxi Piltaxi, María Fernanda Trujillo Guerrero, Vanessa Carolina Benavides Laguapillo, and Jorge Andrés Rosales Acosta. Human activity recognition using an accelerometer magnitude value. In International Conference on Applied Technologies, pages 462–472. Springer, 2019. 55 [9] Roberto Pavón Benítez. Técnicas de deep learning para el reconocimiento de movimientos corporales, 2020. [10] The Mathworks. Matlab. deep learning toolbox, 2021. https://es. mathworks.com/products/deep-learning.html. [11] Simon Kozina, Hristijan Gjoreski, Matjaž Gams, and Mitja Luštrek. Efficient activity recognition and fall detection using accelerometers. In International competition on evaluating AAL systems through competitive benchmarking, pages 13–23. Springer, 2013. [12] Phataratah Sa-nguannarm, Ermal Elbasani, Bongjae Kim, Eung-Hee Kim, and Jeong-Dong Kim. Experimentation of human activity recognition by using accelerometer data based on lstm. In Advanced Multimedia and Ubiquitous Engineering, pages 83–89. Springer, 2021. [13] Catherine Tong, Shyam A Tailor, and Nicholas D Lane. Are accelerometers for activity recognition a dead-end? In Proceedings of the 21st International Workshop on Mobile Computing Systems and Applications, pages 39–44, 2020. [14] Daniel Ordóñez, Francisco Javier y Roggen. Redes neuronales convolucionales profundas y recurrentes lstm para el reconocimiento de actividad portátil multimodal. Sensores, (1), 2016. [15] John McCarthy. What is artificial intelligence? 1998. [16] PM GONZALO and PM Santos. Inteligencia artificial e ingeniería del conocimiento, ed. alfaomega. Technical report, 2006. [17] Nils J Nilsson. Principles of artificial intelligence. Morgan Kaufmann, 2014. [18] Stuart J Russell and Peter Norvig. Inteligencia Artificial: un enfoque moderno. Number 04; Q335, R8y. 2004. [19] Pedro Ponce Cruz. Inteligencia artificial con aplicaciones a la ingeniería. Alfaomega, 2011. [20] Ian Goodfellow, Yoshua Bengio, Aaron Courville, and Yoshua Bengio. Deep learning, volume 1. MIT press Cambridge, 2016. [21] Sepp Hochreiter and Jürgen Schmidhuber. Long short-term memory. Neural computation, 9(8):1735–1780, 1997. [22] Christopher M Bishop. Pattern recognition and machine learning. springer, 2006. 56 [23] Sebastian Ruder. An overview of gradient descent optimization algorithms. arXiv preprint arXiv:1609.04747, 2016. [24] Diederik P Kingma and Jimmy Ba. Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980, 2014. [25] Google. Google colab., 2021. https://colab.research.google.com. [26] Davide Anguita, Alessandro Ghio, Luca Oneto, Xavier Parra, and Jorge L Reyes-Ortiz. Human activity recognition on smartphones using a multiclass hardware-friendly support vector machine. In International workshop on ambient assisted living, pages 216–223. Springer, 2012. [27] Davide Anguita, Alessandro Ghio, Luca Oneto, Xavier Parra, and Jorge Luis Reyes-Ortiz. A public domain dataset for human activity recognition using smartphones. In Esann, volume 3, page 3, 2013. 57 ANEXO En este anexo se proporcionan todos los detalles sobre cómo hacer uso de la aplicación desarrollada en Matlab a modo de guía de usuario. Antes de ejecutar la aplicación es necesario disponer de unos requerimientos previos: Dispositivo móvil con la apliación Matlab Smartphone instalada. Conexión a Matlab Drive. Instalar el toolbox de MATLAB Support Package for Android Sensors o MATLAB Support Package for Apple iOS Sensors. La aplicación ofrece tres pestañas principales: Inicio: En ella se da la bienvenida al usuario y se le informa del objetivo de la aplicación y de las diferentes funciones que podrá realizar. Entrenamiento de la red neuronal: En esta pestaña se le permite al usuario generar dos modelos de red distintos. Clasificación de acciones: Mediante el modelo de red que seleccione el usuario se mostrará la clasificación de los datos recogidos. Todo el código fuente referente a este proyecto puede encontrarse en: https://github.com/BNeku/TFG.git Es necesario descargar el repositorio en la carpeta Matlab Drive. A continuación se explica en profundidad cada apartado de la aplicación. 58 A.1 Entrenamiento de la red Como se explica en el capítulo cuatro, se pueden entrenar dos tipos de redes, una red default o una red personalizada. Red default Para entrenar una red default, es necesario acceder a la pestaña Entrenamiento red, y pulsar el botón Entrenar red que se sitúa en la izquierda del panel de la aplicación (figura 4.2). A continuación, tras esperar unos segundos, nos aparecerá el gráfico del proceso de entrenamiento. Debido a que el archivo HumanActivityTrain contiene muchos datos, el entrenamiento puede tardar desde 2 horas hasta 4 horas. Al terminar el proceso de entrenamiento, se guardará la con el nombre redDefault en la carpeta redesEntrenadas en el Matlab Drive. Red personalizada Esta red consiste en una red creada a partir de los movimientos elegidos por el usuario. Para ello, previamente debemos capturar estos movimientos mediante los sensores de un dispositivo móvil utilizando la aplicación MATLAB para dispositivos móviles. Recogida de movimientos propios Para cada movimiento se realizará una recogida de datos. Para ello debemos activar todos los sensores de la aplicación Matlab Mobile. Para ello, accederemos desde el menú al apartado de sensores. Tras activar todos los sensores, también debemos cambiar la opción Transmitir a escogiendo la opción Registro. De esta forma, cuando captemos datos, estos se guardarán en un registro en una carpeta del Matlab Drive denominada MobileSensorData. Para cada movimiento se debe crear un registro. Para ello se pulsa el botón Empezar de la aplicación MATLAB. Comenzando, acto seguido, a realizar el ejercicio que se desea captar. Al finalizar la acción, se pulsa el botón terminar. Al pulsar este botón, nos pedirá que introduzcamos el nombre del registro. Este nombre es el que se usará posteriormente para clasificar el movimiento, por lo que es conveniente nombrarlo como el propio movimiento que hemos realizado, como por ejemplo, sentado. Según el tiempo de realización del ejercicio, más datos tendremos para su posterior clasificación, por lo que es aconsejable invertir tiempo en la recogida 59 de datos para que la red ajuste mejor sus pesos y alcance una mayor precisión con el menor error de pérdida posible. Una vez que tenemos todos nuestros movimientos con datos en registros, se puede proceder con el entrenamiento. En la pestaña Entrenamiento red se escribe, en el primer recuadro, el número de movimientos y por tanto acciones que identificará nuestra red y pulsamos el botón Aceptar. Si el número no es válido, no dejará pasar al siguiente paso. Una vez introducido el número, deberemos escribir el nombre de los registros uno a uno, correspondientes a las acciones bajo entrenamiento. Tras escribirlo, primero se debe pulsar el botón Buscar para comprobar que este registro existe en la carpeta MobileSensorData, y si finalmente deseamos añadirlo para utilizarlo en el entrenamiento, deberemos pulsar el botón Añadir. Una vez que hemos añadido tantos archivos como el número indicado en el primer paso, se habilitará el cuadro para elegir el nombre de la red que vamos a entrenar. Una vez introducido, pulsamos el botón Aceptar, y se habilitará el botón Comenzar entrenamiento. Si se ha cometido algún error en alguno de los pasos, se habilita el botón RESET para iniciar el proceso desde el primer paso. Sin importar el momento en el que se pulse, siempre se volverá al primer paso para comenzar de nuevo el proceso. Una vez que pulsamos el botón Comenzar entrenamiento, nos aparecerá una ventana en la cual se muestran los nombres de los registros introducidos. Si pulsamos OK, tras unos segundos se abrirá la ventana del proceso de entrenamiento, cuya duración dependerá de cuántos datos contienen los registros. Si pulsamos Cancel, nos devuelve a la ventana anterior, de forma que podemos pulsar el botón RESET si queremos empezar de cero el proceso, o pulsar de nuevo el botón Comenzar entrenamiento si así lo deseamos. Una vez finalizado el entrenamiento, se guardará una red con el nombre introducido anteriormente en la carpeta redesEntrenadas de Matlab Drive. Este proceso también crea un archivo similar al de HumanActivityTrain utilizado en el entrenamiento de la redDefault. Este archivo se guarda con el nombre de la red, añadiendo -Train a este nombre, exactamente en la carpeta archivosTrain de Matlab Drive. 60 A.2 Clasificación de acciones Como se ha explicado en el capítulo cuatro, es posible clasificar acciones mediante dos procedimientos distintos. A continuación, se explica cómo proceder en cada uno de ellos. Captura y clasificación en tiempo real Para poder clasificar acciones en tiempo real, la aplicación debe ejecutarse mediante Matlab Online con la conexión de Matlab Drive. De esta forma dispondremos del mismo espacio compartido con el dispositivo móvil. Es requisito fundamental activar todos los sensores del dispositivo accediendo desde la app móvil al menú principal->sensores, de no ser así, la captura de datos no estará disponible. Además, debemos configurar el sensor estableciendo la trasmisión a MATLAB. Una vez establecida la configuración de los sensores, el usuario deberá elegir con qué modelo de red se van a clasificar los datos. Por defecto, la red utilizada será redDefault. Acto seguido, para comprobar que se puede establecer la conexión con el móvil se deberá pulsar el botón Conectar. Si existiera algún problema se notificaría al usuario mediante una ventana emergente. En cambio, si se ha podido cargar el modelo de red y la conexión con el dispositivo ha sido exitosa, la aplicación estará lista para iniciar la captura y clasificación de datos en tiempo real. Cuando el usuario esté listo para comenzar la acción se debe pulsar el botón Comenzar captura de acciones. La captura comenzará automáticamente y tras unos segundos se detendrá, obteniendo en la interfaz los resultados de la clasificación. Clasificación de acciones por archivos En esta ocasión se ofrece al usuario importar su propio archivo de captura de datos. Al pulsar el botón Importar se abrirá un explorador de archivos donde el usuario podrá elegir el archivo que tenga guardado en el ordenador y desee clasificar. Si no existe ningún archivo y se desea capturar datos, el proceso se realiza mediante el dispositivo móvil, generando el resultado en la carpeta MobileSensorData, desde donde podrá importar dicho archivo. Una vez seleccionado el archivo se iniciará el proceso automáticamente, obteniendo la moda de la clasificación por la interfaz. 61