TensorFlow Lite 教程:如何启动和运行
作者:社区 / 开发者
2023 年 8 月 23 日
导航至
TensorFlow 框架由 Google 开发,是创建深度神经网络研究和训练机器学习算法的最重要平台之一。通常,它在服务器端使用强大的 GPU 运行,消耗电力和大量内存。
然而,随着边缘设备、智能手机和微控制器的使用持续增加,它们也已成为重要的机器学习平台。显然,仅使用 TensorFlow 难以在嵌入式设备上实现或部署高性能的深度学习模型。例如,如何在计算能力受限的设备上执行计算密集型流程而不会使其崩溃?外围设备资源的缺乏促使 TensorFlow Lite 的创建,以便发现解决这些问题的新方案。
在本教程中,我们将讨论如何在您的设备上启动和运行 TensorFlow Lite。
TensorFlow Lite 用于什么?
根据 TensorFlow Lite 的官方文档,它是一个“工具集,通过帮助开发者在移动设备、嵌入式设备和边缘设备上运行他们的模型,从而实现设备上的机器学习。”
TensorFlow Lite 是一种机器学习框架,被认为是 TensorFlow 的轻量级版本。相应地,它在处理能力最小的设备上运行。它在智能手机(Android 和 iOS)、微控制器和物联网设备以及计算机 (Linux) 上运行训练好的机器学习模型,这些是 TensorFlow 存在局限性的领域。
如何在您的设备上启动和运行 TensorFlow
安装
在您的设备上使用 TensorFlow Lite 的第一步是安装它。TensorFlow Lite 可以安装在各种平台上,包括 Android、iOS 和 Linux。
Android
在安装 TensorFlow Lite 之前,请确保您已安装 Android Studio 4.2 或更高版本以及 Android SDK 版本 21 或更高版本。
要在 Android 上安装 TensorFlow Lite,请使用以下步骤
- 将以下依赖项添加到您的应用程序的 gradle 文件中
implementation 'org.tensorflow:tensorflow-lite:2.8.0'
- 同步 gradle 文件以更新您的项目。
查看 Android 快速入门 文档以获取更多详细信息。
iOS
TensorFlow Lite 可以添加到 Swift 或 Objective-C 项目中。因此,对于 Bazel 开发者,在 BUILD 文件中,将 TensorFlow Lite 依赖项添加到您的 Swift、Objective-C 和 C/C++ 目标。
Swift
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
Objective-C
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
C/C++ API
# Using C API directly
objc_library(
deps = [
"//tensorflow/lite/c:c_api",
],
)
# Using C++ API directly
objc_library(
deps = [
"//third_party/tensorflow/lite:framework",
],
)
查看 iOS 文档。
基于 Linux 的设备
使用简化的 Python 包 tflite-runtime 通过 Python 安装 TensorFlow Lite 解释器。
使用 pip 安装
python3 -m pip install tflite-runtime
使用 tflite_runtime 导入,如下所示
import tflite_runtime.interpreter as tflite
获取训练好的模型
下一步是获取将在设备上运行的训练好的模型。主要有三种方法可以做到这一点
-
使用预训练的 TensorFlow Lite 模型
-
使用 TensorFlow 训练自定义 TensorFlow Lite 模型
-
将 TensorFlow 模型转换为 TensorFlow Lite
使用预训练的模型
预训练的 TensorFlow Lite 模型是先前经过训练以执行特定任务的模型。使用预训练的 TensorFlow Lite 模型是获取用于部署的训练模型的最简单和最快的方法。它们按原样部署,几乎不需要修改。因此,它们仅提供轻微的自定义。
重要的是要指出 TensorFlow Lite 有一个示例应用程序库,其中实现了不同的设备上机器学习用例。一些示例包括图像分类、对象检测、手势识别和语音识别。每个用例都有在 Android、iOS 和 Raspberry Pi 上尝试的选项。
要将机器学习模型集成到应用程序中,首先从库中下载您选择的预训练 TensorFlow Lite 模型。然后继续使用 TensorFlow Lite Task Library 将模型添加到应用程序中。您可以从 Android、iOS 和 Python 库中选择。
这是一个使用任务视觉的示例。
Android 依赖项
dependencies {
implementation 'org.tensorflow:tensorflow-lite-task-vision'
}
iOS
use_frameworks!
pod 'TensorFlowLiteTaskVision'
Python
pip install tflite-support
使用 TensorFlow 训练自定义 TensorFlow Lite 模型
当开发者需要预训练用例中没有的训练模型时会发生什么?在这种情况下,他们可以从头开始构建一个独特的自定义模型;但是,这不能直接使用 TensorFlow Lite 完成。相反,该模型使用 TensorFlow 和一个名为 Model Maker 的特殊库进行训练,然后使用一种称为迁移学习的技术针对 TensorFlow Lite 进行优化。
训练自定义 TensorFlow Lite 模型有两个步骤。
首先,开发者需要收集和标记训练数据。其次,他们使用 TensorFlow Lite Model Maker 库和 TensorFlow 训练模型。
TensorFlow Lite Model Maker 使训练 TensorFlow Lite 模型的过程更加容易。基本上,它使用迁移学习技术来缩短训练数据所需的时间并减少所需的数据量。Model Maker 库支持机器学习任务,如对象检测、BERT 问题解答、音频分类和文本分类。
自定义模型训练最好在具有强大 GPU 的 PC 或设备上完成。Google Colab 就是这样一个平台。它是一个基于云的 Jupyter Notebook 环境,允许执行 Python 代码。它提供免费和付费的 GPU 来训练机器学习模型。
要开始使用,请使用 pip 安装 Model Maker
pip install tflite-model-maker
或者从 GitHub 克隆源代码并安装
git clone https://github.com/tensorflow/examples
cd examples/tensorflow_examples/lite/model_maker/pip_package
pip install -e .
将 TensorFlow 模型转换为 TensorFlow Lite
如果开发者需要的模型 TensorFlow Lite Model Maker 未启用且没有预训练版本,则最好在 TensorFlow 中构建模型并使用 TensorFlow Lite 转换器将其转换为 TensorFlow Lite。Keras API 等工具将在 TensorFlow 中构建模型,然后再将其转换为 TensorFlow Lite。
特别是,在开始转换工作流程以将 TensorFlow 模型转换为 TensorFlow Lite 之前,评估模型的内容以确定其是否与 TensorFlow 格式兼容非常重要。通常,TensorFlow Lite 运行时环境支持的标准模型可以直接转换,而支持集之外的模型将需要更高级的转换。
运行推理
推理是在设备上运行 TensorFlow Lite 模型以基于给定模型的数据生成预测的方法。TensorFlow Lite 解释器运行推理。
要使用解释器,请按照以下步骤操作
-
将模型(预训练、自定义构建或转换后的模型)与 .tflite 扩展名一起加载到 TensorFlow Lite 内存中。
-
为输入和输出张量分配内存。
-
对输入数据运行推理。这涉及使用 TensorFlow Lite API 来执行模型。
-
解释输出。
如何使用 TensorFlow Lite 模型?
您可以将 TensorFlow Lite 模型用于各种活动,如网络训练和推理。同样,您可以使用它来部署实时机器学习应用程序,例如图像分类器,该分类器经过训练可以识别和分类智能手机捕获的任何图像。
我可以使用 TensorFlow Lite 训练模型吗?
不可以。您不能使用 TensorFlow Lite 训练模型。TensorFlow Lite 是一个用于在嵌入式设备上运行机器学习模型的框架。如前所述,要训练模型,您必须使用 TensorFlow,它具有更广泛的功能范围,并且针对在 GPU 等强大的硬件上训练模型进行了优化。
要强调的是,TensorFlow Lite 不训练模型;相反,它部署已经训练好的模型。事实上,TensorFlow 训练模型并使用 TensorFlow Lite 转换器将其转换为 TensorFlow Lite。然后,TensorFlow Lite 优化模型以在移动设备和其他边缘设备上运行。
TensorFlow Lite 与 TensorFlow 有何不同?
TensorFlow 和 TensorFlow Lite 都是 Google 的机器学习框架,但有几件事使它们与众不同。我们将在本节中查看一些差异。
-
TensorFlow 在服务器端、本地机器、云中的集群、CPU 和 GPU 上运行,而 TensorFlow Lite 仅在计算能力较小的设备(如智能手机、微控制器和 Raspberry Pi)上运行。
-
TensorFlow Lite 具有低延迟。这意味着往返服务器的数据移动量最小。因此,这使其成为实时性能用例的理想选择。
-
TensorFlow Lite 使用 TensorFlow Lite 转换器将 TensorFlow 模型转换为 TensorFlow Lite。此转换器生成优化的压缩 FlatBuffer 文件格式,称为 .tflite。但是,没有 TensorFlow Lite 到 TensorFlow 转换器。
-
相比之下,TensorFlow Lite 比 TensorFlow 更快,因为它功耗和内存存储量低。
总结
在本文中,我们讨论了如何在您的设备上启动和运行 TensorFlow Lite。总而言之,我们介绍了安装 TensorFlow Lite 的步骤、获取和构建模型的各种格式,以及如何使用 TensorFlow Lite 解释器在您的设备上运行或部署模型。
最终,通过这些步骤,您应该能够开始在您的移动和嵌入式设备上使用 TensorFlow Lite 运行机器学习模型。
有关更多技术教程,请查看我们的博客。
关于作者
这篇文章由 Barinedum Sambaris 撰写。Barine 从 2013 年到 2018 年一直担任 Web 开发者,使用 HTML5、CSS3、Javascript 和 Bootstrap 构建前端网站。自 2019 年以来,她一直使用 Python 作为数据分析师。她渴望展示如何将 Web 开发的最佳实践与数据可视化相结合。