Système Embarqué de Prédiction Météorologique Utilisant un Réseau de Neurones Convolutif

Le deep learning a révolutionné de nombreux domaines, de la vision par ordinateur à la reconnaissance vocale. Son intégration dans les systèmes embarqués ouvre de nouvelles perspectives, notamment pour l’analyse de séquences temporelles. Dans cet article, nous explorerons l’utilisation des réseaux de neurones convolutifs (CNN) pour l’analyse de données temporelles dans des environnements embarqués. Nous aborderons les différents types de réseaux neuronaux adaptés à l'étude des séries temporelles et présenterons un projet concret illustrant cette approche : un système de prédiction météorologique

Bertrand Selva

11/29/20245 min read

Deep Learning et Analyse de Séquences Temporelles

L’analyse de séquences temporelles consiste à traiter des données organisées dans le temps, comme les séries chronologiques de signaux issus d'un capteur ou des données audio. Plusieurs architectures de réseaux de neurones sont adaptées à ce type de données : les réseaux récurrents (RNN), conçus pour traiter des séquences en maintenant une mémoire interne des états précédents. Ils sont efficaces pour capturer les dépendances temporelles, mais peuvent souffrir de problèmes de gradient lors de l’entraînement sur de longues séquences ; les LSTM (Long Short-Term Memory) Ces variantes des RNN introduisent des mécanismes de porte pour mieux gérer les dépendances à long terme et atténuer les problèmes de gradient. Ils sont largement utilisés dans des tâches comme la traduction automatique ou la reconnaissance vocale.

Mais ces réseaux neuronaux sont peu ou pas utilisés pour les systèmes embarqués car ils sont trop lourds et pas directement compatibles avec la déclinaison pour l'embarqué de la bibliothèque tensorflow. Ce qui fonctionne bien pour ce type de problème, ce sont les CNN.

Les Réseaux de Neurones Convolutifs (CNN)

Les CNN sont une classe de réseaux de neurones profonds principalement utilisés pour l’analyse d’images. Leur architecture est composée de couches convolutives qui appliquent des filtres pour détecter des motifs locaux.

Pourquoi les CNN sont-ils efficaces pour l’analyse d’images ?

Les CNN exploitent la localité spatiale des images en déplaçant des filtres (ou noyaux de convolution, un « masque » souvent de taille 3x3 ou 5x5 pixels avec un motif particulier) sur l’image. À chaque position, un produit terme à terme est calculé entre le masque et la portion correspondante de l’image, permettant de détecter des caractéristiques telles que les contours, les formes ou les textures.

Par exemple un masque 3x3 composé d'une ligne verticale sera un motif qui générera une valeur résultat sensible à la présence de ligne verticale dans l’image. Vous avez une illustration de l'extraction des valeurs avec un CNN pour différents motifs sur la figure ci-dessous.

Les CNN 1D pour l'analyse des séquences temporelles

Ce qui intéressant c'est que que cette capacité à détecter des motifs est également applicable aux spectrogrammes (pour l'AED ou le KWS par exemple) ou aux séries de données temporelles (on utilise alors des CNN 1D avec des noyaux de convolution "ligne") ce qui ouvre le champ d'utilisation à d'autres applications que l'étude des images.
Ensuite il y a souvent un réseau de neurones denses "classique" qui récupère les valeurs extraites par la ou les couches de CNN et qui complète le modèle jusqu'à l'extraction de la valeur ou des valeurs prédites par le modèle.

Déploiement dans un système embarqué et optimisation

TensorFlow Lite Micro est une librairie optimisée pour les microcontrôleurs, supportant principalement les architectures CNN. Cela facilite le déploiement de modèles de deep learning sur des dispositifs à ressources limitées.
Implémenter un modèle pour analyser des séquences temporelles sur des systèmes embarqués peut être complexe en raison des contraintes de calcul et de mémoire : il faut faire un modèle léger. Il est crucial d’optimiser les modèles, souvent en utilisant des techniques de quantification (transformé les float en int codé sur 16 bits, sur 8 bits, etc) ou de pruning pour adapter les réseaux aux capacités des microcontrôleurs. C'est souvent une étape difficile et il faut itérer pour obtenir un résultat satisfaisant...

Composants du Dispositif

Le système est équipé d’un microcontrôleur ESP32, de capteurs BME280 pour mesurer la température, la pression atmosphérique et l’humidité, ainsi que d’une horloge temps réel DS3231 pour suivre la date et l’heure. L’affichage des données est assuré par un écran I2C de 4 lignes et 20 caractères, tandis que le stockage des informations se fait via une carte SD. La connectivité est gérée par une LED RGB et l'écran LCD, permettant une interaction visuelle et une communication efficace des données recueillies. La LED clignote en rouge si une gelée est prédite...

Fonctionnement

Le dispositif réalise des mesures environnementales toutes les dix minutes, assurant une acquisition continue et régulière des données. Ces informations sont affichées en temps réel sur l’écran LCD et enregistrées sur une carte SD pour une analyse ultérieure. Un réseau de neurones impliquant des couches convolutives 1D (CNN1D) et des couches denses est utilisé pour prédire la température sur un horizon de deux heures, en se basant sur les données collectées sur une période de quatre heures avec une période d'acquisition de 10 min : on fait donc rentrer dans le réseau neuronal "un tableau" de 24 lignes contenant les paramètres suivant : la température, le taux d'humidité, la température de rosée, la date et l'heure. Vous trouverez des détails sur mon portfolio : https://selvasystems.net/deep-learning. Ci-dessous sont visible le modèle implémenté dans l'ESP32, on voit un bel accord sur l'horizon temporel.

L’entraînement du modèle a été réalisé en Python avec TensorFlow sur un PC, en utilisant de grandes quantités de données historiques (sur la commune la plus proche de mon domicile pour laquelle les données étaient disponibles gratuitement) pour permettre au CNN1D de détecter des motifs dans les séries temporelles. Une fois entraîné, le modèle est optimisé 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. Cette optimisation garantit que le modèle allégé conserve une précision acceptable tout en étant capable de fonctionner efficacement sur l’ESP32, qui dispose de ressources limitées en RAM et en mémoire FLASH. Une fois le modèle prêt il est implémenter sur le microcontrôleur avec l'extension en C de la librairie tensorflow pour les microcontrôleurs : tensorflow lite micro.

Conclusion sur ce projet

Le projet illustre l’intégration réussie des capteurs environnementaux, d'un réseau de neurones convolutifs pour la prédiction, et de la gestion multitâche dans un système embarqué aux ressources limitées. Il ouvre des perspectives prometteuses pour de nombreuses applications industrielles, agricoles et énergétiques, démontrant le potentiel des CNN pour l’analyse de séquences temporelles sur des dispositifs à ressources limitées (par exemple en lançant une action avant la gelée, pour chauffer, vidanger un réservoir, etc) dans une démarche d'"edge computing" : la prise de décision est faite localement sans nécessité de connexion à un réseau centralisé.