Exécution d'un code d'apprentissage automatique dans un nœud IoT embarqué pour identifier facilement les objets
Avec la contribution de Rédacteurs nord-américains de DigiKey
2020-10-08
Les réseaux Internet des objets (IoT) fonctionnant en environnements dynamiques sont étendus au-delà de la détection d'objets pour inclure l'identification visuelle d'objets dans des applications telles que la sécurité, la surveillance environnementale, la protection et l'IoT industriel (IIoT). Comme l'identification des objets est adaptative et implique l'utilisation de modèles d'apprentissage automatique (Machine Learning, ML), il s'agit d'un domaine complexe qui peut être difficile à apprendre de zéro et à mettre en œuvre efficacement.
La difficulté réside dans le fait que la qualité d'un modèle ML dépend de son ensemble de données, et qu'une fois que les données correctes sont acquises, le système doit être correctement entraîné pour fonctionner en pratique.
Cet article montre aux développeurs comment implémenter le modèle ML « TensorFlow Lite for Microcontrollers » de Google dans un microcontrôleur de Microchip Technology. Il explique ensuite comment utiliser les ensembles de données d'apprentissage pour la classification d'images et la détection d'objets avec TensorFlow Lite pour identifier facilement les objets avec un minimum de codage personnalisé.
Enfin il présente un kit de démarrage ML TensorFlow Lite d'Adafruit Industries permettant aux développeurs de se familiariser avec les bases de l'apprentissage automatique.
ML pour les systèmes de vision embarqués
Au sens large, le ML donne à un ordinateur ou à un système embarqué des capacités de reconnaissance des formes similaires à celles d'un être humain. D'un point de vue sensoriel humain, cela signifie utiliser des capteurs tels que des microphones et des caméras pour imiter les perceptions sensorielles humaines de l'audition et de la vue. Si les capteurs sont faciles à utiliser pour capturer des données audio et visuelles, une fois les données numérisées et stockées, elles doivent être traitées afin de pouvoir être comparées aux modèles stockés en mémoire représentant des sons ou des objets connus. Le défi est que les données d'image capturées par une caméra pour un objet visuel, par exemple, ne correspondent pas exactement aux données stockées en mémoire pour un objet. Une application ML devant identifier visuellement l'objet doit traiter les données de manière à pouvoir faire correspondre avec précision et efficacité le modèle capturé par la caméra à un modèle stocké en mémoire.
Il existe différents moteurs ou bibliothèques utilisés pour faire correspondre les données capturées par les capteurs. TensorFlow est une bibliothèque de code open-source utilisée pour la comparaison de modèles. La bibliothèque de code TensorFlow Lite for Microcontrollers est spécifiquement conçue pour être exécutée sur un microcontrôleur, et par conséquent, elle a réduit les besoins en mémoire et en processeur pour le fonctionnement sur un matériel plus limité. Plus précisément, elle requiert un microcontrôleur 32 bits et utilise moins de 25 kilo-octets (Ko) de mémoire Flash.
Cependant, même si TensorFlow Lite for Microcontrollers constitue le moteur ML, le système a encore besoin d'un ensemble de données d'apprentissage des modèles qu'il doit identifier. Quelle que soit la qualité du moteur ML, la qualité du système dépend de son ensemble de données d'apprentissage. Pour les objets visuels, certains ensembles de données d'apprentissage de nombreux grands modèles peuvent nécessiter plusieurs giga-octets de données. Un plus grand volume de données implique des performances de processeur plus élevées pour trouver rapidement une correspondance précise. C'est pourquoi ce type d'applications fonctionne normalement sur de puissants ordinateurs ou des ordinateurs portables haut de gamme.
Pour une application de systèmes embarqués, il ne devrait être nécessaire de stocker dans un ensemble de données d'apprentissage que les modèles spécifiques requis pour l'application. Si un système est supposé reconnaître des outils et du matériel, alors les modèles représentant des fruits et des jouets peuvent être retirés. Cela permet de réduire la taille de l'ensemble de données d'apprentissage, ce qui réduit les besoins en mémoire du système embarqué, améliorant ainsi les performances tout en réduisant les coûts.
Un microcontrôleur ML
Pour exécuter TensorFlow Lite for Microcontrollers, Microchip Technology cible l'apprentissage automatique dans les microcontrôleurs avec le microcontrôleur ATSAMD51J19A-AFT basé sur Arm® Cortex®-M4F (Figure 1). Il est doté de 512 Ko de mémoire Flash et de 192 Ko de mémoire SRAM, et fonctionne à 120 mégahertz (MHz). L'ATSAMD51J19A-AFT fait partie de la gamme de microcontrôleurs ML ATSAMD51 de Microchip Technology. Il est conforme aux normes de qualité automobiles AEC-Q100 Grade 1 et fonctionne de -40°C à +125°C, ce qui le rend applicable aux environnements IoT et IIoT les plus difficiles. Il s'agit d'un microcontrôleur basse tension qui fonctionne de 1,71 volts (V) à 3,63 V à 120 MHz.
Figure 1 : L'ATSAMD51J19A est basé sur un cœur Arm Cortex-M4F s'exécutant à 120 MHz. C'est un microcontrôleur aux fonctionnalités complètes doté de 512 Ko de Flash et de 192 Ko de SRAM. (Source de l'image : Microchip Technology)
Les options de mise en réseau de l'ATSAMD51J19A incluent CAN 2.0B pour les réseaux industriels et 10/100 Ethernet pour la plupart des réseaux câblés. Cela permet au microcontrôleur de fonctionner sur une variété de réseaux IoT. Une interface USB 2.0 prend en charge les modes de fonctionnement hôte et périphérique et peut être utilisée pour le débogage du dispositif ou la mise en réseau du système.
Un cache d'instructions et de données combiné de 4 Ko améliore les performances lors du traitement du code ML. Une unité en virgule flottante (FPU) est également utile pour améliorer les performances du code ML et pour traiter les données brutes des capteurs.
Stockage des ensembles de données d'apprentissage
L'ATSAMD51J19A est également doté d'une interface QSPI pour le stockage externe de programmes ou de données. Cela est utile pour le stockage de données supplémentaires d'ensembles de données d'apprentissage qui dépassent la capacité de mémoire Flash intégrée. L'interface QSPI prend également en charge la capacité XiP (eXecute in Place) pour l'extension de la mémoire programme haute vitesse externe.
L'ATSAMD51J19A intègre également un contrôleur hôte de carte mémoire SD/MMC (SDHC), très utile pour les applications ML car il permet l'échange facile en mémoire de code ML et d'ensembles de données d'apprentissage. Tandis que le moteur TensorFlow Lite for Microcontrollers peut fonctionner dans les 512 Ko de Flash sur l'ATSAMD51J19A, les ensembles de données d'apprentissage peuvent être mis à jour et améliorés régulièrement. L'ensemble de données d'apprentissage peut être stocké dans une Flash QSPI ou une EEPROM QSPI externe et, selon la configuration réseau, peut être mis à jour à distance via le réseau. Cependant, pour certains systèmes, il peut être plus pratique de remplacer physiquement une carte mémoire par une autre qui possède un ensemble de données d'apprentissage amélioré. Dans cette configuration, le développeur doit décider si le système doit être conçu pour le remplacement à chaud de la carte mémoire ou si le nœud IoT doit être désactivé.
Si le nœud IoT est extrêmement limité en espace, il peut être plus efficace de placer la plus grande partie possible de l'application dans la mémoire du microcontrôleur que d'utiliser une mémoire externe. L'ATSAMD51J20A-AFT de Microchip Technology est similaire à l'ATSAMD51J19A et présente un brochage compatible, mais il est doté de 1 Mo de Flash et de 256 Ko de SRAM, ce qui permet un stockage sur puce plus important pour les ensembles de données d'apprentissage.
Développer avec TensorFlow Lite for Microcontrollers
Adafruit Industries prend en charge le développement sur l'ATSAMD51J19A avec le kit de développement TensorFlow Lite for Microcontrollers 4317 (Figure 2). La carte dispose de 2 Mo de Flash QSPI qui peuvent être utilisés pour stocker des ensembles de données d'apprentissage. Le kit est fourni avec un jack microphone pour la reconnaissance audio ML. Son écran couleur LCD TFT 160 x 128 de 1,8 pouce peut être utilisé pour le développement et le débogage. L'écran peut également être utilisé pour des démonstrations de reconnaissance vocale lorsque TensorFlow Lite for Microcontrollers est utilisé avec un ensemble de données d'apprentissage de reconnaissance vocale. À mesure que l'application reconnaît différents mots, ceux-ci peuvent être affichés à l'écran.
Le kit d'Adafruit Industries inclut également huit boutons-poussoirs, un accéléromètre à trois axes, un capteur de lumière, un mini-haut-parleur et une batterie lithium-polymère. Le port USB 2.0 de l'ATSAMD51J19A est relié à un connecteur pour la charge batterie, le débogage et la programmation.
Figure 2 : Le kit de développement TensorFlow Lite for Microcontrollers 4317 d'Adafruit Industries est équipé d'un écran couleur LCD TFT pour le développement et peut afficher les résultats des opérations ML. (Source de l'image : Adafruit Industries)
Le kit Adafruit est fourni avec la dernière version de TensorFlow Lite for Microcontrollers. Les ensembles de données d'apprentissage peuvent être chargés via le port USB dans la mémoire Flash de 512 Ko du microcontrôleur ATSAMD51J19A ou dans la mémoire QSPI externe de 2 Mo.
Pour l'évaluation de la reconnaissance d'images, l'ensemble d'apprentissage de détection d'objets TensorFlow peut être chargé sur la carte de développement. La carte de développement possède des ports pour la connexion aux ports parallèles et série du microcontrôleur, dont beaucoup peuvent être utilisés pour se connecter à une caméra externe. Avec l'ensemble d'apprentissage de détection d'objets chargé sur le microcontrôleur, l'écran LCD peut être utilisé pour afficher la sortie des résultats du traitement ML de détection d'objets. Ainsi, s'il reconnaît une banane, l'écran TFT peut afficher les objets reconnus, avec un pourcentage de confiance. Un exemple d'affichage des résultats peut ressembler au suivant :
Banane : 95 %
Clé : 12 %
Lunettes : 8 %
Peigne : 2 %
Pour le développement d'applications de détection d'objets IoT, cela peut accélérer le développement et aider à diagnostiquer tout résultat de détection incorrect.
Conclusion
L'apprentissage automatique est un domaine en pleine expansion qui exige des compétences spécialisées pour développer des modèles et des moteurs de microcontrôleurs à partir de zéro et les mettre en œuvre efficacement en périphérie. Toutefois, l'utilisation d'une bibliothèque de code existante telle que TensorFlow Lite for Microcontrollers sur des microcontrôleurs ou des cartes de développement à faible coût et à haut rendement permet d'économiser du temps et de l'argent, résultant en un système ML hautes performances qui peut être utilisé pour détecter des objets dans un nœud IoT de manière rapide, fiable et efficace.
Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.


