ARM ボード用の TensorFlow Lite をビルドする

このページでは、ARM ベースのコンピュータ用の TensorFlow Lite ライブラリをビルドする方法について説明します。

TensorFlow Lite は 2 つのビルドシステムをサポートしていますが、各ビルドシステムでサポートされている機能は同じではありません。次の表を確認して、適切なビルドシステムを選択してください。

特徴 Bazel CMake
事前定義されたツールチェーン armhf、aarch64 armel、armhf、aarch64
カスタム ツールチェーン 使いづらい 使いやすい
TF オペレーションを選択 をサポート not supported(対象外)
GPU デリゲート Android でのみ利用可能 すべてのプラットフォームが
XNNPack をサポート をサポート
Python のホイール をサポート をサポート
C API をサポート 対応
C++ API Bazel プロジェクトでサポートされる CMake プロジェクトでサポートされる

CMake を使用した ARM 用のクロスコンパイル

CMake プロジェクトがある場合や、カスタム ツールチェーンを使用する場合は、クロスコンパイルに CMake を使用することをおすすめします。これについては、CMake によるクロス コンパイル TensorFlow Lite のページが別途用意されています。

Bazel を使用した ARM のクロスコンパイル

Bazel プロジェクトがある場合や、TF オペレーションを使用する場合は、Bazel ビルドシステムの使用をおすすめします。Bazel と統合された ARM GCC 8.3 ツールチェーンを使用して、ARM32/64 共有ライブラリをビルドします。

目標とするアーキテクチャ Bazel の構成 対応デバイス
armhf(ARM32) --config=elinux_armhf 32 ビット Raspberry Pi OS 搭載の RPI3、RPI4
AArch64(ARM64) --config=elinux_aarch64 Coral、Ubuntu 64 ビットの RPI4

以下の手順は、Ubuntu 16.04.3 64 ビット PC(AMD64)と TensorFlow 開発 Docker イメージ tensorflow/tensorflow:devel でテストされています。

TensorFlow Lite を Bazel とクロスコンパイルする手順は次のとおりです。

ステップ 1: Bazel をインストールする

Bazel は TensorFlow の主要なビルドシステムです。最新バージョンの Bazel ビルドシステムをインストールします。

ステップ 2. TensorFlow リポジトリのクローンを作成する

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

ステップ 3: ARM バイナリをビルドする

C ライブラリ
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

共有ライブラリは bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so にあります。

詳細については、TensorFlow Lite C API のページをご覧ください。

C++ ライブラリ
bazel build --config=elinux_aarch64 -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