Se encontraron 7 coincidencias

por DiegoHDMGZ
03 Mar 2021, 22:07
Foros: Proyectos en Inteligencia Artificial
Tema: Speech Emotion Recognition
Respuestas: 0
Vistas: 698

Speech Emotion Recognition

  • Tema: Speech Emotion Recognition
  • Integrantes :
    • Hans Martin Acha Carranza
    • Diego Hurtado de Mendoza González Zúñiga
    • Jair Puican Cuadros
  • Resumen: El presente trabajo consiste en la elaboración de un algoritmo para el reconocimiento de 4 emociones (molesto, triste, feliz, neutral) a través de audio y plasmarlo en un aplicativo web. Extraeremos las características acústicas representadas por el espectrograma del audio transformado en imagen. Esa imagen la utilizaremos como input a una red neuronal convolucional con la arquitectura ResNet34. Compararemos los resultados en 2 datasets: RAVDESS y un dataset propio.
  • Paper:
  • Pasos para el desarrollo del trabajo:
    • Documentación:
    • Librerías para el pip install:
  • Video presentación del trabajo:
  • PPT:
    G3_Presentacion_Speech Emotion Recognition.pptx
    (2.82 MiB) Descargado 49 veces
  • Código fuente: Repositorio Github
  • Dataset: Dataset en Github
por DiegoHDMGZ
15 Ene 2021, 16:41
Foros: Inteligencia Artificial
Tema: Clustering de Actividades para la Generación de Empleo del MTPE
Respuestas: 0
Vistas: 478

Clustering de Actividades para la Generación de Empleo del MTPE

  1. Resumen : Se estudió el dataset del Ministerio de Trabajo en donde se encontraban los datos de actividades y obras hechas para incentivar la generación de empleo. Estas actividades están relacionadas principalmente al rubro de limpieza. Se realizará un clustering para poder agrupar las actividades con características similares. Se utilizará el método "Elbow Method" para hallar la cantidad de clusters adecuada y el algoritmo K-Means para hallar los clusters.
  2. Descripción del dataset:
    • Dataset original:
      Link del dataset original : https://www.datosabiertos.gob.pe/datase ... del-empleo(se utilizará el archivo "Trabaja Perú: Proceso de Seguimiento Trabaja Perú")

      Los atributos se describen en la siguiente imagen:
      descripcionDataset.png
      descripcionDataset.png (50.7 KiB) Visto 254 veces
    • Dataser Procesado:
      En primer lugar, eliminamos la fecha de término ya que no hay ninguna instancia con ese dato llenado. Luego eliminamos los atributos irrelevantes como el id del convenio, el id de la actividad, la fecha de padrón , la fecha de elegibilidad, fecha de recibido y fecha de inicio.

      Nos quedamos con los siguientes atributos:
      atributosElegidos.png
      atributosElegidos.png (14.15 KiB) Visto 254 veces
      El dataset limpio lo podemos ver a continuación:
      Procesos_Seguimiento_Trabaja_Peru_limpio.csv
      (798.4 KiB) Descargado 56 veces
  3. Descripción de los resultados con las técnicas usadas
    • Determinando el número de clusters: Utilizamos el Elbow Method para hallar el número de clusters. Para ello utilizaré el programa "numberOfClusters.R" que está ubicado en mi ruta de github (ver final del post). Al trazar la gráfica podemos ver lo siguiente :
      elbowMethod.png
      elbowMethod.png (5.72 KiB) Visto 254 veces
      El momento en donde aparece un punto de quiebre dando la forma de un codo es aproximadamente 3, por lo que definimos K = 3 clusters
    • Algoritmo KMeans para realizar el clustering
      En Weka primero normalizamos la data y luego corremos el algoritmo de KMeans con K = 3.

      Se tiene el siguiente resultado:
      KMeans.png
      KMeans.png (43.92 KiB) Visto 254 veces
      Podemos ver que la mayoría de instancias están en el cluster #2.
      Analicemos con mayor detalle los centroides. En la pantalla anterior no se puede apreciar muy bien debido a que uno de los valores de los atributos tienen un nombre muy largo, pero lo podemos ver en las siguientes pantallas:
      cluster0.png
      cluster0.png (10.41 KiB) Visto 254 veces
      cluster1.png
      cluster1.png (9.47 KiB) Visto 254 veces
      cluster2.png
      cluster2.png (10.91 KiB) Visto 254 veces
  4. Conclusiones
    • El cluster 0 está centrado en la municipalidad de TamboGrande que se ubica en Piura y se realizan principalmente actividades de limpieza y mantenimiento de caminos con un monto asignado promedio de S/. 141 852
    • El cluster1 está centrado en la municipalidad de Cutervo que se ubica en Cajamarca y se realizan principalmente actividades de limpieza de cauces y riachuelos con un monto asignado promedio de S/. 118 322
    • El cluster2 está centro en la municipalidad de San Juan de Lurigancho que se ubica en Lima y se realizan principalmente actividades de limpieza y mantenimiento de infraestructura deportiva con un monto asignado promedio de S/. 146 739

      Podemos ver que las actividades encontradas muestran cierta relación con la ubicación geográfica que se halló en el cluster. Asímismo, los montos de dinero más grandes se encuentran asignados a las ciudades cerca a la capital (Lima) y los más pequeños a regiones de la sierra (Cajamarca). También se encontró que la mayoría de actividades de generación de empleo están en el cluster2 (71% de las instancias), es decir, probablemente los más cercanos a Lima.
  5. Problemas con la data
    No se detectaron grandes fallos en la data que afectaran el procedimiento que expliqué aquí. Sin embargo hubo atributos como Fecha_Termino que tenían 100% de valores perdidos (no había ninguna instancia que lo tuviera llenado), por lo cual sería mejor no colocarlo. También habían atributos como Fecha_G_Padron y Fecha_Inicio que tenían 30% de valores perdidos.
  6. Github
    https://github.com/DiegoHDMGZ/IAA-PC2/t ... Clustering
    Contiene los datasets y el programa en R para hallar el número de clusters.
por DiegoHDMGZ
15 Ene 2021, 13:24
Foros: Inteligencia Artificial
Tema: Clasificación de la causa de muerte (COVID u otra) de pacientes registrados en el SINADEF
Respuestas: 0
Vistas: 460

Clasificación de la causa de muerte (COVID u otra) de pacientes registrados en el SINADEF

  1. Resumen :
    Se escogió un dataset de los registros de los fallecidos del SINADEF por distintas enfermedades. Se creó un modelo de clasificación para poder determinar, a partir de los registros del fallecido, si este murió por COVID o por otra enfermedad. El dataset original contenía una gran cantidad de causante de muertes aparte del COVID, por lo que se tuvo que hacer un preprocesamiento para binarizar la data. Se seleccionaron atributos relevantes y se compararon 4 modelos de clasificación.
  2. Descripción del dataset:
    • Dataset original:
      Link: https://www.datosabiertos.gob.pe/datase ... ministerio
      Tambien pueden ver el dataset en el .zip que subí en mi github (ver la última parte de este post)
      descripcionDataset.png
      descripcionDataset.png (42.98 KiB) Visto 250 veces
    • Dataser Procesado:
      Dentro del dataset existen ciertos caracteres especiales que van a impedir que podamos leerlo desde Weka. Existen los caracteres ‘ y “ . Por ejemplo, en P’aro cardiaco (probablemente por un error) y en Hepatitis “C”. Para resolver esto, creé un programa en Python (ver el archivo preprocess.py en el github en la parte final del post) que elimine esos caracteres especiales.

      Eliminaremos los registros que de defunción de antes del año 2020 ya que no había COVID en ese entonces. Eliminaremos el atributo fecha ya que basta con tener el año y el mes. Además eliminaremos el atributo 1 del identificador ya que no es relevante. También eliminaremos el atributo “TIEMPO EDAD” ya que nos quedaremos solo con las personas mayores a 1 año.

      En el dataset consideran que una muerte puede tener múltiples causas, pero para simplificar el modelo vamos a binarizar la data. Reemplazaremos los atributos 20 – 31 por la clase “MUERTE POR COVID” con posibles valores de “SI”, “NO”. Si algún paciente tiene alguna causa que contenga la palabra “COVID”, se le considerará el valor de la nueva clase como “SI”, caso contrario como “NO”.

      Por último, se eliminan aquellos registros que tengan algún atributo como “IGNORADO” o “NO REGISTRADO” (excepto cuando haya demasiada pérdida de data).

      De los atributos restantes seleccionamos los relevantes con Weka utilizando InfoGainAttributeEval:
      seleccionAtributos.png
      seleccionAtributos.png (59.89 KiB) Visto 250 veces
      Eliminamos los últimos 4 atributos

      Por último, balanceamos la data haciendo downsampling en ambas clases (ya que la cantidad de datos es demasiada y no habrá memoria suficiente para correr los algoritmos) y nos queda la siguiente distribución:
      balanceo.png
      balanceo.png (5.77 KiB) Visto 250 veces
      Finalmente el dataset limpio puede verse en este archivo:
      fallecidos_sinadef_limpio.csv
      (1.86 MiB) Descargado 64 veces
  3. Descripción de los resultados con las técnicas usadas
    Primero normalizamos los datos. Luego aplicamos cada uno de los algoritmos de clasificación estudiados:
    • Árbol de Decisión
      decisionTree.png
      decisionTree.png (40.31 KiB) Visto 250 veces
    • Random Forest
      randomForest.png
      randomForest.png (40.16 KiB) Visto 250 veces
    • Bayes Net
      BayesNet.png
      BayesNet.png (40.24 KiB) Visto 250 veces
    • SVM
      SVM.png
      SVM.png (41.41 KiB) Visto 250 veces
  4. Conclusiones
    El mejor modelo es el de Random Forest ya que obtuvo el mayor accuracy (80.04%) así como los mayores TP rate (76.9% y 83.5%). Hay que notar que no hay una gran variación entre los 2 TP rate lo cual es bueno ya que el modelo no favorece una clase sobre la otra.
    Estimo que los resultados podrían ser mejores si la data fuera consistente, lo cual se detallará en la siguiente sección.
    Además es necesario recalcar que el balanceo era completamente necesario aquí ya que la gran cantidad de muertes era por enfermedades distintas a COVID y eso hubiera afectado a los algoritmos a inclinarse por la clase de muerte por "NO COVID".
  5. Problemas con la data
    En esta sección se detallarán algunos de los principales problemas que se tuvo al procesar la data.

    En primer lugar, el csv contenía caracteres especiales como la coma (,) , comillas dobles (") , comillas simples (') lo cual dificultaban la lectura desde Weka o desde librerías como panda.

    Además había muchos errores en las instancias, como por ejemplo escribir “COVID IDENTICADO” en lugar de “COVID IDENTIFICADO”, o escribir "COVI" en lugar de "COVID". Se entiende que son errores humanos de tipeo, pero esto afecta al procesamiento de los datos para producir modelos de predicción.

    Por último, dentro de las causas de muerte, se utilizaban varias frases para referirse a lo mismo, causando redundancia. Pongo como ejemplo los siguientes datos encontrados :
    redundanciaDatos.png
    redundanciaDatos.png (17.25 KiB) Visto 210 veces
    "CASO CONFIRMADO DE COVID", "CASO CONFIRMADO DE COVID 19" y "CASO CONFIRMADO DE COVID-19" por ejemplo, hacen referencia a lo mismo, pero al estar escrito diferente, podría dar a entender que son distintas causas. Una solución para esto podría ser que se tengan un diccionario de posibles etiquetas para las causas de muertes de tal forma que el llenado de datos sea más estructurado.
  6. Github
    https://github.com/DiegoHDMGZ/IAA-PC2/t ... sificacion
    Contiene los datasets y el programa en python para poder eliminar caracteres especiales y binarizar la clase
por DiegoHDMGZ
18 Dic 2020, 18:31
Foros: Inteligencia Artificial
Tema: Detección de Vehículos usando Deep Learning
Respuestas: 0
Vistas: 483

Detección de Vehículos usando Deep Learning

  1. Descripción:
    En nuestros tiempos, es muy común el uso de autos para poder movilizarnos. Según estadísticas mundiales, se estima que la demanda anual de autos es de aproximadamente de 80 millones de autos. Esta creciente demanda puede generar ciertos efectos negativos; por ejemplo, se estima que aproximadamente 1.35 millones de personas mueren cada año en algún accidente de tránsito, y el Perú no es una excepción para el problema del tráfico, más aún cuando poseemos un alto grado de informalidad en el transporte y muchas personas incumplen las normas de tránsito.
    estadisticas demanda autos.png
    estadisticas demanda autos.png (25.66 KiB) Visto 260 veces
    (Estadísticas obtenidas de IEA, Global car sales by key markets, 2005-2020, IEA, Paris)

    Esta problemática ha motivado la creación de sistemas inteligentes de transporte para poder monitorear el tráfico de vehículos. Estos sistemas buscan mejorar la seguridad, movilidad, productividad del sistema del transporte. Algunas tareas importantes que buscan hacer estos sistemas de forma eficiente son, por ejemplo, el conteo de vehículos, la medición de la velocidad, identificación de accidentes de tránsito, etc. Para esto se necesitan de varios sensores e implementos como las cámaras.
    Un paso importante en todo este proceso es poder detectar los vehículos a partir de los videos de las cámaras, en tiempo real. La detección de los vehículos no solo es útil en los sistemas de transporte inteligente, sino también tiene aplicaciones en otros campos como en los autos autónomos.
    Un problema para la realización de esta tarea es que los algoritmos que se usen para la detección de vehículos deben también funcionar bajo condiciones bajas de iluminación, para que también puedan ser usados en las noches.
    Intelligent Transport System.png
    Intelligent Transport System.png (610.98 KiB) Visto 260 veces
  2. Herramientas:
    • Dataset
      Algunos datasets públicos son por ejemplo Change Detection Dataset, GTI Database, LISA Dataset. Muchos datasets tienen condiciones de iluminación muy buenas, pero por lo que se mencionó anteriormente, también sería bueno tener datos con algunas condiciones extremas, como baja iluminación (datos tomados en la noche), presencia de lluvia, niebla u otros factores climatológicos, etc. Sin embargo, hay que recalcar que esto también dificultad el etiquetado de los datos.
    • Extracción de Características
      Existen muchos enfoques para poder abordar el problema de la detección de vehículos, pero muchos de ellos comparten como primer paso la extracción de ciertas características que, al procesarlas, puedan servir como input para algún algoritmo de machine learning. Entre ellas, en la literatura se citan el uso de Haar-Like features (relacionadas con los cambios de intensidades de brillo en la imagen), Histogram Of Gradient features (relacionadas a los bordes de los objetos), entre otras. Incluso es posible experimentar fusionando distintos tipos de características.
      HOG features.png
      HOG features.png (75.07 KiB) Visto 260 veces
    • Algoritmos
      Una vez uno ha elegido las características a usar, lo siguiente es seleccionar porciones de la imagen, extraer las características que se crean pertinentes y pasar estas como input por algún algoritmo clasificador para determinar si es un vehículo o no. Algunos algoritmos de machine learning usados para esta última etapa son Support Vector Machine (SVM), Adaboost, Neural networks (NN), Convolutional Neural Networks (CNN), Region Based CNN (R-CNN), etc.

      Leung et al. utilizaron el algoritmo de Fast R-CNN . Este algoritmo se basa en analizar ciertas regiones de interés (ROI) de la imagen. Sin embargo, utiliza métodos eficientes para no tener demasiadas regiones que analizar. En cada región, utiliza redes neuronales convolucionales (CNN) para extraer las características respectivas de esa región. En la siguiente imagen se muestra un esquema general de esto:
      R-CNN.png
      R-CNN.png (122.96 KiB) Visto 260 veces
      Los autores utilizaron las arquitecturas VGG16 y Resnet101 y utilizarn la técnica de transfer learning para partir de una red pre-entrenada y reducir el tiempo de entrenamiento. Utilizaron un learning rate inicial de 10-3 que terminó en 10-4 luego de 200 000 iteraciones
      Ellos utilizaron tensorflow y librerías como OpenCV.
  3. Resultados:
    Los autores obtuvieron un modelo bastante robusto quepuede detectar los vehículos incluso cuando la iluminación es bastante baja
    VehicleDetection.png
    VehicleDetection.png (438.44 KiB) Visto 260 veces
    Para cada clase de vehículo (auto, bus, bicicleta, motocicleta, etc.) obtuvieron precisiones promedio que varían entre 70 y 90% con la arquitectura Resnet101, mientras con la arquitectura VGG16 las precisiones eran ligeramente menores, variando entre 65 y 80%; sin embargo, el tiempo de procesamiento por imagen de la arquitectura VGG16 era menor comparado con el del Resnet101, haciendo al VGG16 una arquitectura preferido para el caso de sistemas embebidos con pocos recursos. Los tiempos de procesamiento son los siguientes:
    tiempo procesamiento.png
    tiempo procesamiento.png (14 KiB) Visto 260 veces
  4. Conclusiones:
    El uso de Sistemas de Transporte Inteligente ha abierto una gran posibilidad para poder disminuir el problema del tráfico. En ciudades más avanzadas ya se empiezan a usar con más frecuencia y sería de gran ayuda si también se usaran en el Perú.
    Las redes neuronales convolucionales son unos de los algoritmos que más destacan para el reconocimiento de objetos. En particular, en el caso de la detección de vehículos, las Faster Region Based Convolutional Neural Network (Fast R-CNN) han mostrado tener muy buenos resultados incluso en condiciones de baja iluminación; sin embargo, el dataset creado por los autores Leung et al. también juega un papel importante para lograr esto. La precisión lograda por estos autores con la arquitectura Resnet101 tiene valores entre 70 y 90%.
  5. Referencias:
    Leung, H. K., Chen, X. Z., Yu, C. W., Liang, H. Y., Wu, J. Y., & Chen, Y. L. (2019). A Deep-Learning-Based Vehicle Detection Approach for Insufficient and Nighttime Illumination Conditions. Applied Sciences, 9(22), 4769. https://www.mdpi.com/2076-3417/9/22/4769
    Yang, Z., & Pun-Cheng, L. S. (2018). Vehicle detection in intelligent transportation systems and its applications under varying environments: A review. Image and Vision Computing, 69, 143-154. https://www.sciencedirect.com/science/a ... 5617301592
por DiegoHDMGZ
18 Dic 2020, 13:04
Foros: Inteligencia Artificial
Tema: Speech Emotion Recognition combinando características acústicas y linguísticas
Respuestas: 0
Vistas: 444

Speech Emotion Recognition combinando características acústicas y linguísticas

  1. Descripción: En estos tiempos, es cada vez más común la interacción de las personas con sus celulares. Una de las primeras cosas que se nos puede venir a la mente al tocar este tema es el asistente de voz de Apple : Siri. Es por ello que ha crecido el interés en mejorar la comunicación entre humano-máquina. Uno de los caminos para lograr esto, es que las máquinas pueden detectar las emociones de las personas a través de audio. Esto también podría ser tener aplicaciones en campos como e-learning, en tutoriales web, en terapias, en aplicaciones para call centers, etc.
    Las emociones clásicas que suelen considerar para el reconocimiento son las denominadas emociones de Ekman : enojo, disgusto, miedo, alegría, tristeza y sorpresa.
    El reconocimiento de las emociones a través de audio es un problema desafiante debido a que no se sabe exactamente qué características acústicas sean las mejores para poder analizar los patrones de las emociones. Además que en cada característica exista cierta variabilidad en cada persona distinta. También está le hecho de que en una misma oración que habla una persona podrían estar presentes varias emociones a la vez en distinto grado.
    audioFeatures.png
    audioFeatures.png (87.04 KiB) Visto 237 veces
  2. Herramientas:
    • Dataset
      La mayoría de datasets de speech emotion recognition son actuados debido a que utilizar audios de conversaciones reales puede tener implicancias legales y éticas. Algunos datasets usados son IEMOCAP, RAVDESS, INTERFACE.
    • Características acústicas
      Existen un gran número de características del audio que pueden ser usados como input para un algoritmo de machine learning. Algunas de ellas son por ejemplo el tono (pitch), la energía, la frecuencia, el formante, etc. También son muy usadas las características espectrales, entre las cuales se encuentra los Mel Frequency Cepstrum Coefficients (MFCC).
    • Algoritmos
      Una vez seleccionadas las características a usar, se puede utilizar algoritmos de machine learning para poder hacer la clasificación final. Algunos de los algoritmos que se citan en la literatura son Hidden Markov Model, Gaussian Mixture Models, Support Vector Machine, Neural Networks y k-NN.
      En un intento de mejorar la precisión del reconocimiento, algunos autores combinan las características acústicas con el contenido lingüístico del discurso. Un esquema podría ser el siguiente:
      procedimiento.png
      procedimiento.png (48.37 KiB) Visto 237 veces
      En este caso, se debe entrenar un modelo para poder obtener las palabras utilizadas y también las emociones que involucra cada palabra. Luego se debe combinar este resultado con el obtenido con las características acústicas para poder obtener el resultado final.

      Por ejemplo, Tripathi et al. utilizan Redes neuronales convolucionales para poder relacionar las palabras con las emociones. Para ello utilizan un diccionario de palabras que están agrupadas según las emociones que transmiten. Esto les permite obtener un denominado "word embeddings" a partir de cada secuencia de palabras, lo cual representa un vector de números enteros que codifica, de cierta forma, la información necesaria de las palabras. Esta conversión le permite pasar estos "words embeddings" como inputs para la red neuronal. Los autores utilizan los word embeddings de Google denominados "Google Word2Vec".
      Ellos también hacen una red neuronal para las características acústicas con MFCC para finalmente fusionar la información lingüística con la acústica en una última capa de la red neuronal. Los autores en la red neuronal utilizaron técnicas como dropout (con ratios entre 25 y 75%) y batch normalization para poder contrarrestar el overfitting; y la técnica “adadelta” como optimización. Para la función de activación se utilizó Rectified Linear Unit (ReLU).
      La arquitectura completa es la siguiente:
      arquitectura.png
      arquitectura.png (235.01 KiB) Visto 237 veces
  3. Resultados:
    Tripathi et al. utilizaron su algoritmo de redes neuronales sobre el dataset IEMOCAP. Ellos probaron varios modelos, pero el que les dio mejor resultados fue el de combinar MFCC con las características lingüísticas, obteniendo 76.1% de accuracy. Esta es la tabla de todos sus experimentos.
    resultados.png
    resultados.png (36.15 KiB) Visto 237 veces
  4. Conclusiones:
    El avance en Speech Emotion Recognition permitirá mejorar la comunicación humano-máquina y otras aplicaciones en otros campos. Aunque todavía hacer esto es desafiante, más aún por el hecho de que la mayoría de datasets son audios “actuados”, se pueden utilizar algoritmos como redes neuronales sobre características acústicas (como MFCC) y características lingüísticas para tener resultados prometedores con porcentaje de acierto de 76.1%
  5. Referencias:
    El Ayadi, M., Kamel, M. S., & Karray, F. (2011). Survey on speech emotion recognition: Features, classification schemes, and databases. Pattern Recognition, 44(3), 572-587 https://www.sciencedirect.com/science/article/abs/pii/S0031320310004619
    Tripathi, S., Kumar, A., Ramesh, A., Singh, C., & Yenigalla, P. (2019). Deep learning based emotion recognition system using speech features and transcriptions.https://arxiv.org/ftp/arxiv/papers/1906/1906.05681.pdf

por DiegoHDMGZ
02 Dic 2020, 01:08
Foros: Programación
Tema: Shortest Path Algorithms (BFS, Dijkstra y más)
Respuestas: 0
Vistas: 6946

Shortest Path Algorithms (BFS, Dijkstra y más)

El presente documento es una de las clases que dicto en el grupo de programación competitiva UNI, al ser yo uno de los coaches encargados. El tema aborda algoritmos que están relacionados al problema de encontrar la ruta más corta (shortest path) en un grafo.

El documento está en español y ha sido elaborado por mí, en su totalidad, e incluye los siguientes algoritmos:
  • BFS (Breadth First Search)
  • Programación dinámica para hallar shortest path en DAG
  • Dijkstra's Algorithm
  • Bellman-Ford Algorithm
  • Moore's Algorithm
  • Floyd-Warshall Algorithm
Cada uno de estos está acompañado de su respectiva demostración tanto de su correctitud como de su complejidad algorítmica. También están acompañados de códigos en C++.

Estos algoritmos son usados en los concursos de programación, pero también están presentes en algunos cursos de nuestra carrera como Investigación de operaciones II e Inteligencia Artificial Avanzada.

En particular, el algoritmo de BFS es visto también en el curso de IA Avanzada con el profesor Wester Zela. Mientras que el algoritmo de Dijkstra es visto en Investigación de Operaciones II (también es visto en IA avanzada, pero en su versión heurística como el algoritmo A*). Es por esa razón que creo que estos documentos pueden contribuir a profundizar un poco más sobre esos conceptos vistos en clase.
por DiegoHDMGZ
02 Dic 2020, 00:31
Foros: Proyectos en Inteligencia Artificial
Tema: Activity Recognition con redes neuronales utilizando el acelerómetro del celular
Respuestas: 0
Vistas: 454

Activity Recognition con redes neuronales utilizando el acelerómetro del celular

Activity Recognition
Integrantes
José Misael Abanto Llanos (jabantol@uni.pe)
Diego Hurtado de Mendoza González Zúñiga (diego.hurtadodemendoza.g@uni.pe)
Patricia Elena Pazce Alama (ppazcea@uni.pe)
Donnalyn Francesca Melgar Grijalba (dmelgarg@uni.pe)

Curso:
Inteligencia Artificial (ST414V)

Resumen
El presente proyecto fue realizado para el examen final del curso Inteligencia Artificial con el profesor Oporto.
Se tiene como objetivo principal la clasificación de actividades de una persona a través del uso del acelerómetro del celular. Se definieron 3 tipos de actividades: caminando, parado y saltando. Se creó un dataset con un hombre joven, un hombre adulto, una mujer joven, una mujer adulta realizando cada una de las actividades. Para cada una de las 3 actividades, cada una de las 4 personas realizó 50 experimentos con duración 5 segundos cada uno, con lo que da un total de 600 muestras captadas a través del acelerómetro. Las personas elegidas para crear el dataset son ,en algunos casos, los mismos integrantes del grupo y ,en otros, algunos familiares nuestros.

Cada señal fue pasada por un proceso de segmentación para aumentar la data, con lo que se llegó a un total de 3600 muestras (900 muestras por persona). La señal luego es pasada por un filtro pasabajos gaussiano para poder eliminar el ruido de las frecuencias altas y luego se aplicó la transformada rápida de Fourier (FFT) para convertirlo en un vector de características relacionados con el plano de la frecuencia. Después, todos los vectores de cada muestra de entrenamiento son pasados a una red neuronal que fue entrenado y luego usada para las predicciones.

Finalmente se realizo un prototipo de aplicación para el celular a través de un programa en python creado por el grupo que puede ser ejecutado usando la app Pydroid 3.

Se adjunta el documento pdf con mayores detalles.

Proyecto gitlab : https://gitlab.com/ia-uni/examen-final