Die Bibliothek LiteRT for Microcontrollers C++ ist Teil der TensorFlow-Repository Sie ist so konzipiert, dass sie lesbar, leicht zu ändern, gut getestet, und kompatibel mit der LiteRT-Version.
Im folgenden Dokument werden die grundlegende Struktur der C++-Bibliothek finden Sie Informationen zum Erstellen eines eigenen Projekts.
Dateistruktur
Die
micro
Stammverzeichnis hat eine relativ einfache Struktur. Da sie sich jedoch
im umfangreichen TensorFlow-Repository
haben wir Skripts erstellt und
vorab generierte Projektdateien, die die relevanten Quelldateien isoliert bereitstellen.
in verschiedenen eingebetteten Entwicklungsumgebungen.
Schlüsseldateien
Die wichtigsten Dateien für die Verwendung von LiteRT für Mikrocontroller Interpreter befinden sich im Stammverzeichnis des Projekts, begleitet von 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
gibt Debug-Informationen aus.micro_interpreter.h
enthält Code zum Verarbeiten und Ausführen von Modellen.
Unter Erste Schritte mit Mikrocontrollern finden Sie Schritt-für-Schritt-Anleitung für die typische Verwendung.
Das Build-System bietet plattformspezifische Implementierungen
-Dateien. Sie befinden sich in einem Verzeichnis mit dem Plattformnamen, z. B.
cortex-m
Es gibt noch weitere Verzeichnisse, z. B.:
kernel
, Sie enthält Vorgangsimplementierungen und den zugehörigen Code.tools
, der Build-Tools und deren Ausgabe enthält.examples
, mit Beispielcode.
Neues Projekt starten
Wir empfehlen, das Beispiel Hello World als Vorlage für neue Projekte zu verwenden. Ich können Sie eine Version für die Plattform Ihrer Wahl erhalten. Folgen Sie dazu der in diesem Abschnitt.
Arduino-Bibliothek verwenden
Wenn Sie Arduino verwenden, ist das Beispiel Hello World im
Arduino_TensorFlowLite
Arduino-Bibliothek, die Sie manuell im
Arduino-IDE und in Arduino Create.
Nachdem die Bibliothek hinzugefügt wurde, rufen Sie File -> Examples
auf. Es sollte eine
Beispiel unten in der Liste mit dem Namen TensorFlowLite:hello_world
. Auswählen
und klicken Sie auf hello_world
, um das Beispiel zu laden. Sie können dann eine Kopie des
und es als Grundlage für Ihr eigenes Projekt verwenden.
Projekte für andere Plattformen erstellen
Mit LiteRT für Mikrocontroller können eigenständige Projekte generiert werden
die alle erforderlichen Quelldateien enthalten. Dazu wird ein Makefile
verwendet. Der aktuelle
unterstützte Umgebungen sind Keil, Make und Mbed.
Klonen Sie zum Generieren dieser Projekte mit Make den TensorFlow/tflite-micro-Repository und führen Sie den folgenden Befehl aus:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Dieser Vorgang dauert einige Minuten, da einige große Toolchains für
die Abhängigkeiten. Anschließend sollten Sie sehen, dass einige Ordner erstellt wurden.
innerhalb eines Pfades wie gen/linux_x86_64/prj/
(die
Der genaue Pfad hängt vom Betriebssystem Ihres Hosts ab. Diese Ordner enthalten die
erstellte Projekt- und Quelldateien.
Nachdem Sie den Befehl ausgeführt haben, finden Sie die Hello World-Projekte in
gen/linux_x86_64/prj/hello_world
Für
Beispiel: hello_world/keil
enthält das Keil-Projekt.
Tests ausführen
Verwenden Sie den folgenden Befehl, um die Bibliothek zu erstellen und alle Einheitentests auszuführen:
make -f tensorflow/lite/micro/tools/make/Makefile test
Verwenden Sie den folgenden Befehl, um einen einzelnen Test auszuführen. Ersetzen Sie dabei <test_name>
durch den Namen des Tests:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
Sie finden die Testnamen in den Makefiles des Projekts. Beispiel:
examples/hello_world/Makefile.inc
gibt die Testnamen für die Hello
World-Beispiel.
Binärdateien erstellen
So erstellen Sie eine ausführbare Binärdatei für ein bestimmtes Projekt (z. B. eine Beispielanwendung):
Verwenden Sie den folgenden Befehl und ersetzen Sie dabei <project_name>
durch das gewünschte Projekt.
zu erstellen:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Mit dem folgenden Befehl wird beispielsweise eine Binärdatei für die Datei Hello World erstellt. Anwendung:
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
Standardmäßig wird das Projekt für das Hostbetriebssystem kompiliert. Bis
eine andere Zielarchitektur angeben möchten, verwenden Sie TARGET=
und TARGET_ARCH=
. Die
das folgende Beispiel zeigt, wie das Hello World-Beispiel für eine allgemeine
Cortex-m0:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Wenn ein Ziel angegeben ist, werden alle verfügbaren zielspezifischen Quelldateien
anstelle des ursprünglichen Codes verwendet wird. Beispielsweise das Unterverzeichnis
examples/hello_world/cortex_m_generic
enthält SparkFun Edge-Implementierungen
der Dateien constants.cc
und output_handler.cc
, die verwendet werden, wenn der
Ziel cortex_m_generic
ist angegeben.
Die Projektnamen finden Sie in den Makefiles des Projekts. Beispiel:
examples/hello_world/Makefile.inc
gibt die binären Namen für die Hello
World-Beispiel.
Optimierte Kernel
Die Referenz-Kernel im Stammverzeichnis von tensorflow/lite/micro/kernels
sind
die in reinem C/C++ implementiert sind und keine plattformspezifische Hardware enthalten.
Optimierungen vor.
Optimierte Kernel-Versionen werden in Unterverzeichnissen bereitgestellt. Beispiel:
kernels/cmsis-nn
enthält mehrere optimierte Kernel, die die Arm-Kernels verwenden.
CMSIS-NN-Bibliothek.
Verwenden Sie den folgenden Befehl, um Projekte mit optimierten Kerneln zu generieren:
Ersetzen Sie <subdirectory_name>
durch den Namen des Unterverzeichnisses, das die Datei
Optimierungen:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Sie können Ihre eigenen Optimierungen hinzufügen, indem Sie einen neuen Unterordner für sie erstellen. Mi. Pull-Anfragen für neue optimierte Implementierungen zu fördern.
Arduino-Bibliothek generieren
Wenn Sie einen neuen Build der Bibliothek generieren müssen, können Sie folgenden Befehl ausführen: aus dem TensorFlow-Repository:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
Die resultierende Bibliothek finden Sie hier:
gen/arduino_x86_64/prj/tensorflow_lite.zip
Auf neue Geräte mitnehmen
Portierung von LiteRT für Mikrocontroller auf neue Plattformen und
Geräte finden Sie in
micro/docs/new_platform_support.md