TensorFlow Lite for Microcontrollers est conçu pour exécuter des modèles de machine learning sur des microcontrôleurs et d'autres appareils ne disposant que de quelques kilo-octets de mémoire. L'environnement d'exécution principal occupe 16 Ko sur un processeur ARM Cortex M3 et peut exécuter de nombreux modèles de base. Il ne nécessite la compatibilité avec le système d'exploitation, aucune bibliothèque C ou C++ standard, ni d'allocation de mémoire dynamique.
Pourquoi les microcontrôleurs sont-ils importants ?
Les microcontrôleurs sont généralement de petits appareils informatiques à faible puissance, intégrés dans du matériel nécessitant des calculs de base. En appliquant le machine learning à de minuscules microcontrôleurs, nous pouvons améliorer l'intelligence de milliards d'appareils que nous utilisons au quotidien, y compris les appareils électroménagers et les appareils connectés à l'Internet des objets, sans avoir à recourir à du matériel coûteux ni à des connexions Internet fiables, qui sont souvent soumises à des contraintes de bande passante et de puissance et entraînent une latence élevée. Cela peut également contribuer à protéger la confidentialité, car aucune donnée ne quitte l'appareil. Imaginez des appareils intelligents capables de s'adapter à votre routine quotidienne, des capteurs industriels intelligents qui font la différence entre les problèmes et un fonctionnement normal, ainsi que des jouets magiques qui aident les enfants à apprendre de manière ludique et agréable.
Plates-formes compatibles
TensorFlow Lite for Microcontrollers est écrit en C++ 17 et nécessite une plate-forme 32 bits. Il a été testé de manière approfondie avec de nombreux processeurs basés sur l'architecture Arm Cortex-M Series et a été porté sur d'autres architectures, y compris ESP32. Le framework est disponible sous la forme d'une bibliothèque Arduino. Il peut également générer des projets pour des environnements de développement tels que Mbed. Il est Open Source et peut être inclus dans n'importe quel projet C++ 17.
Les cartes de développement suivantes sont compatibles:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Kit de découverte STM32F746
- Badge Adafruit Edge
- Kit Adafruit TensorFlow Lite for Microcontrollers
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio Terminal: ATSAMD51
- Carte de développement Himax WE-I Plus EVB Endpoint AI
- Plate-forme de développement de logiciels Synopsys DesignWare ARC EM
- Sony Spresense
Explorer les exemples
Chaque exemple d'application se trouve sur GitHub et comporte un fichier README.md
qui explique comment le déployer sur les plates-formes compatibles. Certains exemples incluent également des tutoriels de bout en bout utilisant une plate-forme spécifique, comme indiqué ci-dessous:
- Hello World : présente les principes de base de l'utilisation de TensorFlow Lite for Microcontrollers
- Micro : capture du contenu audio à l'aide d'un micro pour détecter les mots "oui" et "non"
- Détection de personnes : capture des données de caméra avec un capteur d'image pour détecter la présence ou l'absence d'une personne
Workflow
Les étapes suivantes sont nécessaires pour déployer et exécuter un modèle TensorFlow sur un microcontrôleur:
- Entraîner un modèle :
- Générez un petit modèle TensorFlow adapté à votre appareil cible et contenant des opérations compatibles.
- Convertissez un modèle en modèle TensorFlow Lite à l'aide du convertisseur TensorFlow Lite.
- Convertissez en un tableau d'octets C à l'aide d'outils standards pour le stocker dans une mémoire de programme en lecture seule sur l'appareil.
- Exécutez une inférence sur l'appareil à l'aide de la bibliothèque C++ et traitez les résultats.
Limites
TensorFlow Lite for Microcontrollers est conçu pour répondre aux contraintes spécifiques du développement de microcontrôleurs. Si vous travaillez sur des appareils plus puissants (par exemple, un appareil Linux intégré tel que Raspberry Pi), le framework TensorFlow Lite standard peut être plus facile à intégrer.
Les limites suivantes doivent être prises en compte:
- Compatibilité avec un sous-ensemble limité d'opérations TensorFlow
- Compatibilité avec un nombre limité d'appareils
- API C++ de bas niveau nécessitant une gestion manuelle de la mémoire
- L'entraînement sur l'appareil n'est pas disponible
Étapes suivantes
- Faites vos premiers pas avec les microcontrôleurs pour tester l'exemple d'application et apprendre à utiliser l'API.
- Découvrez la bibliothèque C++ pour savoir comment l'utiliser dans votre propre projet.
- Créez et convertissez des modèles pour en savoir plus sur l'entraînement et la conversion de modèles à déployer sur des microcontrôleurs.