LSTM para el reconocimiento de la actividad humana
Reconocimiento de actividad humana (HAR) utilizando el conjunto de datos de teléfonos inteligentes y un LSTM RNN. Clasificación del tipo de movimiento entre seis categorías:
- CAMINANDO,
-WALKING_UPSTAIRS,
- WALKING_DOWNSTAIRS,
- SENTADO,
- EN PIE,
- COLOCACIÓN
En comparación con un enfoque clásico, el uso de Redes Neuronales Recurrentes (RNN) con celdas de Memoria de Corto Plazo (LSTM) no requiere o casi no requiere ingeniería de características. Los datos se pueden alimentar directamente a la red neuronal que actúa como una caja negra, modelando el problema correctamente. Otra investigación sobre el conjunto de datos de reconocimiento de actividad puede utilizar una gran cantidad de ingeniería de características, que es más bien un enfoque de procesamiento de señales combinado con técnicas clásicas de ciencia de datos. El enfoque aquí es bastante simple en términos de cuánto se preprocesaron los datos.
Usemos la ordenada biblioteca de Deep Learning de Google, TensorFlow, que demuestra el uso de un LSTM, un tipo de red neuronal artificial que puede procesar datos secuenciales / series de tiempo.
Resumen del conjunto de datos de video
Detalles sobre los datos de entrada
Usaré un LSTM en los datos para aprender (como un teléfono celular conectado a la cintura) para reconocer el tipo de actividad que el usuario está haciendo. La descripción del conjunto de datos es así:
Las señales del sensor (acelerómetro y giroscopio) se preprocesaron aplicando filtros de ruido y luego se tomaron muestras en ventanas deslizantes de ancho fijo de 2.56 segundos y 50% de superposición (128 lecturas / ventana). La señal de aceleración del sensor, que tiene componentes gravitacionales y de movimiento corporal, se separó usando un filtro de paso bajo Butterworth en aceleración corporal y gravedad. Se supone que la fuerza gravitacional solo tiene componentes de baja frecuencia, por lo tanto, se utilizó un filtro con una frecuencia de corte de 0.3 Hz.
Dicho esto, utilizaré los datos casi en bruto: solo el efecto de gravedad se ha filtrado del acelerómetro como un paso de preprocesamiento para otra característica 3D como entrada para ayudar al aprendizaje. Si alguna vez desea extraer la gravedad usted mismo, puede bifurcar mi código al usar un filtro de paso bajo Butterworth (LPF) en Python y editarlo para tener la frecuencia de corte correcta de 0.3 Hz, que es una buena frecuencia para la actividad reconocimiento de sensores corporales.
¿Qué es un RNN?
Como se explica en este artículo , un RNN toma muchos vectores de entrada para procesarlos y generar otros vectores. Se puede representar más o menos como en la imagen a continuación, imaginando que cada rectángulo tiene una profundidad vectorial y otras peculiaridades ocultas especiales en la imagen a continuación. En nuestro caso, se utiliza la arquitectura "muchos a uno" : aceptamos series temporales de vectores de características (un vector por paso de tiempo ) para convertirlos en un vector de probabilidad en la salida para su clasificación. Tenga en cuenta que una arquitectura "uno a uno" sería una red neuronal de alimentación estándar.
¿Qué es un LSTM?
Un LSTM es un RNN mejorado. Es más complejo, pero más fácil de entrenar, evitando lo que se llama el problema del gradiente de fuga. Recomiendo este artículo para que aprenda más sobre LSTM.
Resultados
¡Desplácese! Bonitas imágenes te esperan.
https://github.com/guillaume-chevalier/LSTM-Human-Activity-Recognition