Please or S’enregistrer to create posts and topics.

IA embarquées sur des microcontroleurs - TinyML

Objectif :

Utiliser des modèles d'intelligence artificielle sur des microcontroleurs ayant une faible puissance de calcul pour analyser des données capteurs par exemple. Domaine dit TinyML

Edge Impulse Brings TinyML to Millions of Arduino Developers

Contexte, exemples : (cas de la classification uniquement)

- Classification de différents cas d'utilisation : identification d'un véhicule roulant sur différents revêtements à partir de relevés d'accélérations par exemple (classification en fonction du revêtement)

- Détection de défaillance : sur un système industriel, détecter à partir de signaux accélération, température,... un cas d'utilisation inhabituel. Si une défaillance est répétitive, on peut la classifier pour arriver à la détecter (extensible à plusieurs défaillances).

On notera que les modèles, une fois déployés sur un microcontroleur, ont une faible consommation d'énergie contrairement à la plupart des algorithmes d'IA.

Stratégie :

1) Phase d'apprentissage : Des données sont collectées et communiquées à un algorithme d'IA (kNN par exemple) pour entrainement / test (procédure classique en machine learning). Cette phase d'apprentissage est réalisée sur une machine disposant d'une puissance de calcul conséquente (dans le Cloud dans le cas de Edge Impulse présenté ci-dessous).

2) Implémentation dans un microcontrôleur : Le modèle d'IA obtenu peut être compilé puis implémenté dans le code d'un microcontrôleur (via IDE Arduino par exemple).

3) Phase de prédiction : Le microcontrôleur  effectue des acquisitions capteur qu'il segmente suivant un intervalle temporel prédéfini. Il renvoie alors une probabilité d'appartenance à chaque classe identifiée précédemment, et peut également prédire l'appartenance à une classe non identifiée (détection de défaut).

Outil proposé : Edge Impulse - https://docs.edgeimpulse.com/docs/tutorials/end-to-end-tutorials

Logo

Il existe différents outils permettant de faire du TinyML, mais j'ai testé Edge Impulse que je trouve particulièrement facile à mettre en oeuvre. La plateforme est gratuite avec des limites d'utilisation et la contrainte de rendre les modèles publiques. Plusieurs tutoriels sont disponibles au lien ci-dessus. On retiendra entre autres :

- Classification de mouvements à partir d'un smartphone - très facile à mettre en oeuvre :

https://docs.edgeimpulse.com/docs/edge-ai-hardware/using-your-mobile-phone

- Détection de différents modes de fonctionnement et de défaillance - applications industrielles clairement identifiables : https://youtu.be/uvDYGtAXIgY?feature=shared

- Travail sur image : détection d'objets ou classification : https://docs.edgeimpulse.com/docs/tutorials/end-to-end-tutorials

Remarque : L'acquisition des datasets est particulièrement facile sous Edge Impulse grâce à l'interfaçage de nombreux devices (cartes de développement, smartphones) directement avec la plateforme.

Remarque 2 : Le déploiement du modèle d'IA vers un smartphone est extrêmement simple et permet de tester rapidement des modifications du modèle.