Logo
CASE STUDY / MARCH 08, 2026 / TINYML / EDGE IMPULSE / EMBEDDED AI / PYTHON / C++

TinyML - EMBEDDED AI

Development of a TinyML model via Edge Impulse for motion classification (horizontal vs vertical) using a smartphone accelerometer.

01 / BRIEF

Solution

Ce projet démontre comment construire un modèle TinyML en utilisant la plateforme Edge Impulse pour le développement de modèles d'apprentissage automatique sur systèmes embarqués. C'est le premier d'une série d'expérimentations sur le TinyML.

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.
AvantagesInconvénients
Faible consommation d'énergieCapacité 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.
02 / CONSTRAINTS

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.
03 / SYSTEM

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.

TinyML - EMBEDDED AI Architecture DiagramArchitecture & Workflow Diagram
01

Data Acquisition

Capturing smartphone IMU accelerometer signals along 3 orthogonal axes (X, Y, Z).

02

Windowing & FFT Extraction

Cutting raw signals with sliding windows and extracting spectral FFT frequency features.

03

Model Training & Quantization

Training a lightweight neural network and converting float weights into 8-bit quantized integers.

04

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.

04 / EVIDENCE

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.
DURATION4 weeks (R&D -> Prototype)
TEAM SIZESolo developer
ROLETinyML & Embedded AI Engineer
TOOLS USEDEdge Impulse · Python · Inertial Measurement Unit (IMU) · C/C++
STACK

Tools used

TinyMLEdge ImpulseEmbedded AIPythonC++
RETROSPECTIVE

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.
NEXT ITERATION

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.
REFERENCES

Links

GitHub RepositoryLINK
Edge Impulse PlatformLINK
IMAGE GALLERY

Visual references

Schéma TinyML
01 / 18|Schéma TinyML
TECHNICAL DOCUMENTATION

Detailed technical documentation

01

Data acquisition with your Smartphone

Completed
Nos smartphones intègrent une centrale à inertie (IMU) regroupant plusieurs capteurs : l'accéléromètre (accélérations linéaires), le gyroscope (vitesse de rotation) et le magnétomètre (champ magnétique). Dans ce projet, le capteur principal est l'accéléromètre, qui mesure l'accélération sur 3 axes (X, Y, Z) en m/s² ou en g.

Puisqu'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.

02

Model selection

Completed
Nous configurons l'entraînement avec 30 époques (le modèle verra l'ensemble des données 30 fois) et un taux d'apprentissage de 0.0005. À chaque cycle, il ajuste ses poids pour minimiser l'erreur de classification.

L'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.

03

Learning phase

Completed
C'est à cette étape qu'Edge Impulse utilise, entre autres, un algorithme de descente de gradient pour ajuster les poids et les biais associés à chaque neurone artificiel.

Le 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é.
04

Model testing

Completed
Nous obtenons un résumé de performance sur le jeu de données de test (données non vues lors de l'apprentissage).

Dans cet exemple, la précision obtenue sur le jeu de test dépasse 97,60%, ce qui est très satisfaisant.

05

Inference/Predictions

Completed
Nous entrons à présent dans la phase d'utilisation (inférence) du modèle d'IA entraîné et testé.

Premiè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é.

06

Future steps

To Do
Déployer mon modèle IA créé sur mon téléphone et l'utiliser comme WebApp pour détecter les mouvements.