TensorFlow Lite für ARM-Boards erstellen

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

TensorFlow Lite unterstützt zwei Build-Systeme und unterstützte Funktionen von jedem Build-System sind nicht identisch. Überprüfen Sie die folgende Tabelle, um ein geeignetes Build-System auszuwählen.

Feature Bazel CMake
Vordefinierte Werkzeugketten armhf, aarch64 armel, armhf, aarch64
Benutzerdefinierte Toolchains schwieriger zu bedienen Einfach zu verwenden
TF-Operationen auswählen unterstützt nicht unterstützt
GPU-Delegierter 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 Bazel-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, verwenden Sie besser CMake für die Cross-Kompilierung. Es gibt ein separates Kreuz Kompilation TensorFlow Lite mit CMake Seite zur Verfügung.

Cross-Compilation für ARM mit Bazel

Wenn Sie ein Bazel-Projekt haben oder TF-Operationen verwenden möchten, verwenden Sie besser das Bazel-Build-System. Hier finden Sie die integrierten verwenden ARM GCC 8.3 Werkzeugketten mit Bazel eine ARM32 / 64 gemeinsam genutzte Bibliothek zu bauen.

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

Die folgenden Anweisungen sind auf Ubuntu 16.04.3 64-Bit - PC (AMD64) und TensorFlow Entwick Docker Bild getestet devel: tensorflow / tensorflow .

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

Schritt 1. Installieren Sie Bazel

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

Schritt 2. TensorFlow-Repository klonen

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

Schritt 3. ARM-Binärdatei erstellen

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

: Sie können eine gemeinsam genutzte Bibliothek in finden bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so .

Prüfen TensorFlow Lite - C - API - Seite für das Detail.

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

: Sie können eine gemeinsam genutzte Bibliothek in finden bazel-bin/tensorflow/lite/libtensorflowlite.so .

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

Usw

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

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