默认情况下,机器学习套件的 API 使用 Google 训练的机器学习模型。这些模型旨在用于各种应用。但是,某些用例需要更具针对性的模型。因此,某些机器学习套件 API 现在允许您将默认模型替换为自定义 TensorFlow Lite 模型。
图片标签和 Object Detection & Tracking API 均支持自定义图片分类模型。它们与 TensorFlow Hub 中精选的优质预训练模型或您自己的使用 TensorFlow、AutoML Vision Edge 或 TensorFlow Lite Model Maker 训练的自定义模型兼容。
如果您需要适用于其他领域或用例的自定义解决方案,请访问设备端机器学习页面,获取 Google 针对设备端机器学习提供的所有解决方案和工具的指导。
将机器学习套件与自定义模型结合使用的优势
将自定义图片分类模型与机器学习套件搭配使用的优势如下:
- 易于使用的高级别 API - 无需处理低级别模型输入/输出,无需处理图像预处理/后处理,也无需构建处理流水线。
- 机器学习套件从 TFLite 模型元数据中提取标签并为您执行映射,无需担心自己进行标签映射。
- 支持各种来源的自定义模型,从 TensorFlow Hub 上发布的预训练模型,到使用 TensorFlow、AutoML Vision Edge 或 TensorFlow Lite Model Maker 训练的新模型,应有尽有。
- 支持使用 Firebase 托管的模型。通过按需下载模型来缩减 APK 大小。无需重新发布应用即可推送模型更新,并使用 Firebase Remote Config 执行简单的 A/B 测试。
- 针对与 Android 的 Camera API 集成进行了优化。
特别是对于对象检测和跟踪:
- 通过先定位对象并仅在相关图片区域运行分类器,提高分类准确率。
- 提供实时交互式体验,在检测到对象并进行分类时,为用户提供即时反馈。
使用预训练的图片分类模型
您可以使用预训练的 TensorFlow Lite 模型,只要这些模型符合一组条件即可。通过 TensorFlow Hub,我们提供一组来自 Google 或其他模型创建者且符合这些条件的经过审核的模型。
使用在 TensorFlow Hub 上发布的模型
TensorFlow Hub 提供了各种各样的预训练图像分类模型(来自各个模型创建者),它们可与 Image Labeling API 以及 Object Detection and Tracking API 搭配使用。请按以下步骤操作。
- 从与机器学习套件兼容的模型集合中,选择一个模型。
- 从模型详情页面下载 .tflite 模型文件。在适用的情况下,选择包含元数据的模型格式。
- 请参阅我们针对 Image Labeling API 或 Object Detection and Tracking API 的指南,了解如何将模型文件与项目捆绑并在 Android 或 iOS 应用中使用。
训练您自己的图片分类模型
如果没有预训练的图片分类模型符合您的需求,您可以通过多种方法训练自己的 TensorFlow Lite 模型,下文将对其中一些模型进行详细介绍和讨论。
用于训练您自己的图片分类模型的选项 | |
---|---|
AutoML Vision Edge |
|
TensorFlow Lite Model Maker |
|
将 TensorFlow 模型转换为 TensorFlow Lite |
|
AutoML Vision Edge
Image Labeling API 和 Object Detection and Tracking API API 中的自定义模型支持使用 AutoML Vision Edge 训练的图片分类模型。这些 API 还支持下载由 Firebase 模型部署托管的模型。
如需详细了解如何在 Android 和 iOS 应用中使用通过 AutoML Vision Edge 训练的模型,请根据您的使用场景遵循每个 API 的自定义模型指南。
TensorFlow Lite Model Maker
在为设备端机器学习应用部署 TensorFlow 神经网络模型时,TFLite Model Maker 库简化了调整 TensorFlow 神经网络模型并将其转换为特定输入数据的过程。您可以按照使用 TensorFlow Lite Model Maker 进行图片分类的 Colab 中的说明操作。
如需详细了解如何在 Android 和 iOS 应用中使用通过 Model Maker 训练的模型,请根据您的使用场景,按照我们的 Image Labeling API 或 Object Detection and Tracking API 指南进行操作。
使用 TensorFlow Lite 转换器创建的模型
如果您已有 TensorFlow 图片分类模型,则可以使用 TensorFlow Lite 转换器转换该模型。请确保创建的模型符合以下兼容性要求。
如需详细了解如何在 Android 和 iOS 应用中使用 TensorFlow Lite 模型,请根据您的使用场景,按照我们的 Image Labeling API 或 Object Detection and Tracking API 指南进行操作。
TensorFlow Lite 模型兼容性
您可以使用任何预训练的 TensorFlow Lite 图片分类模型,前提是它满足以下要求:
张量
- 模型只能有一个输入张量,并具有以下约束条件:
- 数据采用 RGB 像素格式。
- 数据为 UINT8 或 FLOAT32 类型。如果输入张量类型为 FLOAT32,则必须通过附加 Metadata 来指定 NormalizationOptions。
- 该张量具有 4 个维度:BxHxWxC,其中:
- B 是批次大小。此值必须为 1(不支持对更大的批次进行推断)。
- W 和 H 分别是输入宽度和高度。
- C 是预期通道数。此值必须为 3。
- 模型必须至少具有一个输出张量(具有 N 个类别,并且具有 2 个或 4 个维度):
- (1xN)
- (1 x 1 x N)
- 目前仅完全支持单头模型。多头模型可能会输出意外结果。
元数据
您可以按照向 TensorFlow Lite 模型添加元数据中的说明,向 TensorFlow Lite 文件添加元数据。
如需使用具有 FLOAT32 输入张量的模型,您必须在元数据中指定 NormalizationOptions。
我们还建议将此元数据附加到输出张量 TensorMetadata:
- 一个标签映射,用于指定每个输出类的名称,表示为一个类型为 TENSOR_AXIS_LABELS 的 AssociatedFile(否则,只能返回数值输出类索引)
- 默认得分阈值,如果低于该阈值,则结果会被视为置信度太低,无法作为 ProcessUnit 返回,具有 ScoreThresholdingOptions