本页面介绍如何为基于 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