TensorFlow Lite教程:如何快速入门
由 社区 / 开发者
2023年8月23日
导航至
由谷歌开发的TensorFlow框架是创建深度神经网络研究和训练机器学习算法最重要的平台之一。通常,它使用强大的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 安装 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 完成。相反,使用名为 Model Maker 的特殊库使用 TensorFlow 训练模型,然后使用迁移学习技术对 TensorFlow Lite 进行优化。
训练自定义 TensorFlow Lite 模型有两个步骤。
首先,开发者需要收集和标记训练数据。其次,他们使用 TensorFlow 的 TensorFlow Lite Model Maker 库来训练模型。
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仅在具有较小计算能力的设备上运行,如智能手机、微控制器和树莓派。
-
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撰写。从2013年到2018年,Barine是一名网页开发者,使用HTML5、CSS3、JavaScript和Bootstrap构建前端网站。自2019年以来,她一直使用Python作为数据分析师。她渴望展示如何将网页开发与数据可视化结合得最好。