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/10/13 12:55] – [Comparaison avant et après le filtre] 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' | 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:// | ||
Ligne 28: | Ligne 31: | ||
* **[[https:// | * **[[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===== | =====Recherche des zones valable en Input de Keras===== | ||
====Quelle est la zone des datas à conserver en Input ?==== | ====Quelle est la zone des datas à conserver en Input ?==== | ||
Ligne 45: | Ligne 60: | ||
====Comparaison avant et après le filtre==== | ====Comparaison avant et après le filtre==== | ||
- | Réalisé avec PAQUET = 51 window = 21 polyorder = 3 | + | Réalisé avec window = 21 polyorder = 3 |
<WRAP group> | <WRAP group> | ||
<WRAP half column> | <WRAP half column> | ||
Ligne 59: | Ligne 74: | ||
</ | </ | ||
</ | </ | ||
- | |||
- | |||
- | |||
====Après correction==== | ====Après correction==== | ||
Ligne 75: | Ligne 87: | ||
**Une seule personne a fait 15 fois le même parcours avec les mêmes activités**, | **Une seule personne a fait 15 fois le même parcours avec les mêmes activités**, | ||
- | Cet appareil est probablement un Rasberry Pi alimenté par batterie 5v USB. Un sélecteur permet | + | ===== Apprentissage / Test avec les données nettoyées===== |
+ | ====Création des fichiers | ||
+ | * [[https:// | ||
- | Ou un téléphone | + | 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 | ||
+ | |||
+ | ==== 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===== | =====Construction de mon propre capteur===== | ||
====Application Android==== | ====Application Android==== | ||
- | Création | + | Pour Roulez Bourrez: création |
====Capture de datas pour l' | ====Capture de datas pour l' | ||
- | Des testeurs cobayes seront chargés de picoler et capturer leur marche ! | + | 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 }} | {{tag> ia keras python realisations_logicielles }} |
activity_recognition_from_accelerometer_data_set.1602593715.txt.gz · Dernière modification : 2020/10/13 12:55 de serge