适用于 Flutter 的 TensorFlow Lite 插件正式发布
2023 年 8 月 18 日
作者:Paul Ruiz,开发者关系工程师

我们很高兴地宣布,适用于 Flutter 的 TensorFlow Lite 插件已正式迁移至 TensorFlow GitHub 帐户并发布!

三年前,我们才华横溢的 Google 暑期代码贡献者之一 Amish Garg 编写了一个广受欢迎的适用于 Flutter 的 TensorFlow Lite 插件。该插件非常受欢迎,因此我们决定将其迁移到我们的官方存储库,使其更易于由 Google 团队直接维护。我们感谢 Amish 对 TensorFlow Lite Flutter 插件的贡献。

通过社区开发人员的努力,该插件已更新至最新版本的 TensorFlow Lite,并且添加了一系列新功能和示例应用程序,例如通过实时相机馈送进行目标检测。

Moving image of a live camera feed showing several objects on a work desk being detected

那么什么是 TensorFlow Lite?TensorFlow Lite 是一种在设备本地运行 TensorFlow 模型的方法,支持移动设备、嵌入式设备、网络设备和边缘设备。TensorFlow Lite 的跨平台支持和设备上性能优化使其成为 Flutter 开发工具箱的绝佳补充。我们使用该插件的目标是简化将 TensorFlow Lite 模型集成到跨移动平台的 Flutter 应用程序中的过程,目前正在开发桌面支持,这得益于我们开发人员社区的努力。在模型存储库(例如 Kaggle 模型)中查找预训练的 TensorFlow Lite 模型,或者 创建自己的自定义 TensorFlow Lite 模型

让我们看一下如何将 Flutter TensorFlow Lite 插件用于图像分类

使用 Flutter 进行 TensorFlow Lite 图像分类

首先,您需要从 pub.dev 安装该插件。插件安装后,您可以将 TensorFlow Lite 模型加载到您的 Flutter 应用程序中,并定义输入和输出张量形状。如果您使用的是 MobileNet 模型,则输入张量将是 224 x 224 的 RGB 图像,输出将是针对训练标签的置信度分数列表。

// 加载模型 Future<void> _loadModel() async { final options = InterpreterOptions(); // 从资产加载模型 interpreter = await Interpreter.fromAsset(modelPath, options: options); // 获取张量输入形状 [1, 224, 224, 3] inputTensor = interpreter.getInputTensors().first; // 获取张量输出形状 [1, 1001] outputTensor = interpreter.getOutputTensors().first; }

为了使事情更有条理,您还可以加载 MobileNet 训练的 1000 个项目的标签

// 从资源加载标签 Future<void> _loadLabels() async { final labelTxt = await rootBundle.loadString(labelsPath); labels = labelTxt.split('\n'); }

为了简洁,我们先跳过一些预处理步骤,不过你可以在仓库的图像分类示例中找到它们。

当你准备好运行推理时,你可以根据之前定义的张量形状创建新的输入和输出,然后调用解释器的 run 方法来获得最终结果。

// Run inference Future<void> runInference( List<List<List<num>>> imageMatrix, ) async { // Tensor input [1, 224, 224, 3] final input = [imageMatrix]; // Tensor output [1, 1001] final output = [List<int>.filled(1001, 0)];    // Run inference    interpreter.run(input, output);    // Get first output tensor    final result = output.first;

现在你已经得到了结果,你可以将它们与你的标签进行匹配,并在你的应用程序中使用它们。

Moving image of a live camera feed showing several objects on a work desk being correctly identified in the app

接下来做什么?

要探索 Flutter TensorFlow Lite 插件的其他功能,请查看官方的 GitHub 仓库,在那里你可以找到文本分类、超分辨率、风格迁移等示例!

此外,我们正在为 MediaPipe Tasks 开发一个新的插件,这是一个低代码工具,可以轻松地执行常见的设备端机器学习任务。这包括你刚刚了解的图像分类和目标检测,以及音频分类、面部关键点检测、手势识别,以及更多其他功能。

我们期待你创造的一切令人兴奋的东西,所以请务必与 @googledevs@TensorFlow 和你的开发者社区分享!

下一篇文章
The TensorFlow Lite Plugin for Flutter is Officially Available

作者:Paul Ruiz,开发者关系工程师 我们很高兴地宣布,Flutter 的 TensorFlow Lite 插件已正式迁移到 TensorFlow GitHub 账户并发布!三年前,Amish Garg,我们一位才华横溢的 Google Summer of Code 贡献者,编写了一个广泛使用的 Flutter TensorFlow Lite 插件。该插件非常受欢迎,因此我们决定将其迁移到…