為 ARM 開發板建構 TensorFlow Lite

本頁面說明如何為 ARM 架構電腦建構 TensorFlow Lite 程式庫。

TensorFlow Lite 支援兩種建構系統,且各個建構系統支援的功能並不完全相同。請查看下表以選擇合適的建構系統。

功能 Bazel CMake
預先定義的工具鏈 armhf、aarch64 armel、armhf、aarch64
自訂工具鏈 較難使用 易於使用
選取 TF 運算元 支援 不支援
GPU 委派 僅適用於 Android 任何支援 OpenCL 的平台
XNNPack 支援 支援
Python Wheel 支援 支援
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 RPI3、RPI4 (搭載 32 位元 Raspberry Pi OS)
AArch64 (ARM64) --config=elinux_aarch64 Coral、RPI4 (搭載 Ubuntu 64 位元)

下列操作說明已在 Ubuntu 16.04.3 64 位元 PC (AMD64) 和 TensorFlow devel Docker 映像檔 tensorflow/tensorflow:devel 上測試過。

若要使用 Bazel 跨編譯 TensorFlow Lite,請按照下列步驟操作

步驟 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