ghjk0 2020-09-24
概述
在移动设备上使用 TensorFlow Lite 模型运行推理不仅仅是与模型交互,还需要额外的代码来处理复杂的逻辑,如数据转换、预处理/后处理、加载关联文件等。
额外的代码 https://tensorflow.google.cn/lite/guide/lite_support
今天,我们将为大家介绍 TensorFlow Lite Task Library,这是一组功能强大且易于使用的模型接口,可代您处理大多数预处理和后处理以及其他复杂逻辑。Task Library 支持主流的机器学习任务,包括图像分类与分割、目标检测和自然语言处理。模型接口针对每个任务进行过专门设计,可实现最佳性能和易用性——现在,只需 5 行代码就可以在受支持任务的预训练和自定义模型上执行推理!目前,Task Library 已广泛用于许多 Google 产品的生产环境中。
TensorFlow Lite Task Library https://tensorflow.google.cn/lite/inference_with_metadata/task_library/overview
支持的 ML 任务
TensorFlow Lite Task Library 目前支持六个 ML 任务,包括视觉和自然语言处理用例。下面将逐一进行简要介绍。
支持的模型
Task Library 与下列已知的模型源兼容:
Task Library 还支持符合每个 Task API 的模型兼容性要求的自定义模型。关联的文件(即标签图和 vocab 文件)和处理参数(如果适用)应正确填充到模型元数据中。有关更多详细信息,请参见 TensorFlow 网站上针对每个 API 的文档。
模型元数据 https://tensorflow.google.cn/lite/convert/metadata TensorFlow 网站上针对每个 API 的文档https://tensorflow.google.cn/lite/inference_with_metadata/task_library/overview
使用 Task Library 运行推理
Task Library 可跨平台工作,并且在 Java、C++(实验性)和 Swift(实验性)上均受支持。使用 Task Library 运行推理十分简单,只需编写几行代码。例如,您可以使用 DeepLab v3 TFLite 模型在 Android 中分割飞机图像(图 1),如下所示:
// Create the API from a model file and options String modelPath = "path/to/model.tflite" ImageSegmenterOptions options = ImageSegmenterOptions.builder().setOutputType(OutputType.CONFIDENCE_MASK).build();ImageSegmenter imageSegmenter = ImageSegmenter.createFromFileAndOptions(context, modelPath, options);// Segment an imageTensorImage image = TensorImage.fromBitmap(bitmap);List results = imageSegmenter.segment(image);
然后,您可以在结果中使用彩色标签和类别蒙版来构造分割蒙版图像,如图 2 所示。
三个文本 API 均支持 Swift。要在 iOS 中使用 SQuAD v1 TFLite 模型对给定的上下文和问题执行问答,您可以运行:
let modelPath = "path/to/model.tflite" // Create the API from a model file let mobileBertAnswerer = TFLBertQuestionAnswerer.mobilebertQuestionAnswerer(modelPath: modelPath)let context = """ The Amazon rainforest, alternatively, the Amazon Jungle, also known in \ English as Amazonia, is a moist broadleaf tropical rainforest in the \ Amazon biome that covers most of the Amazon basin of South America. This \ basin encompasses 7,000,000 square kilometers(2,700,000 square miles), of \ which 5,500,000 square kilometers(2,100,000 square miles) are covered by \ the rainforest. This region includes territory belonging to nine nations. """ let question = "Where is Amazon rainforest?" // Answer a questionlet answers = mobileBertAnswerer.answer(context: context, question: question)// answers.[0].text could be “South America.”
DeepLab v3 TFLite 模型 https://tfhub.dev/tensorflow/lite-model/deeplabv3/1/metadata/1 SQuAD v1 TFLite 模型https://tfhub.dev/tensorflow/lite-model/albert_lite_base/squadv1/1
为您的用例构建一个 Task API
如果现有 Task 库不支持您的用例,则您可以利用 Task API 基础架构并构建自定义 C++/Android/iOS 推理 API。有关更多详细信息,请参阅本指南。
指南 https://tensorflow.google.cn/lite/inference_with_metadata/task_library/customized_task_api
未来工作
我们将继续改善 Task Library 的用户体验。近期的路线图如下:
反馈
欢迎大家提供反馈,并就 Task Library 中支持的新用例给出建议。请向 [email protected]发送电子邮件或在 GitHub 中提 issue。
issue https://github.com/tensorflow/tflite-support/issues/new
致谢