TensorFlow Lite for Microcontrollers

TensorFlow Lite for Microcontrollers est un port expérimental de TensorFlow Lite 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.

Aucune compatibilité avec le système d'exploitation n'est nécessaire. Il ne nécessite, en outre, aucune bibliothèque C ou C++ standard, ni d'allocation de mémoire dynamique. Le composant d'exécution principal tient sur 16 Ko sur un processeur Arm Cortex M3. Il occupe au total 22 Ko de mémoire avec suffisamment d'opérateurs pour exécuter un modèle de détection de mot clé pour la reconnaissance vocale.

Il existe des exemples d'applications illustrant l'utilisation de microcontrôleurs pour des tâches telles que la détection de mots d'activation, la classification des gestes à partir des données de l'accéléromètre et la classification d'images à l'aide des données de la caméra.

Premiers pas

Pour essayer les exemples d'applications et apprendre à utiliser l'API, consultez la page Premiers pas avec les microcontrôleurs.

Plates-formes compatibles

TensorFlow Lite for Microcontrollers est écrit en langage C++ 11 et nécessite une plate-forme 32 bits. Cette solution a été testée de manière approfondie avec de nombreux processeurs basés sur l'architecture Arm Cortex-M Series et a été portée sur d'autres architectures, dont 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. Ce framework Open Source peut, en outre, être inclus dans n'importe quel projet C++ 11.

Des exemples d'applications sont disponibles pour les cartes de développement suivantes :

Pour en savoir plus sur les bibliothèques et les exemples, consultez la page Premiers pas avec les microcontrôleurs.

Pourquoi les microcontrôleurs sont-ils importants ?

Les microcontrôleurs sont généralement de petits appareils informatiques à faible puissance. Ils sont souvent intégrés dans du matériel qui nécessite des calculs de base, comme les appareils électroménagers et les appareils IoT. Des milliards de microcontrôleurs sont fabriqués chaque année.

Les microcontrôleurs sont souvent optimisés pour offrir une faible consommation d'énergie et une petite taille, au détriment de la puissance de traitement, de la mémoire et de l'espace de stockage. Certains d'entre eux disposent de fonctionnalités conçues pour optimiser les performances des tâches de machine learning.

En exécutant l'inférence de machine learning sur des microcontrôleurs, les développeurs peuvent intégrer l'IA dans un large éventail de périphériques, sans être tributaires de la connectivité réseau, laquelle est souvent soumise à des contraintes de bande passante et de puissance, et entraîne une latence élevée. L'exécution d'une inférence sur l'appareil peut également contribuer à protéger la vie privée, dans la mesure où toutes les données restent sur l'appareil.

Workflow de développement

Pour déployer un modèle TensorFlow sur un microcontrôleur, vous devez procéder comme suit :

  1. Créer ou obtenir un modèle TensorFlow

    Le modèle doit être suffisamment petit pour tenir sur votre appareil cible après conversion. De plus, il ne peut utiliser que des opérations compatibles. Si vous souhaitez utiliser d'autres opérations, vous pouvez fournir vos propres implémentations.

  2. Convertir le modèle en FlatBuffer TensorFlow Lite

    Vous allez convertir votre modèle au format TensorFlow Lite standard à l'aide du convertisseur TensorFlow Lite. Vous pouvez générer un modèle quantifié, plus petit et plus efficace à exécuter.

  3. Convertir le FlatBuffer en tableau d'octets C

    Les modèles sont stockés dans une mémoire de programme en lecture seule et sont fournis sous la forme d'un fichier C simple. Vous pouvez utiliser des outils standards pour convertir le FlatBuffer en tableau C.

  4. Intégrer la bibliothèque C++ TensorFlow Lite for Microcontrollers

    Écrivez le code de votre microcontrôleur pour collecter des données, exécuter une inférence à l'aide de la bibliothèque C++ et exploiter les résultats.

  5. Déployer le programme sur votre appareil

    Créez et déployez le programme sur votre appareil.

Limites

TensorFlow Lite for Microcontrollers est conçu pour répondre aux contraintes spécifiques du développement de microcontrôleurs. Si vous utilisez des appareils plus puissants (un appareil Linux intégré tel que le Raspberry Pi, par exemple), le framework TensorFlow Lite standard peut s'avérer plus facile à intégrer.

Vous devez tenir compte des limites suivantes :

  • 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 n'est pas accepté

Étapes suivantes

Pour essayer les exemples d'applications et apprendre à utiliser l'API, consultez la page Premiers pas avec les microcontrôleurs.