La bibliothèque C++ LiteRT 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 la version LiteRT standard.
Le document suivant décrit 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
micro
répertoire racine a une structure relativement simple. Cependant, puisqu'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
au sein de divers environnements de développement intégrés.
Fichiers de clé
Les fichiers les plus importants pour l'utilisation de LiteRT for Microcontrollers interpréteur se trouvent à la racine du projet et sont 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 pour gérer et exécuter les modèles.
Consultez l'article Premiers pas avec les microcontrôleurs pour découvrir pour en savoir plus sur l'utilisation type.
Le système de compilation permet des implémentations spécifiques à la plate-forme de certaines
. 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:
kernel
qui contient les implémentations d'opérations et le code associé.tools
qui contient les outils de compilation et leurs résultats.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. Toi pouvez en obtenir une version adaptée à 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 le
la bibliothèque Arduino_TensorFlowLite
Arduino, que vous pouvez installer manuellement dans le
dans l'IDE Arduino et dans Arduino Create.
Une fois la bibliothèque ajoutée, accédez à File -> Examples
. Vous devriez voir
vers le bas de la liste nommée TensorFlowLite:hello_world
. Sélectionner
puis cliquez sur hello_world
pour charger l'exemple. Vous pouvez ensuite enregistrer une copie
exemple et l’utiliser comme base
de votre propre projet.
Générer des projets pour d'autres plates-formes
LiteRT for Microcontrollers peut générer des projets autonomes
contenant tous les fichiers sources nécessaires, à l'aide d'un Makefile
. L'actuel
sont Keil, Make et Mbed.
Pour générer ces projets avec Make, clonez 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 elle 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
à l'intérieur d'un chemin d'accès tel que gen/linux_x86_64/prj/
(le
le chemin d'accès exact dépend de votre système d'exploitation hôte). Ces dossiers contiennent
du projet et des fichiers sources générés.
Après avoir exécuté la commande, vous trouverez les projets Hello World dans
gen/linux_x86_64/prj/hello_world
Pour
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 des tests pour la commande Hello
World.
Binaires de compilation
Pour créer un binaire exécutable pour un projet donné (par exemple, un exemple d'application),
Exécutez la commande suivante en remplaçant <project_name>
par le projet de votre choix.
créer:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Par exemple, la commande suivante permet de créer un binaire pour Hello World. application:
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. À
spécifiez une architecture cible différente, utilisez TARGET=
et TARGET_ARCH=
. La
L'exemple suivant montre comment créer l'exemple Hello World pour un objet générique
cortex-m0:
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é à 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és lorsque
cortex_m_generic
cible est spécifiée.
Vous trouverez les noms des projets dans leurs fichiers Makefiles. Par exemple :
examples/hello_world/Makefile.inc
spécifie les noms binaires de la commande Hello
World.
Noyaux optimisés
Les noyaux de référence à la racine de tensorflow/lite/micro/kernels
sont
implémentés en C/C++ pur et n'incluent pas de matériel spécifique à la plate-forme
et des optimisations.
Les versions optimisées des noyaux sont fournies dans des sous-répertoires. Par exemple :
kernels/cmsis-nn
contient plusieurs noyaux optimisés qui utilisent les capacités d'Arm
CMSIS-NN.
Pour générer des projets à l'aide de noyaux optimisés, exécutez la commande suivante :
en remplaçant <subdirectory_name>
par le nom du sous-répertoire contenant le
d'optimisation:
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 pour celles-ci. Mer encourager les demandes d'extraction pour les nouvelles implémentations optimisées.
Générer la bibliothèque Arduino
Si vous devez générer une nouvelle compilation de la bibliothèque, vous pouvez exécuter la commande suivante : 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 vers de nouveaux appareils
Conseils sur le portage de LiteRT pour microcontrôleurs sur de nouvelles plates-formes et
appareils se trouvent dans
micro/docs/new_platform_support.md