Wearable Computing - Reconnaissance d'Activités Humaines par Machine Learning
Introduction
Comment votre smartphone sait-il que vous marchez, courez ou êtes assis ? C'est la question au cœur de mon projet de recherche Wearable Computing, réalisé lors de mon stage à IIT (Illinois Institute of Technology) en 2016.
L'Objectif
Développer un système capable de reconnaître automatiquement les activités humaines (marche, course, position assise, montée d'escaliers...) à partir des données brutes des capteurs de smartphones.
Architecture du Projet
Le projet se compose de trois modules interconnectés :
1. Application Android de Collecte
Une app Android 6.0 qui collecte en temps réel les données de :
- Accéléromètre : Mesure l'accélération sur 3 axes
- Gyroscope : Détecte les rotations
- Magnétomètre : Orientation par rapport au champ magnétique
- GPS : Position géographique
2. Plateforme Big Data (Spark + Cassandra)
Pour gérer les volumes massifs de données collectées :
- Apache Spark : Traitement distribué en Scala
- Apache Cassandra : Stockage NoSQL scalable
- Interface web pour le monitoring
3. Algorithmes de Labellisation
Le cœur intelligent du système :
- Extraction de features (moyenne, écart-type, FFT...)
- Algorithmes de classification (Random Forest, SVM, KNN...)
- Validation et évaluation des modèles
Comment ça marche ?
Étape 1 : Collecte
Le smartphone enregistre les données des capteurs à haute fréquence (50-100 Hz) pendant que l'utilisateur effectue différentes activités.
Étape 2 : Segmentation
Les données sont découpées en fenêtres temporelles (2-5 secondes) pour l'analyse.
Étape 3 : Feature Engineering
Pour chaque fenêtre, on calcule des caractéristiques statistiques :
- Moyenne, médiane, écart-type
- Min, max, amplitude
- Transformée de Fourier (fréquences dominantes)
- Corrélation entre axes
Étape 4 : Classification
Un modèle de Machine Learning prédit l'activité basée sur ces features. Les algorithmes testés :
- Decision Trees : Simples et interprétables
- Random Forest : Ensemble de trees pour plus de robustesse
- SVM : Support Vector Machines pour la séparation des classes
- KNN : Classification par voisinage
Résultats
Les modèles atteignent une précision de 85-95% selon les activités. La marche et la course sont facilement distinguables, tandis que "debout" vs "assis" est plus challenging.
Applications
- Santé : Suivi d'activité physique
- Sport : Analyse de performance
- Médical : Détection de chutes chez les personnes âgées
- Recherche : Études comportementales
Technologies Utilisées
- Android SDK (Java)
- Apache Spark (Scala)
- Apache Cassandra
- Algorithmes ML (Java, Python)
Projet de recherche réalisé à IIT.edu (Illinois Institute of Technology) en collaboration avec l'ESIGELEC - Été 2016