C++-Bibliothek

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.

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