activity_recognition_from_accelerometer_data_set
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
activity_recognition_from_accelerometer_data_set [2020/09/30 17:58] – [doc] serge | activity_recognition_from_accelerometer_data_set [2021/12/14 09:50] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. 62.210.73.184 | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
<WRAP center round box 60% centeralign> | <WRAP center round box 60% centeralign> | ||
- | **{{tagpage> | + | **[[intelligence_artificielle|Intelligence Artificielle]]** |
</ | </ | ||
+ | |||
+ | Votre mission: **Reconnaître l' | ||
+ | |||
+ | Cette page fait suite à [[detecting_heavy_drinking|Detecting Heavy Drinking]] qui n' | ||
+ | |||
=====Source des datas===== | =====Source des datas===== | ||
* **[[https:// | * **[[https:// | ||
- | =====Documention===== | + | ====Activités==== |
+ | - Working at Computer | ||
+ | - Standing Up, Walking and Going updown stairs | ||
+ | - Standing | ||
+ | - Walking | ||
+ | - Going UpDown Stairs | ||
+ | - Walking and Talking with Someone | ||
+ | - Talking while Standing | ||
+ | =====Documentation===== | ||
* **[[https:// | * **[[https:// | ||
Ligne 15: | Ligne 28: | ||
* **[[https:// | * **[[https:// | ||
+ | ===== Source sur GitHub ===== | ||
+ | * **[[https:// | ||
+ | |||
+ | sudo pip3 install numpy matplotlib scipy tensorflow | ||
+ | | ||
+ | Sur xubuntu 20.04, pb avec cublas (qui n'est pas là où il faudrait, erreur nvidia), dans le dossier du projet: | ||
+ | export LD_LIBRARY_PATH=/ | ||
+ | python3 main_keras_clean_smooth.py | ||
+ | =====Installation et matériel requis===== | ||
+ | Une carte graphique n'est pas nécessaire, | ||
+ | |||
+ | 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 [[compilation_de_oepncv_avec_cuda_sur_ubuntu|Cuda]]. | ||
=====Représentation des datas===== | =====Représentation des datas===== | ||
- | {{: | + | {{ : |
+ | {{: | ||
- | + | =====Recherche des zones valable en Input de Keras===== | |
- | {{tag>ia python | + | ====Quelle est la zone des datas à conserver en Input ?==== |
+ | === Définition des bornes avec des sliders === | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== Application d'un filtre: Algorithme de Savitzky-Golay ==== | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | |||
+ | ====Comparaison avant et après le filtre==== | ||
+ | Réalisé avec window = 21 polyorder = 3 | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | **Avant le filtre** | ||
+ | {{: | ||
+ | {{: | ||
+ | </ | ||
+ | |||
+ | <WRAP half column> | ||
+ | **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**, | ||
+ | |||
+ | ===== Apprentissage / Test avec les données nettoyées===== | ||
+ | ====Création des fichiers de données==== | ||
+ | * [[https:// | ||
+ | |||
+ | Par exemle, les paquets de 900 array de 3 soit: | ||
+ | < | ||
+ | [[1012 2047 3089] | ||
+ | [1082 2077 3012] | ||
+ | [1096 2055 3078] | ||
+ | ... | ||
+ | 900 fois | ||
+ | ...] | ||
+ | </ | ||
+ | sont créés en décalant la 1ère valeur de " | ||
+ | {{ : | ||
+ | Avec gliss, le fichier de datas obtenu peut être très gros (quelques Giga Octects) et provoque un dépassement de mémoire dans Keras. Un bon compromis est entre 50 et 100. On transforme en fait des datas de 5 Mo en des datas de 50 Mo à quelques centaines de Mo. | ||
+ | |||
+ | ==== Apprentissage / Test ==== | ||
+ | * [[https:// | ||
+ | |||
+ | Les labels de sortie sont un array de shape=(32100, | ||
+ | [ 0\\ 5\\ 4\\ 1\\ 2\\ 4\\ 6\\ ...] avec 32100 valeurs. | ||
+ | |||
+ | Il faut ABSOLUMENT les transformer en vecteurs " | ||
+ | |||
+ | [ 1 0 0 0 0 0 0]\\ | ||
+ | [ 0 0 0 1 0 0 0]\\ | ||
+ | [ 0 0 0 0 1 0 0]\\ | ||
+ | [ 0 0 0 0 0 0 0]\\ | ||
+ | [ 0 0 1 0 0 0 0]\\ | ||
+ | [ 0 1 0 0 0 0 0]\\ | ||
+ | [ 0 0 0 0 0 0 1]\\ | ||
+ | ... jusqu' | ||
+ | |||
+ | ===one-hot-encoding=== | ||
+ | {{: | ||
+ | |||
+ | Le one-hot-encoding est obtenu avec | ||
+ | <code lang=python> | ||
+ | train_label = utils.to_categorical(data[" | ||
+ | </ | ||
+ | |||
+ | ====Build Model==== | ||
+ | Inspiré de [[https:// | ||
+ | et | ||
+ | * [[comment_configurer_le_nombre_de_couches_et_de_nœuds_dans_un_reseau_neuronal|Comment configurer le nombre de couches et de nœuds dans un réseau neuronal]] | ||
+ | * [[keras_input_explanation|Keras input explanation: | ||
+ | |||
+ | <code python> | ||
+ | # Choix du model | ||
+ | self.model = Sequential() | ||
+ | # Input layer | ||
+ | self.model.add(layers.Dense(units=4, | ||
+ | self.model.add(layers.Flatten()) | ||
+ | |||
+ | # Hidden layer | ||
+ | self.model.add(layers.Dense(64, | ||
+ | |||
+ | # Output | ||
+ | self.model.add(layers.Dense(7, | ||
+ | </ | ||
+ | |||
+ | ====Compile Model==== | ||
+ | |||
+ | <code python> | ||
+ | self.model.compile( loss=self.loss, | ||
+ | optimizer=self.optimizer, | ||
+ | metrics=self.metrics) | ||
+ | |||
+ | " | ||
+ | " | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ====Résultats==== | ||
+ | Les meilleurs | ||
+ | |||
+ | {{: | ||
+ | |||
+ | mais aussi les plus mauvais | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ====Conclusion==== | ||
+ | Les courbes d'une activité à l' | ||
+ | =====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' | ||
+ | ====Capture de datas pour l' | ||
+ | Des testeurs cobayes seront chargés de picoler, enregister les verres bus et capturer leur marche ! | ||
+ | |||
+ | ====Roulez Bourrez==== | ||
+ | C'est le fameux projet: **[[roulez_bourrez|Roulez Bourrez]]** | ||
+ | |||
+ | =====Vision artistique des datas d' | ||
+ | Du son et des images avec [[https:// | ||
+ | sudo pip3 install opencv-python sounddevice | ||
+ | |||
+ | {{ : | ||
+ | =====Autres idées===== | ||
+ | La personne utilise son téléphone normalement, | ||
+ | Pour créer les datas d' | ||
+ | |||
+ | {{tag> ia keras python realisations_logicielles }} |
activity_recognition_from_accelerometer_data_set.1601488691.txt.gz · Dernière modification : 2020/09/30 17:58 de serge