默认情况下,机器学习套件的 API 会使用 Google 训练的机器学习模型。这些模型旨在涵盖各种应用。但是,某些用例需要更具针对性的模型。因此,一些机器学习套件 API 现在允许您将默认模型替换为自定义 TensorFlow Lite 模型。
为图片加标签和对象检测和跟踪 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 提供各式各样的创建者提供的预训练图像分类模型,这些模型可与图片标签以及对象检测和跟踪 API 配合使用。请按以下步骤操作。
- 从与机器学习套件兼容的模型集合中选择一个模型。
- 从模型详情页面下载 .tflite 模型文件。请选择具有元数据的模型格式(如果有)。
- 如需了解如何将模型文件与您的项目捆绑并在 Android 或 iOS 应用中使用,请参阅 Image Labeling API 或 Object Detection and Tracking API 指南。
训练您自己的图片分类模型
如果没有预训练的图片分类模型能够满足您的需求,您可以通过多种方式训练自己的 TensorFlow Lite 模型,其中一些方法在下文中进行了详细介绍。
用于训练您自己的图片分类模型的选项 | |
---|---|
AutoML Vision Edge |
|
TensorFlow Lite Model Maker |
|
将 TensorFlow 模型转换为 TensorFlow Lite |
|
AutoML Vision Edge
Image Labeling 和 Object Detection and Tracking API API 中的自定义模型支持使用 AutoML Vision Edge 训练的图片分类模型。这些 API 还支持下载通过 Firebase 模型部署托管的模型。
如需详细了解如何在 Android 和 iOS 应用中使用通过 AutoML Vision Edge 训练的模型,请根据您的用例遵循每个 API 的自定义模型指南。
TensorFlow Lite Model Maker
在为设备端机器学习应用部署此模型时,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,则必须通过附加元数据来指定 normalizationOptions。
- 张量有 4 个维度:BxHxWxC,其中:
- B 是批次大小。必须为 1(不支持对较大的批次进行推断)。
- W 和 H 是输入宽度和高度。
- C 是预期的通道数。此值必须为 3。
- 模型必须至少有一个具有 N 类和 2 或 4 维度的输出张量:
- (1 倍速)
- (1x1x1xN)
- 目前仅支持单头模型。多头模型可能会输出意外的结果。
元数据
如向 TensorFlow Lite 模型添加元数据中所述,您可以向 TensorFlow Lite 文件添加元数据。
如需使用具有 FLOAT32 输入张量的模型,您必须在元数据中指定 normalizationOptions。
我们还建议您将此元数据附加到输出张量 TensorMetadata:
- 指定为每个输出类名称的标签映射,类型为 TENSOR_AXIS_LABELS 的 AssociatedFile(否则,只能返回数字输出类索引)
- 默认得分阈值,如果低于该阈值,系统会认为结果置信度太低,无法以 ProcessUnit(ScoreThresholdingOptions 形式)返回