Les novices et les experts en apprentissage automatique ont de nombreuses raisons d'aimer l'écosystème STM32

L'apprentissage automatique, en particulier TinyML, a le potentiel de révolutionner la manière dont les systèmes embarqués sont conçus et construits. Traditionnellement, ces systèmes ont des algorithmes procéduraux basés sur l'expérience des développeurs avec le système. L'apprentissage automatique offre une approche différente dans laquelle les algorithmes du système sont basés sur des observations et des données réelles. Si les données dans l'environnement évoluent, le modèle d'apprentissage automatique peut rapidement réapprendre à partir de ces données. Une solution codée à la main nécessiterait une réécriture.

Cet article de blog explore les plateformes et les outils d'apprentissage automatique pour les systèmes embarqués pris en charge dans la gamme de microcontrôleurs STM32 de STMicroelectronics.

Prise en charge de l'apprentissage automatique dans la gamme de microcontrôleurs STM32

L'apprentissage automatique peut être un outil puissant pour les développeurs de systèmes embarqués. Cependant, les développeurs pensent souvent que les algorithmes d'apprentissage automatique nécessitent trop de puissance de traitement ou qu'ils sont si volumineux qu'ils ne tiendront pas dans un microcontrôleur typique. En réalité, le microcontrôleur choisi dépendra davantage de ce que vous essayez de faire avec l'apprentissage automatique que de la manière dont un microcontrôleur spécifique le prend en charge.

Par exemple, la Figure 1 montre une gamme de microcontrôleurs STM32 prenant en charge l'apprentissage automatique. Ces composants s'étendent du STM32F0, qui fonctionne à 48 mégahertz (MHz) et possède au maximum 256 kilo-octets (Ko) de mémoire Flash et 32 Ko de mémoire RAM, au STM32F7, qui fonctionne à 216 MHz et possède au maximum 2 méga-octets (Mo) de mémoire Flash et 512 Ko de mémoire RAM.

Figure 1 : Les microcontrôleurs STM32 prennent en charge l'apprentissage automatique grâce aux outils de développement STM32Cube.AI et NanoEdge. (Source de l'image : STMicroelectronics)

Comme vous pouvez le constater, bon nombre de microcontrôleurs peuvent prendre en charge l'apprentissage automatique. Le véritable problème est que les plateformes d'apprentissage automatique doivent réussir à prendre en charge une grande variété de développeurs. Par exemple, il n'est pas très courant pour les équipes dédiées aux logiciels embarqués de disposer d'un expert en apprentissage automatique. Au contraire, les développeurs de logiciels embarqués sont obligés de se familiariser avec l'apprentissage automatique en dehors de leurs compétences traditionnelles. C'est pourquoi il est nécessaire de disposer d'une plateforme permettant de soutenir les équipes avec et sans experts en apprentissage automatique. Les chaînes d'outils de l'écosystème d'apprentissage automatique STM32 aident à résoudre ce problème.

Aide pour les équipes de systèmes embarqués sans experts en apprentissage automatique

Il est certain que le fait de concevoir et d'entraîner des algorithmes d'apprentissage automatique peut sembler être une tâche ardue. Les développeurs doivent être capables d'acquérir des données, de concevoir un modèle, d'entraîner le modèle, puis de s'assurer que le modèle s'adapte suffisamment bien pour être optimisé et déployé sur un système embarqué.

Traditionnellement, les modèles d'apprentissage automatique sont créés à l'aide de TensorFlow Lite, PyTorch, Matlab ou d'autres outils. Ces outils sont souvent bien en dehors de la zone de confort ou de l'expérience des développeurs de logiciels embarqués. Se mettre à niveau avec ces outils et obtenir des résultats précis prend non seulement du temps, mais est également coûteux.

L'écosystème d'apprentissage automatique STM32 inclut un outil appelé NanoEdge (Figure 2) qui aide les développeurs sans expertise ni expérience en apprentissage automatique à entraîner et à déployer des applications d'apprentissage automatique sur leurs dispositifs.

Par exemple, les développeurs peuvent facilement créer des bibliothèques d'apprentissage automatique pour des applications comme la détection des anomalies, la détection des valeurs aberrantes, la classification et la régression. Ces bibliothèques peuvent ensuite être déployées sur un microcontrôleur STM32.

Figure 2 : NanoEdge peut accompagner les développeurs tout au long du processus de développement de l'apprentissage automatique. (Source de l'image : STMicroelectronics)

Qu'en est-il des équipes de systèmes embarqués avec des experts en apprentissage automatique ?

Lorsqu'une équipe de développement a accès à des experts en apprentissage automatique, elle peut tirer parti d'une bien plus grande variété d'outils pour développer ses modèles d'apprentissage automatique pour un microcontrôleur STM32. Par exemple, lorsqu'une expertise est disponible, l'équipe peut utiliser TensorFlow Lite, PyTorch, Matlab ou un autre outil pour créer le modèle. Le problème qui se pose souvent est que ces outils produisent une bibliothèque non optimisée qui ne fonctionne pas très efficacement sur un microcontrôleur.

Dans la gamme STM32, les développeurs peuvent utiliser le plug-in STM32Cube.AI pour importer des modèles d'apprentissage automatique et les optimiser afin qu'ils fonctionnent efficacement sur les microcontrôleurs STM32. L'outil permet aux développeurs d'exécuter et d'affiner leurs modèles d'apprentissage automatique sur le microcontrôleur cible. Tout d'abord, les développeurs peuvent importer leur modèle dans la chaîne d'outils, comme illustré dans la Figure 3. Ensuite, ils peuvent convertir le modèle, analyser le réseau et le valider. Une fois ce processus effectué, les développeurs peuvent générer du code dans STM32CubeIDE, créant ainsi une structure d'apprentissage automatique autour du modèle pour simplifier le développement du logiciel embarqué.

Figure 3 : Un modèle d'apprentissage automatique de générateur d'ondes sinusoïdales est importé dans STM32CubeIDE.AI. (Source de l'image : Beningo Embedded Group)

Les développeurs de logiciels embarqués doivent fournir les entrées appropriées au modèle d'apprentissage automatique, ainsi que le code pour vérifier le résultat. Des actions peuvent être effectuées sur le résultat, ou bien le résultat peut être manipulé ou utilisé pour calculer une moyenne, selon ce qui est adapté à l'application. La Figure 4 montre la boucle d'application simple pour exécuter et vérifier les résultats du modèle.

Figure 4 : La boucle principale entoure le modèle d'apprentissage automatique. (Source de l'image : Beningo Embedded Group)

Conclusion

L'apprentissage automatique, stimulé par l'effort TinyML, trouve rapidement sa place dans les applications embarquées. Pour réussir, les développeurs doivent s'appuyer sur une plateforme. Tandis que des options de plateforme semblent émerger presque chaque jour, l'écosystème STM32 offre aux développeurs une voie de solution simple et évolutive.

Au sein de l'écosystème, les développeurs ayant de l'expérience en apprentissage automatique peuvent tirer parti de leurs outils traditionnels et utiliser le plug-in STM32CubeIDE.AI pour optimiser et affiner leurs solutions. Pour les équipes sans expertise en apprentissage automatique, NanoEdge peut être utilisé pour simplifier le développement de bibliothèques d'apprentissage automatique et rendre la solution opérationnelle rapidement et à moindre coût.

À propos de l'auteur

Image of Jacob Beningo

Jacob Beningo est un consultant en logiciels embarqués, et il travaille actuellement avec des clients dans plus d'une douzaine de pays pour transformer radicalement leurs activités en améliorant la qualité, les coûts et les délais de commercialisation des produits. Il a publié plus de 200 articles sur les techniques de développement de logiciels embarqués. Jacob Beningo est un conférencier et un formateur technique recherché, et il est titulaire de trois diplômes, dont un master en ingénierie de l'Université du Michigan. N'hésitez pas à le contacter à l'adresse jacob@beningo.com et sur son site Web www.beningo.com, et abonnez-vous à sa newsletter mensuelle Embedded Bytes.

More posts by Jacob Beningo
 TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum