Zbuduj TensorFlow Lite dla płyt ARM

Na tej stronie opisano sposób tworzenia bibliotek 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, aarch64 armel, armhf, aarch64
Niestandardowe łańcuchy narzędzi trudniejszy w użyciu łatwy w użyciu
Wybierz operacje TF utrzymany Nieobsługiwany
Delegat GPU dostępne tylko na Androida dowolna platforma obsługująca OpenCL
XNNPakiet utrzymany utrzymany
Koło Pythona utrzymany utrzymany
Interfejs API języka C utrzymany utrzymany
C++ API obsługiwane dla projektów Bazel obsługiwane dla projektów CMake

Kompilacja krzyżowa dla ARM z CMake

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

Kompilacja krzyżowa dla ARM z Bazel

Jeśli masz projekt Bazel lub chcesz korzystać z operacji TF, lepiej użyj systemu kompilacji Bazel. Użyjesz zintegrowanych łańcuchów narzędzi ARM GCC 8.3 z Bazel do zbudowania biblioteki współdzielonej ARM32/64.

Architektura docelowa Konfiguracja Bazela Zgodne urządzenia
armhf (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 obrazem platformy dokowanej TensorFlow devel tensorflow/tensorflow:devel .

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

Krok 1. Zainstaluj Bazela

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

Możesz znaleźć współdzieloną bibliotekę w: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so .

Sprawdź stronę interfejsu API TensorFlow Lite C , aby uzyskać szczegółowe informacje.

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

Możesz znaleźć współdzieloną bibliotekę w: bazel-bin/tensorflow/lite/libtensorflowlite.so .

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

Itp

Możesz także zbudować inne cele Bazel za pomocą zestawu narzędzi. Oto kilka przydatnych celów.

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