このページでは、Raspberry Pi 用の TensorFlow Lite 静的ライブラリと共有ライブラリを構築する方法について説明します。モデルを実行するためのみに TensorFlow Lite を使用する場合は、Python クイックスタートに示されているように、最も迅速なオプションとして TensorFlow Lite ランタイムパッケージをインストールします。
注: このページでは、TensorFlow Lite の C ++静的ライブラリと共有ライブラリをコンパイルする方法を示します。次のインストールオプションがあります。Python インタープリタ API のみをインストールする(推論するためのみ)。 pip から TensorFlow パッケージ全体をインストールする。または完全な TensorFlow パッケージを構築する。
注: このページでは、32 ビットのビルドのみを扱います。64 ビットのビルドを探している場合は、ARM64 用のビルドページを確認してください。
Make を使用した Raspberry Pi のクロスコンパイル
次の手順は、Ubuntu 16.04.3 64 ビット PC (AMD64) および TensorFlow devel Docker イメージ tensorflow/tensorflow:devel でテストされています。
TensorFlow Lite をクロスコンパイルするには、次の手順に従います。
ステップ 1. 公式 Raspberry Pi クロスコンパイルツールチェーンをクローンする
git clone https://github.com/raspberrypi/tools.git rpi_tools
ステップ 2. TensorFlow レポジトリをクローンする
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
注: TensorFlow Docker イメージを使用している場合、リポジトリは/tensorflow_src/
ですでに提供されています。
ステップ 3. TensorFlow リポジトリのルートで次のスクリプトを実行してダウンロードする
すべてのビルド依存関係:
cd tensorflow_src && ./tensorflow/lite/tools/make/download_dependencies.sh
注: これは一度だけ実行する必要があります。
ステップ 4a. Raspberry Pi 2、3、4 用の ARMv7 バイナリを構築する
PATH=../rpi_tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin:$PATH \
./tensorflow/lite/tools/make/build_rpi_lib.sh
注: 静的ライブラリが次にコンパイルされます。tensorflow/lite/tools/make/gen/rpi_armv7l/lib/libtensorflow-lite.a
Make の追加オプションまたはターゲット名をbuild_rpi_lib.sh
スクリプトに追加できます。これは、TFLite Makefile がある Make のラッパーであるためです。可能なオプションは次のとおりです。
./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
ステップ 4b. Raspberry Pi Zero 用の ARMv6 バイナリを構築する
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
注: 静的ライブラリが次にコンパイルされます。tensorflow/lite/tools/make/gen/rpi_armv6/lib/libtensorflow-lite.a
Raspberry Pi でネイティブにコンパイルする
以下の手順は、Raspberry Pi Zero、Raspbian GNU/Linux 10 (buster)、gcc バージョン 8.3.0 (Raspbian 8.3.0-6 + rpi1) でテストされています。
TensorFlow Lite をネイティブにコンパイルするには、次の手順に従います。
ステップ 1. Raspberry Pi にログインして、ツールチェーンをインストールする
sudo apt-get install build-essential
ステップ 2. TensorFlow レポジトリをクローンする
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
ステップ 3. TensorFlow リポジトリのルートで次のスクリプトを実行してすべてのビルド依存関係をダウンロードする
cd tensorflow_src && ./tensorflow/lite/tools/make/download_dependencies.sh
注: これは一度だけ実行する必要があります。
ステップ 4. 以下を使用して TensorFlow Lite をコンパイルする
./tensorflow/lite/tools/make/build_rpi_lib.sh
注: 静的ライブラリが次にコンパイルされます。tensorflow/lite/tools/make/gen/lib/rpi_armv6/libtensorflow-lite.a
Bazel を使用した armhf のクロスコンパイル
ARM GCC ツールチェーンを Bazel で使用して、Raspberry Pi 2、3、4 と互換性のある armhf 共有ライブラリを構築できます。
注: 生成された共有ライブラリを実行するには、glibc 2.28 以降が必要です。
次の手順は、Ubuntu 16.04.3 64 ビット PC (AMD64) および TensorFlow devel Docker イメージ tensorflow/tensorflow:devel でテストされています。
TensorFlow Lite を Bazel とクロスコンパイルするには、次の手順に従います。
ステップ 1. Bazel をインストールする
Bazel は TensorFlow の主要なビルドシステムです。Bazel ビルドシステムの最新バージョンをインストールします。
注: TensorFlow Docker イメージを使用している場合、Bazel はすでに利用可能です。
ステップ 2. TensorFlow レポジトリをクローンする
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
注: TensorFlow Docker イメージを使用している場合、リポジトリは/tensorflow_src/
ですでに提供されています。
ステップ 3. Raspberry Pi 2、3、4 用の ARMv7 バイナリを構築する
C ライブラリ
bazel build --config=elinux_armhf -c opt //tensorflow/lite/c:libtensorflowlite_c.so
詳細については TensorFlow Lite C API ページを参照してください。
C++ ライブラリ
bazel build --config=elinux_armhf -c opt //tensorflow/lite:libtensorflowlite.so
共有ライブラリは次からご覧いただけます。bazel-bin/tensorflow/lite/libtensorflowlite.so
現在、必要なすべてのヘッダーファイルを抽出する簡単な方法はないため、TensorFlow リポジトリから tensorflow/lite/ にすべてのヘッダーファイルを含める必要があります。さらに、FlatBuffers および Abseil からのヘッダーファイルが必要になります。
その他
ツールチェーンを使用して他の Bazel ターゲットを構築することもできます。以下は有用なターゲットです。
- //tensorflow/lite/tools/benchmark:benchmark_model
- //tensorflow/lite/examples/label_image:label_image