TensorFlow Lite für ARM-Boards erstellen

Auf dieser Seite wird beschrieben, wie die TensorFlow Lite-Bibliotheken für ARM-basierte Computer erstellt werden.

TensorFlow Lite unterstützt zwei Build-Systeme. Die unterstützten Features der einzelnen Build-Systeme sind nicht identisch. Wählen Sie anhand der folgenden Tabelle ein geeignetes Build-System aus.

Funktion Bazel CMake
Vordefinierte Toolchains armhf, aarch64 armel, armhf, aarch64
Benutzerdefinierte Toolchains schwieriger zu verwenden einfach zu verwenden
TF-Vorgänge auswählen unterstützt Nicht unterstützt [not_supported]
GPU-Delegierung nur für Android verfügbar jede Plattform, die OpenCL unterstützt
XNNPack unterstützt unterstützt
Python-Rad unterstützt unterstützt
C API unterstützt unterstützt
C++ API unterstützt für Bali-Projekte unterstützt für CMake-Projekte

Kreuzkompilierung für ARM mit CMake

Wenn Sie ein CMake-Projekt haben oder eine benutzerdefinierte Toolchain verwenden möchten, ist CMake besser für die Kreuzkompilierung geeignet. Hierfür steht eine separate Seite zur Crosskompilierung von TensorFlow Lite mit CMake zur Verfügung.

Kreuzkompilierung für ARM mit Looker

Wenn Sie ein Qwiklabs-Projekt haben oder TF-Ops verwenden möchten, sollten Sie das Build-System von Bali besser verwenden. Sie verwenden die integrierten ARM GCC 8.3-Toolchains mit Bazel, um eine gemeinsam genutzte Bibliothek ARM32/64 zu erstellen.

Zielarchitektur Bazel-Konfiguration Kompatible Geräte
armhf (ARM32) --config=elinux_armhf RPI3, RPI4 mit 32-Bit-Raspberry Pi OS
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 mit Ubuntu 64-Bit

Die folgende Anleitung wurde auf dem 64-Bit-PC Ubuntu 16.04.3 (AMD64) und dem TensorFlow-Devel-Docker-Image tensorflow/tensorflow:devel getestet.

Führen Sie die folgenden Schritte aus, um TensorFlow Lite mit Qwiklabs übergreifend zu kompilieren:

Schritt 1. Outline installieren

Bali ist das primäre Build-System für TensorFlow. Installieren Sie die neueste Version des Bazel-Build-Systems.

Schritt 2: TensorFlow-Repository klonen

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

Schritt 3. ARM-Binärprogramm erstellen

C-Bibliothek
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

Eine gemeinsam genutzte Bibliothek finden Sie hier: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Weitere Informationen finden Sie auf der Seite TensorFlow Lite C API.

C++-Bibliothek
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

Eine gemeinsam genutzte Bibliothek finden Sie hier: bazel-bin/tensorflow/lite/libtensorflowlite.so.

Derzeit gibt es keine einfache Möglichkeit, alle erforderlichen Header-Dateien zu extrahieren. Daher müssen Sie alle Header-Dateien in tensorflow/lite/ aus dem TensorFlow-Repository einschließen. Außerdem benötigen Sie Headerdateien von FlatBuffers und Abseil.

usw.

Sie können auch andere Qwiklabs-Ziele mit der Toolchain erstellen. Hier sind einige nützliche Ziele.

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image