La bibliothèque C++ de TensorFlow Lite for Microcontrollers fait partie du dépôt TensorFlow. Il est conçu pour être lisible, facile à modifier, bien testé, facile à intégrer et compatible avec TensorFlow Lite standard.
Le document suivant présente la structure de base de la bibliothèque C++ et fournit des informations sur la création de votre propre projet.
Structure des fichiers
La structure du répertoire racine micro
est relativement simple. Toutefois, comme il se trouve dans le vaste dépôt TensorFlow, nous avons créé des scripts et des fichiers de projet prégénérés qui fournissent les fichiers sources pertinents de manière isolée dans divers environnements de développement intégrés.
Fichiers de clé
Les fichiers les plus importants pour l'utilisation de l'interpréteur TensorFlow Lite for Microcontrollers se trouvent à la racine du projet, accompagnés de tests:
[`micro_mutable_op_resolver.h`](https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/micro_mutable_op_resolver.h)
can be used to provide the operations used by the interpreter to run the
model.
micro_error_reporter.h
génère des informations de débogage.micro_interpreter.h
contient du code permettant de gérer et d'exécuter les modèles.
Pour obtenir un aperçu d'une utilisation standard, consultez la page Premiers pas avec les microcontrôleurs.
Le système de compilation fournit des implémentations spécifiques à la plate-forme de certains fichiers. Ils se trouvent dans un répertoire portant le nom de la plate-forme, par exemple cortex-m
.
Il existe plusieurs autres répertoires, dont les suivants:
kernel
, qui contient les implémentations d'opérations et le code associé.tools
, qui contient les outils de compilation et leur résultat.examples
, qui contient un exemple de code.
Démarrer un nouveau projet
Nous vous recommandons d'utiliser l'exemple Hello World comme modèle pour les nouveaux projets. Vous pouvez en obtenir une version pour la plate-forme de votre choix en suivant les instructions de cette section.
Utiliser la bibliothèque Arduino
Si vous utilisez Arduino, l'exemple Hello World est inclus dans la bibliothèque Arduino Arduino_TensorFlowLite
, que vous pouvez installer manuellement dans l'IDE Arduino et dans Arduino Create.
Une fois la bibliothèque ajoutée, accédez à File -> Examples
. Vous devriez voir un exemple nommé TensorFlowLite:hello_world
en bas de la liste. Sélectionnez-le et cliquez sur hello_world
pour charger l'exemple. Vous pouvez ensuite enregistrer une copie de l'exemple et l'utiliser comme base pour votre propre projet.
Générer des projets pour d'autres plates-formes
TensorFlow Lite for Microcontrollers est capable de générer des projets autonomes contenant tous les fichiers sources nécessaires à l'aide d'un Makefile
. Les environnements actuellement compatibles sont Keil, Make et Mbed.
Pour générer ces projets avec Make, clonez le dépôt TensorFlow/tflite-micro et exécutez la commande suivante:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Cette opération prend quelques minutes, car il doit télécharger des chaînes d'outils volumineuses pour les dépendances. Une fois l'opération terminée, vous devriez voir des dossiers créés dans un chemin tel que gen/linux_x86_64/prj/
(le chemin d'accès exact dépend de votre système d'exploitation hôte). Ces dossiers contiennent les fichiers de projet et les fichiers sources générés.
Après avoir exécuté la commande, vous pourrez trouver les projets Hello World dans gen/linux_x86_64/prj/hello_world
. Par exemple, hello_world/keil
contiendra le projet Keil.
Exécuter les tests
Pour créer la bibliothèque et exécuter tous ses tests unitaires, utilisez la commande suivante:
make -f tensorflow/lite/micro/tools/make/Makefile test
Pour exécuter un test individuel, utilisez la commande suivante, en remplaçant <test_name>
par le nom du test:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
Vous trouverez les noms des tests dans les fichiers Makefiles du projet. Par exemple, examples/hello_world/Makefile.inc
spécifie les noms de test pour l'exemple Hello World.
Binaires de compilation
Pour compiler un binaire exécutable pour un projet donné (tel qu'un exemple d'application), utilisez la commande suivante, en remplaçant <project_name>
par le projet que vous souhaitez compiler:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Par exemple, la commande suivante crée un binaire pour l'application Hello World:
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
Par défaut, le projet est compilé pour le système d'exploitation hôte. Pour spécifier une architecture cible différente, utilisez TARGET=
et TARGET_ARCH=
. L'exemple suivant montre comment compiler l'exemple Hello World pour un cortex-m0 générique:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Lorsqu'une cible est spécifiée, tous les fichiers sources disponibles spécifiques à la cible sont utilisés à la place du code d'origine. Par exemple, le sous-répertoire examples/hello_world/cortex_m_generic
contient les implémentations SparkFun Edge des fichiers constants.cc
et output_handler.cc
, qui seront utilisées lorsque la cible cortex_m_generic
est spécifiée.
Vous trouverez les noms des projets dans leurs fichiers MakeFile. Par exemple, examples/hello_world/Makefile.inc
spécifie les noms binaires de l'exemple Hello World.
Noyaux optimisés
Les noyaux de référence à la racine de tensorflow/lite/micro/kernels
sont mis en œuvre en C/C++ pur et n'incluent pas les optimisations matérielles spécifiques à la plate-forme.
Des versions optimisées des noyaux sont fournies dans des sous-répertoires. Par exemple, kernels/cmsis-nn
contient plusieurs noyaux optimisés qui utilisent la bibliothèque CMSIS-NN d'Arm.
Pour générer des projets à l'aide de noyaux optimisés, utilisez la commande suivante, en remplaçant <subdirectory_name>
par le nom du sous-répertoire contenant les optimisations:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Vous pouvez ajouter vos propres optimisations en créant un sous-dossier dédié. Nous encourageons les requêtes d'extraction pour les nouvelles implémentations optimisées.
Générer la bibliothèque Arduino
Si vous devez générer un nouveau build de la bibliothèque, vous pouvez exécuter le script suivant à partir du dépôt TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
La bibliothèque obtenue se trouve dans gen/arduino_x86_64/prj/tensorflow_lite.zip
.
Transférer la clé vers de nouveaux appareils
Pour obtenir des conseils sur le portage de TensorFlow Lite for Microcontrollers vers de nouvelles plates-formes et de nouveaux appareils, consultez la page micro/docs/new_platform_support.md
.