Zbuduj TensorFlow Lite dla płyt ARM

Ta strona opisuje, jak zbudować biblioteki TensorFlow Lite dla komputerów opartych na architekturze ARM.

TensorFlow Lite obsługuje dwa systemy kompilacji, a obsługiwane funkcje z każdego systemu kompilacji nie są identyczne. Sprawdź poniższą tabelę, aby wybrać odpowiedni system kompilacji.

Funkcja Bazel CMake
Predefiniowane łańcuchy narzędzi armhf, arch64 armel, armhf, aarch64
Niestandardowe łańcuchy narzędzi trudniejsze w użyciu łatwy w użyciu
Wybierz operacje TF utrzymany niewspierany
Delegat GPU dostępne tylko dla Androida dowolna platforma obsługująca OpenCL
XNNPack utrzymany utrzymany
Koło Pythona utrzymany utrzymany
C API utrzymany utrzymany
C++ API wspierane przy projektach Bazel wspierane przy projektach CMake

Krzyżowa kompilacja dla ARM z CMake

Jeśli masz projekt CMake lub chcesz użyć niestandardowego zestawu narzędzi, lepiej użyj CMake do kompilacji krzyżowej. W tym celu dostępna jest oddzielna kompilacja Cross TensorFlow Lite ze stroną CMake .

Kompilacja krzyżowa dla ARM z Bazel

Jeśli masz projekt Bazel lub jeśli chcesz używać TF ops, lepiej użyj systemu kompilacji Bazel. Użyjesz zintegrowanych łańcuchów narzędzi ARM GCC 8.3 z Bazel, aby zbudować współdzieloną bibliotekę ARM32/64.

Architektura docelowa Konfiguracja Bazela Zgodne urządzenia
ramię (ARM32) --config=elinux_armhf RPI3, RPI4 z 32-bitowym systemem operacyjnym Raspberry Pi
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 z 64-bitowym Ubuntu

Poniższe instrukcje zostały przetestowane na 64-bitowym komputerze z systemem Ubuntu 16.04.3 (AMD64) i obrazie dockera TensorFlow devel tensorflow/tensorflow:devel .

Aby skompilować krzyżowo TensorFlow Lite z Bazel, wykonaj następujące czynności:

Krok 1. Zainstaluj Bazel

Bazel to podstawowy system kompilacji dla TensorFlow. Zainstaluj najnowszą wersję systemu kompilacji Bazel .

Krok 2. Sklonuj repozytorium TensorFlow

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

Krok 3. Zbuduj plik binarny ARM

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

Bibliotekę współdzieloną można znaleźć w: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so .

Szczegóły znajdziesz na stronie TensorFlow Lite C API .

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

Bibliotekę współdzieloną można znaleźć w: bazel-bin/tensorflow/lite/libtensorflowlite.so .

Obecnie nie ma prostego sposobu na wyodrębnienie wszystkich potrzebnych plików nagłówkowych, więc musisz uwzględnić wszystkie pliki nagłówkowe w tensorflow/lite/ z repozytorium TensorFlow. Dodatkowo będziesz potrzebować plików nagłówkowych z FlatBuffers i Abseil.

Itp

Możesz także budować inne cele Bazel za pomocą toolchaina. Oto kilka przydatnych celów.

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