Deep Learning pour l'embarqué

Système de Prédiction Météorologique Embarqué utilisant un réseau de neurones

Contexte et Importance

Le projet présente un dispositif de prédiction météorologique intégré basé sur un microcontrôleur ESP32. Ce type de système est crucial pour les applications "edge computing", où l'autonomie et la capacité de prise de décision locale sans dépendance à un réseau centralisé sont essentielles. Un exemple parmi tant d'autres possibles est l'agriculture, où anticiper une gelée peut protéger des cultures sensibles comme les arbres fruitiers en fleuraison, en activant des systèmes de chauffage préventifs (c'est une pratique qui existe). De nombreuses autres applications industrielles et énergétiques peuvent également tirer profit de ce type de dispositif. Cette autonomie vis-à-vis des grands réseaux est un avantage significatif pour des environnements dégradés comme ceux rencontrés pour l'agriculture, les sites industriels, etc.

Le dispositif est basé sur les éléments suivants :
  • Microcontrôleur : ESP32

  • Capteurs : BME280 pour la température, la pression atmosphérique et l'humidité

  • DS3231 pour la date et l'heure

  • Affichage : Écran I2C 4 lignes 20 caractères

  • Stockage : Carte SD

  • Connectivité : LED RGB et écran LCD

Fonctionnalités

Ce système permet de :

Acquisition de Données : Mesure des paramètres environnementaux toutes les 10 minutes.

Stockage et Affichage : Affichage des données en temps réel sur l'écran LCD et enregistrement sur une carte SD.

Prédiction Temporelle : Utilisation d'un réseau de neurones convolutifs 1D (CNN1D) pour prédire la température sur un horizon de 2 heures avec des données acquises toutes les 10 minutes pendant 4 heures.

Multitâche et Gestion Énergétique

Le dispositif utilise FreeRTOS pour gérer le multitâche, permettant des opérations simultanées comme l'acquisition de données, les prédictions, le clignotement des LED et la mise à jour de l'écran. FreeRTOS permet de gérer efficacement les ressources en priorisant les tâches critiques et en mettant en veille les tâches non essentielles, ce qui optimise la consommation d'énergie et prolonge la durée de vie des batteries, un aspect crucial pour les dispositifs fonctionnant en milieu isolé ou à faible connectivité. Cette approche de gestion énergétique par FreeRTOS est particulièrement bénéfique pour les systèmes embarqués, car elle réduit les cycles d'horloge inutiles et permet un fonctionnement prolongé sans intervention humaine fréquente.

Entraînement et Déploiement du Modèle

Entraînement : Réalisé en Python avec TensorFlow sur un PC. Les CNN1D ont été choisis pour leur compatibilité avec TensorFlow Lite, facilitant le déploiement sur l'ESP32. L'entraînement a impliqué l'utilisation de grandes quantités de données historiques pour permettre au modèle de détecter des motifs dans les séries temporelles. Les étapes d'entraînement incluent la préparation des données, la normalisation, et l'ajustement des hyperparamètres pour optimiser les performances du modèle.

Déploiement : Le modèle est optimisé pour le microcontrôleur par des techniques de quantification, réduisant la taille des paramètres et diminuant ainsi la charge de calcul et la consommation de mémoire. Ce processus inclut des étapes de calibration et de validation pour s'assurer que le modèle allégé conserve une précision acceptable tout en étant capable de fonctionner sur des dispositifs à ressources limitées comme l'ESP32. La quantification permet également de réduire l'empreinte mémoire, ce qui est crucial pour les environnements embarqués.

Utilité et Applications

Le projet démontre des compétences en systèmes embarqués et en deep learning appliqué à l'embarqué, un domaine relativement neuf. Il pourrait être particulièrement utile pour :

Agriculture : Prédiction des gelées pour protéger les cultures.

Sites Industriels Extérieurs : Prédiction pour gérer les réservoirs d'eau ou autres infrastructures sensibles au gel ou à des températures extrêmes.

Optimisation Énergétique dans le Bâtiment : Anticiper les besoins en chauffage ou climatisation, affiner encore les techniques d'économie d'énergie.

Conclusion

Ce projet est un exemple riche et diversifié de l'application des systèmes embarqués, combinant capteurs environnementaux, prédiction basée sur des réseaux de neurones et gestion multitâche. Il ouvre des perspectives prometteuses pour diverses applications industrielles, agricoles et énergétiques, illustrant efficacement les possibilités du Deep Learning dans l'embarqué.

Mots clefs

Systèmes embarqués, BME280 sur I2C, Écran LCD sur I2C, ESP32, CNN 1D, CNN, Prédiction, Séquence temporelle, Météo, Agriculture, Site industriel

Améliorations Possibles et Limitations Actuelles

Ressources Limitées : L'ESP32 limite la complexité du modèle prédictif. Un modèle plus complexe nécessiterait un matériel plus puissant.

Données d'Entraînement : L'accès à des données météorologiques plus abondantes et localisées à proximité de mon lieu de résidence pourrait améliorer la précision des prédictions.

Universalisme du Modèle : Le modèle actuel est spécifique à une localisation géographique. Un apprentissage continu ou un modèle adaptable serait nécessaire pour une application universelle, ce qui n'est pas encore possible avec les CNN, nécessitant une nouvelle phase d'entraînement pour chaque adaptation.

Résultats

Key Spotting sur un ESP32

Dans le contexte actuel de l'essor de l'Internet des objets (IoT) et de l'intelligence artificielle embarquée, ce projet vise à développer un système de reconnaissance vocale (Keyword Spotting) embarqué sur une plateforme ESP32. L'objectif est de détecter le mot-clé "LUMIÈRE" pour contrôler une LED RGB intégrée, démontrant ainsi des compétences avancées en systèmes embarqués, en développement logiciel et en optimisation de modèles de machine learning pour des environnements à ressources limitées.

Contrairement aux solutions préexistantes comme Edge Impulse ou les exemples des bibliothèques d'Espressif, le choix a été fait de concevoir et d'implémenter entièrement le système, depuis la définition du réseau de neurones jusqu'à son déploiement optimisé, en passant par une gestion multitâche sophistiquée avec FreeRTOS : c'est un bon exercice et cela permet des optimisations pour le temps de calcul et d'inférence, libérant du temps processeur pour effectuer d'autres tâches.

Le dispositif est basé sur les éléments suivants :
  • ESP32

  • micro MEMS de haute sensibilité 441NMLP

  • LED RGB WS2812B incluse sur l carte du microcontroleur

Description Technique

Le système s'articule autour de trois tâches principales gérées par FreeRTOS, assurant une gestion efficace des ressources et une réactivité optimale.

  • Acquisition Audio : La première tâche utilise un buffer roulant pour capturer en continu des segments audio de 250 ms à une fréquence d'échantillonnage de 16 kHz, grâce au micro MEMS INMP441. Cette méthode garantit une acquisition continue sans perte de données, essentielle pour un traitement en temps réel.

  • Traitement du Signal : La seconde tâche, déclenchée dès qu'un segment audio est disponible, calcule le spectrogramme du segment en utilisant des fonctions DSP optimisées de l'ESP32. Les spectrogrammes sont ensuite stockés pour l'inférence ultérieure. Cette séparation du traitement du signal optimise l'utilisation du processeur et prépare les données sans interrompre l'acquisition audio continue.

  • Inférence du Réseau de Neurones : La troisième tâche s'active lorsque quatre spectrogrammes (représentant une seconde d'audio) sont prêts. Elle normalise les spectrogrammes des quatre derniers segments et exécute l'inférence en utilisant TensorFlow Lite pour microcontrôleurs, tirant parti des accélérations matérielles de l'ESP32. Si le mot-clé "LUMIÈRE" est détecté, elle active ou désactive la LED RGB WS2812B en conséquence. En regroupant plusieurs segments, cette tâche améliore la précision de la détection tout en maintenant une réactivité adéquate.

Des optimisations significatives ont été réalisées pour améliorer les performances. Le temps total pour les inférences est de 70 ms pour les quatre segments, et le calcul des spectrogrammes prend seulement 10 ms par seconde d'audio. Ces résultats sont obtenus grâce à l'utilisation des fonctions DSP de l'ESP32 et à une implémentation personnalisée des extractions de caractéristiques. De plus, la gestion multitâche efficace offerte par FreeRTOS assure une planification précise, évitant les goulots d'étranglement et garantissant un fonctionnement en temps réel.

Le réseau de neurones a été développé sur mesure, adapté aux contraintes de l'ESP32. L'entraînement a été réalisé en tenant compte des limitations en mémoire et en puissance de calcul, puis déployé en utilisant TensorFlow Lite pour microcontrôleurs, avec des optimisations spécifiques pour exploiter pleinement les capacités matérielles de l'ESP32.

Conclusion

Ce projet représente une convergence de compétences en systèmes embarqués, en machine learning et en optimisation logicielle. Grâce à la maîtrise de FreeRTOS pour la gestion multitâche en temps réel et à une intégration harmonieuse entre le matériel et le logiciel, j'ai développé un système efficace et particulièrement réactif pour la reconnaissance vocale embarquée, plus efficace que les solutions génériques proposées par Edge Impulse ou Espressif. L'optimisation des performances, notamment par l'utilisation des fonctions DSP de l'ESP32 et une implémentation personnalisée des extractions de caractéristiques, a permis d'augmenter l'efficacité.

Mots clefs

Systèmes embarqués, ESP32, Deep Learning, Entraînement de modèle, KWS (Keyword Spotting), Micro MEMS INMP441, Commande vocale, Relais électromécanique, LED WS2812B, Domotique intelligente

Optimisations et Performances

Le système a été optimisé pour maximiser les performances :

  • Temps de Traitement : 70 ms pour les inférences et 10 ms pour le calcul des spectrogrammes par seconde d'audio.

  • Utilisation des Fonctions DSP : Implémentation personnalisée des extractions de caractéristiques et utilisation des fonctions DSP de l'ESP32.

  • Gestion Multitâche Efficace : FreeRTOS assure une planification précise des tâches, évitant les goulots d'étranglement et garantissant un fonctionnement en temps réel.

  • Faible Consommation d'Énergie : Optimisation du code et utilisation efficace des ressources matérielles pour une consommation réduite, essentielle pour les dispositifs embarqués.

Vidéo de Démonstration

Pour illustrer pleinement le fonctionnement de ce système, une vidéo de démonstration est incluse ci-dessous. Dans cette vidéo, vous verrez comment la commande vocale "LUMIÈRE" modifie l'état de la LED RGB. Cette démonstration met en avant la précision du système KWS intégré, ainsi que sa réactivité et son efficacité en environnement réel (bruyant, fond musical).

Machine learning : Q-learning pour LoRa

Le dispositif est basé sur les éléments suivants :
  • PI PICO

  • modem LoRa E22 400 T

  • lecteur de carte SD

Contexte et Objectif du Projet

Dans le contexte actuel de l'Internet des Objets (IoT), les technologies de communication sans fil à faible consommation énergétique, comme le LoRa (Long Range), sont devenues essentielles pour la transmission efficace de données sur de longues distances. Ce projet s’inscrit dans cette tendance en exploitant des techniques avancées de machine learning pour optimiser les performances des systèmes embarqués.

Mots clefs

Systèmes embarqués, PI Pico, Machine Learning, Q-Learning, LoRa, Ebyte E22 400T, Efficacité énergétique, Rapport signal sur bruit (SNR), Communication sans fil, IoT (Internet des Objets)

L'objectif principal du projet est d'intégrer le Q-learning, une méthode de machine learning, dans un système de communication LoRa pour régler dynamiquement la puissance et le débit de transmission en fonction du rapport signal sur bruit (SNR). La base matérielle se compose d'un microcontrôleur PI Pico, d'un modem LoRa Ebyte E22 400T, et d'une carte SD pour le stockage des données. Le système est conçu pour transmettre régulièrement des mesures de température, tout en ajustant les paramètres de puissance et de débit pour maintenir un SNR optimal et minimiser la consommation d'énergie, laquelle est proportionnelle à la puissance d'émission et inversement proportionnelle au débit de transmission.

Optimisation par Q-Learning

Le Q-learning, un algorithme d'apprentissage par renforcement, est central dans ce projet pour optimiser les décisions concernant les paramètres de transmission. Cet algorithme apprend en continu des interactions avec l'environnement, en ajustant la puissance d'émission et le débit afin de minimiser la consommation énergétique tout en maintenant un SNR satisfaisant. L'optimisation de ces paramètres est cruciale car la consommation d'énergie est directement liée à la puissance d'émission et au temps d'émission, ce dernier étant inversement proportionnel au débit. Ainsi, le système vise à maximiser le débit pour réduire le temps d'émission tout en garantissant un SNR adéquat pour une communication fiable.

Architecture et Fonctionnement du Système

Le système se compose de deux modules de communication interconnectés, chacun ayant un rôle bien défini :

  • Transmetteur 1 (Base) : Stationnaire, ce module reçoit les données de température envoyées par le Transmetteur 2. Une fois les données reçues, il ajuste les paramètres de transmission à pleine puissance et au débit minimal, et renvoie le rapport signal sur bruit (SNR) au Transmetteur 2.

  • Transmetteur 2 (Mobile) : Mobile, ce module collecte les données de température à l’aide du microcontrôleur PI Pico et les transmet au Transmetteur 1 toutes les secondes. Le Q-learning est utilisé pour ajuster dynamiquement les paramètres de puissance d’émission et de débit en fonction des conditions de communication. L’ajustement du débit est basé sur les retours SNR reçus lors du cycle de communication précédent.

Valeur Ajoutée et Applications

Ce projet représente une application innovante des technologies embarquées, combinées à des algorithmes de machine learning, pour répondre aux défis de l'efficacité énergétique dans les systèmes de communication sans fil. En optimisant dynamiquement les paramètres de transmission, ce système se présente comme une solution idéale pour les dispositifs IoT où l'économie d'énergie est essentielle, tels que les capteurs environnementaux ou les dispositifs de surveillance à distance alimentés par batterie.