Outils pour utilisateurs

Outils du site


activity_recognition_from_accelerometer_data_set

Activity Recognition from Single Chest-Mounted Accelerometer Data Set

Votre mission: Reconnaître l'activité du porteur d'un Accéléromètre.

Cette page fait suite à Detecting Heavy Drinking qui n'avait pas abouti.

Source des datas

Activités

  1. Working at Computer
  2. Standing Up, Walking and Going updown stairs
  3. Standing
  4. Walking
  5. Going UpDown Stairs
  6. Walking and Talking with Someone
  7. Talking while Standing

Documentation

Source sur GitHub

Installation et matériel requis

Une carte graphique n'est pas nécessaire, au contraire une carte augmente de beaucoup le temps de epochs de keras.

Il faut installer au moins: numpy, matplotlib, scipy, tensorflow

Ce projet a été développé sur Debian 10 Buster Mate, et testé aussi sur Xubuntu 18.04 avec Cuda.

Représentation des datas

Apprentissage avec les données brutes

Avec la norme du vecteur accélération

Avec les 3 composants des vecteurs des données brutes et Keras

Recherche des zones valable en Input de Keras

Quelle est la zone des datas à conserver en Input ?

Définition des bornes avec des sliders

Application d'un filtre: Algorithme de Savitzky-Golay

Comparaison avant et après le filtre

Réalisé avec window = 21 polyorder = 3

Avant le filtre

Après le filtre

Après correction

Activité 1 : Working at Computer

Activité 5: Going UpDown Stairs

Activité 6: Walking and Talking with Someone

Conclusion après analyse des courbes

Une seule personne a fait 15 fois le même parcours avec les mêmes activités, en portant toujours le même accéléromètre.

Soit un Rasberry Pi alimenté par batterie 5v USB.

Soit un téléphone avec une application fixé sur la poitrine.

Apprentissage / Test avec les données nettoyées

Création des fichiers de données

Apprentissage / Test

Modèle

Inspiré de www.tensorflow.org tutorials keras classification build_the_model et

    model = Sequential()
 
    # Input layer
    model.add(layers.Dense(units=4, input_shape=(PAQUET, 3)))
    model.add(layers.Flatten())
 
    # Hiiden layer
    model.add(layers.Dense(64))
 
    # Output
    model.add(layers.Dense(7))

Résultats

Paquets,51,window,41,polyorder,1,Efficacité,"38,9",Epochs,5
Paquets,251,window,81,polyorder,9,Efficacité,"38,1",Epochs,10
Paquets,251,window,31,polyorder,7,Efficacité,"37,6",Epochs,20
Paquets,151,window,51,polyorder,1,Efficacité,"37,5",Epochs,10
Paquets,301,window,81,polyorder,7,Efficacité,"37,4",Epochs,5
Paquets,125,window,61,polyorder,9,Efficacité,"37,2",Epochs,5
Paquets,75,window,21,polyorder,1,Efficacité,"36,9",Epochs,10
Paquets,151,window,61,polyorder,3,Efficacité,"36,9",Epochs,10
Paquets,301,window,21,polyorder,9,Efficacité,"36,8",Epochs,10
Paquets,301,window,61,polyorder,9,Efficacité,"36,8",Epochs,10
Paquets,251,window,71,polyorder,7,Efficacité,"36,6",Epochs,20
Paquets,101,window,81,polyorder,1,Efficacité,"36,5",Epochs,10
Paquets,151,window,51,polyorder,5,Efficacité,"36,5",Epochs,10
Paquets,51,window,61,polyorder,5,Efficacité,"36,3",Epochs,20
Paquets,301,window,51,polyorder,9,Efficacité,"36,3",Epochs,20
Paquets,301,window,81,polyorder,5,Efficacité,"36,3",Epochs,20
Paquets,25,window,51,polyorder,9,Efficacité,"36,2",Epochs,20
Paquets,251,window,61,polyorder,3,Efficacité,36,Epochs,5
Paquets,51,window,71,polyorder,3,Efficacité,"35,9",Epochs,10
Paquets,301,window,51,polyorder,9,Efficacité,"35,6",Epochs,10
Paquets,125,window,51,polyorder,5,Efficacité,"35,5",Epochs,5
Paquets,51,window,31,polyorder,9,Efficacité,"35,4",Epochs,10
Paquets,101,window,31,polyorder,5,Efficacité,"35,4",Epochs,20
Paquets,101,window,51,polyorder,7,Efficacité,"35,4",Epochs,5
Paquets,101,window,41,polyorder,1,Efficacité,"35,2",Epochs,5
Paquets,251,window,31,polyorder,3,Efficacité,"35,2",Epochs,10
Paquets,151,window,21,polyorder,9,Efficacité,"35,1",Epochs,10
Paquets,151,window,31,polyorder,7,Efficacité,"35,1",Epochs,20
Paquets,251,window,81,polyorder,3,Efficacité,"35,1",Epochs,5
Paquets,301,window,51,polyorder,5,Efficacité,"35,1",Epochs,20
Paquets,101,window,81,polyorder,1,Efficacité,35,Epochs,5
Paquets,125,window,21,polyorder,1,Efficacité,35,Epochs,20

Construction de mon propre capteur

Application Android

Pour Roulez Bourrez: création d'une application Android avec Kivy pour capter une marche de 10 secondes et en déduire l'alcoolémie.

Capture de datas pour l'apprentissage

Des testeurs cobayes seront chargés de picoler, enregister les verres bus et capturer leur marche !

Roulez Bourrez

activity_recognition_from_accelerometer_data_set.txt · Dernière modification: 2020/10/16 10:24 de serge