本页介绍了如何为基于 ARM 的计算机构建 TensorFlow Lite 库。
TensorFlow Lite 支持两种构建系统,并且每个构建系统支持的功能不尽相同。请查看下表以选择合适的构建系统。
特征 | Bazel | CMake |
---|---|---|
预定义工具链 | armhf、aarch64 | armel、armhf、aarch64 |
自定义工具链 | 较难使用 | 易于使用 |
选择 TF 操作 | 支持 | 不支持 |
GPU 代理 | 仅适用于 Android 设备 | 任何支持 OpenCL 的平台 |
XNNPack | 支持 | 支持 |
Python 轮盘 | 支持 | 支持 |
C API | 支持 | 支持 |
C++ API | 支持 Bazel 项目 | CMake 项目支持 |
使用 CMake 对 ARM 进行交叉编译
如果您有 CMake 项目,或者想要使用自定义工具链,则最好使用 CMake 进行交叉编译。您可以通过单独的使用 CMake 交叉编译 TensorFlow Lite 页面执行此操作。
使用 Bazel 对 ARM 进行交叉编译
如果您有 Bazel 项目或想要使用 TF 操作,最好使用 Bazel 构建系统。您将使用集成的 ARM GCC 8.3 工具链与 Bazel 来构建 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 上进行了测试。
如需将 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