TinyML - EMBEDDED AI
Development of a TinyML model via Edge Impulse for motion classification (horizontal vs vertical) using a smartphone accelerometer.
Solution
TinyML désigne l'implémentation de modèles de Machine Learning sur des appareils à très faible consommation d'énergie, permettant d'exécuter des tâches d'IA directement sur des microcontrôleurs.
| Avantages | Inconvénients |
|---|---|
| Faible consommation d'énergie | Capacité limitée : Ressources mémoire et puissance de calcul restreintes. |
| Latence réduite : Calcul local sans dépendance au cloud. | Performances moindres : Nécessité de simplifier les modèles. |
| Portabilité : Intégration dans de petits objets non connectés. | Domaine émergent : Outils moins matures que l'IA traditionnelle. |
Problem
- ♦Precise acquisition of inertial measurement unit (IMU) signals from a smartphone.
- ♦Implementation of the sliding window method to cut continuous signals.
- ♦Optimization of the model size to comply with memory constraints of microcontrollers.
- ♦Clear separation of horizontal and vertical movements in the Feature Explorer.
Architecture & Workflow
End-to-end TinyML pipeline: Continuous IMU acceleration signals are cut into overlapping sliding windows, transformed into spectral frequency features via FFT, and classified by a quantized neural network executing locally on device.
Architecture & Workflow DiagramData Acquisition
Capturing smartphone IMU accelerometer signals along 3 orthogonal axes (X, Y, Z).
Windowing & FFT Extraction
Cutting raw signals with sliding windows and extracting spectral FFT frequency features.
Model Training & Quantization
Training a lightweight neural network and converting float weights into 8-bit quantized integers.
Live Edge Inference
Running predictions locally on device with instant feedback and sub-40ms latency.
1. Sensor Data Acquisition
Sampling 3-axis accelerometer linear acceleration (X, Y, Z) at 62.5 Hz from smartphone IMU sensor.
2. Signal Segmentation (Sliding Window)
Continuous time-series cutting with 2000ms window length and 80ms overlap shift to generate clean training windows.
3. Spectral Processing (FFT)
Fast Fourier Transform spectral analysis extracting dominant frequency peaks, power spectral density, and variance.
4. Quantized Neural Classifier
Compact 2-layer Dense Artificial Neural Network (20 -> 10 neurons) optimized for microcontrollers.
5. Real-Time On-Device Inference
Local evaluation yielding low-latency (< 40ms CPU) binary gesture predictions without cloud dependency.
Results / impact
- ♦100% training accuracy on the training set.
- ♦Over 97% accuracy on the independent test dataset.
- ♦Instant real-time classification performed locally on the smartphone.
- ♦Minimized execution memory to fit embedded architectures.
Tools used
What I learned
- ♦Deep understanding of the TinyML lifecycle: acquisition, spectral processing (FFT), classification.
- ♦Importance of frequency analysis (spectrum) to extract discriminating features.
- ♦Mastery of the Edge Impulse platform to train and deploy embedded models.
What I would improve next
- ♦Deployment of the created AI model as a WebApp to detect motion in real time.
- ♦Power consumption optimization on a physical microcontroller.
Visual references

Detailed technical documentation
Data acquisition with your Smartphone
CompletedPuisqu'il s'agit ici de résoudre un problème de classification associé aux mouvements d'un smartphone, nous créons deux classes distinctes : Secouer verticalement et Secouer horizontalement.
Pour obtenir un modèle performant, l'acquisition d'un volume suffisant de données (le dataset) est essentielle. Nous effectuons 4 acquisitions de 30 secondes pour chaque classe.
L'acquisition des signaux démarre automatiquement sur le smartphone. À la fin, nous obtenons des courbes illustrant l'évolution temporelle des accélérations mesurées selon les trois directions.
Après l'acquisition de toutes les données, nous les répartissons en trois jeux : le Training Set (75%) pour entraîner l'IA, le Validation Set pour ajuster les paramètres, et le Testing Set (25%) pour évaluer les prédictions finales sur des données non vues.
Afin de transformer le signal continu en données exploitables, nous utilisons la méthode de la fenêtre glissante. Ce principe consiste à découper le signal en segments de taille fixe avec chevauchement.
Avant l'entraînement, nous extrayons des caractéristiques spectrales (FFT). L'analyse du spectre permet d'identifier les fréquences dominantes. Par exemple :
- Rotation : Énergie significative entre 2 et 4 Hz.
- Marche : Énergie entre 1 et 2 Hz avec un pic rythmique régulier.
- Chute : Signal à large bande.
- Repos : Énergie quasi nulle.
Ces caractéristiques extraites sont ensuite visualisées sous forme de clusters de différentes couleurs dans le Feature Explorer.
Model selection
CompletedL'architecture du réseau de neurones comprend une couche d'entrée, 2 couches cachées de 20 neurones et 10 neurones respectivement pour extraire des motifs non linéaires, et une couche de sortie pour la classification finale.
Learning phase
CompletedLe modèle affiche ici une précision (accuracy) de 100%. Cela signifie que 100% des échantillons des données d'entraînement ont eu leur classe correctement prédite.
Pour observer en détail, la matrice de confusion montre les classes prédites en colonnes et les classes réelles en lignes.
Le Data Explorer permet d'inspecter les échantillons mal prédits. Ici, aucun échantillon n'a été mal classé.
Model testing
CompletedDans cet exemple, la précision obtenue sur le jeu de test dépasse 97,60%, ce qui est très satisfaisant.
Inference/Predictions
CompletedPremière option avec Edge Impulse : "Live Classification" – idéale pour tester rapidement le modèle. Ici, lors d'un mouvement vertical, le modèle prédit très nettement le mouvement vertical avec une forte probabilité.