Ta strona opisuje, jak zbudować statyczne i współdzielone biblioteki TensorFlow Lite dla Raspberry Pi. Jeśli chcesz po prostu zacząć używać TensorFlow Lite do wykonywania modeli, najszybszą opcją jest zainstalowanie pakietu wykonawczego TensorFlow Lite, jak pokazano w przewodniku Szybki start dla języka Python .
Kompilacja krzyżowa dla Raspberry Pi z Make
Poniższe instrukcje zostały przetestowane na 64-bitowym komputerze PC z systemem Ubuntu 16.04.3 (AMD64) i TensorFlow devel docker image tensorflow / tensorflow: devel .
Aby skompilować krzyżowo TensorFlow Lite, wykonaj następujące kroki:
Krok 1. Sklonuj oficjalny łańcuch narzędzi kompilacji Raspberry Pi
git clone https://github.com/raspberrypi/tools.git rpi_tools
Krok 2. Sklonuj repozytorium TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
Krok 3. Uruchom następujący skrypt w katalogu głównym repozytorium TensorFlow, aby pobrać
wszystkie zależności kompilacji:
cd tensorflow_src && ./tensorflow/lite/tools/make/download_dependencies.sh
Krok 4a. Aby zbudować plik binarny ARMv7 dla Raspberry Pi 2, 3 i 4
PATH=../rpi_tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin:$PATH \
./tensorflow/lite/tools/make/build_rpi_lib.sh
Możesz dodać dodatkowe opcje Make lub nazwy docelowe do skryptu build_rpi_lib.sh
ponieważ jest to opakowanie Make with TFLite Makefile . Oto kilka możliwych opcji:
./tensorflow/lite/tools/make/build_rpi_lib.sh clean # clean object files
./tensorflow/lite/tools/make/build_rpi_lib.sh -j 16 # run with 16 jobs to leverage more CPU cores
./tensorflow/lite/tools/make/build_rpi_lib.sh label_image # # build label_image binary
Krok 4b. Aby zbudować plik binarny ARMv6 dla Raspberry Pi Zero
PATH=../rpi_tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin:$PATH \
./tensorflow/lite/tools/make/build_rpi_lib.sh TARGET_ARCH=armv6
Kompiluj natywnie na Raspberry Pi
Poniższe instrukcje zostały przetestowane na Raspberry Pi Zero, Raspberry Pi OS GNU / Linux 10 (Buster), gcc w wersji 8.3.0 (Raspbian 8.3.0-6 + rpi1):
Aby natywnie skompilować TensorFlow Lite, wykonaj następujące kroki:
Krok 1. Zaloguj się do swojego Raspberry Pi i zainstaluj toolchain
sudo apt-get install build-essential
Krok 2. Sklonuj repozytorium TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
Krok 3. Uruchom następujący skrypt w katalogu głównym repozytorium TensorFlow, aby pobrać wszystkie zależności kompilacji
cd tensorflow_src && ./tensorflow/lite/tools/make/download_dependencies.sh
Krok 4. Następnie powinieneś być w stanie skompilować TensorFlow Lite z:
./tensorflow/lite/tools/make/build_rpi_lib.sh
Kompilacja krzyżowa dla armhf z Bazel
Możesz użyć łańcuchów narzędzi ARM GCC z Bazel, aby zbudować współdzieloną bibliotekę armhf, która jest kompatybilna z Raspberry Pi 2, 3 i 4.
Poniższe instrukcje zostały przetestowane na 64-bitowym komputerze z systemem Ubuntu 16.04.3 (AMD64) i TensorFlow devel docker image 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 ARMv7 dla Raspberry Pi 2, 3 i 4
Biblioteka C.
bazel build --config=elinux_armhf -c opt //tensorflow/lite/c:libtensorflowlite_c.so
Szczegółowe informacje można znaleźć na stronie TensorFlow Lite C API .
Biblioteka C ++
bazel build --config=elinux_armhf -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, dlatego należy 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ą łańcucha narzędzi. Oto kilka przydatnych celów.
- // tensorflow / lite / tools / benchmark: benchmark_model
- // tensorflow / lite / examples / label_image: label_image