默认情况下,所有机器学习套件功能都会使用 Google 训练的机器学习模型(称为基础模型)。本指南仅适用于基础模型。如需查看有关自定义模型的指南,请点击此处。
您可以通过以下三种方式之一安装机器学习套件 API 中的模型:
- 非捆绑式:模型通过 Google Play 服务下载和管理。
- 捆绑:模型在构建时静态链接到您的应用。
- 动态下载:模型按需下载。
每个 API 支持的安装路径
下表显示了每个 ML Kit 功能支持的模型安装路径:
| 解绑 | 捆绑 | 动态下载 | |
| 文本识别 v2 | ✅ | ✅ | |
| 人脸检测 | ✅ | ✅ | |
| 人脸网格检测 | ✅ | ||
| 姿势检测 | ✅ | ||
| 自拍分割 | ✅ | ||
| 条形码扫描 | ✅ | ✅ | |
| 为图片加标签 | ✅ | ✅ | |
| 对象检测和跟踪 | ✅ | ||
| 数字手写识别 | ✅ | ||
| 文件扫描器 | ✅ | ||
| 主体分割 | ✅ | ||
| Google 扫码器 | ✅ | ||
| 语言识别 | ✅ | ✅ | |
| 翻译 | ✅ | ||
| 智能回复 | ✅ | ✅ | |
| 实体提取 | ✅ |
API 专用指南会显示给定 API 可用的安装选项。
安装选项之间的主要区别
| 非捆绑式 | 捆绑式 | 动态下载 | |
| 模型存储在何处? | 位于 Google Play 服务中,不计入此应用使用的存储空间 | 安装后保存在应用专属存储空间中 | 模型下载后,保存在应用专属存储空间中 |
| 模型大小对应用大小有何影响? | 不会增加应用大小 | 直接影响应用大小 | 不会增加应用大小,但会增加应用专属存储空间 |
| 模型何时更新? | 在发布新版本时自动更新 | 需要更新应用才能更新模型 | 需要更新应用才能更新模型 |
| 何时下载模型? | 模型必须先下载才能使用 | 安装应用时会包含所有模型和功能,因此可立即使用 | 必须使用 RemoteModelManager API 手动管理模型下载、更新和删除 |
| 何时会从设备中移除模型? | 只有在卸载了依赖于该模型的所有应用后,Google Play 服务才会从存储空间中移除该模型 | 卸载应用后,模型会从应用专属存储空间中移除 | 卸载应用后,下载的模型会从应用专属存储空间中移除 |
如何在捆绑和非捆绑之间进行选择
如果某个 API 同时支持捆绑式和非捆绑式安装选项:
如果您优先考虑以下事项,请使用捆绑选项:
- 应用安装后立即提供完整功能
- 应用安装后在没有网络连接的情况下功能是否正常
如果您更看重以下方面,请使用非捆绑式选项:
- 缩减应用大小
- 由 Google Play 服务自动更新模型
如何下载模型
使用非捆绑式模型选项时,您可以指定模型的下载方式:
您可以通过向应用的
AndroidManifest.xml文件添加声明来启用安装时模型下载。例如,以下代码段展示了如何将应用配置为从 Play 商店安装后自动下载条形码扫描模型:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode" > <!-- To use multiple models: android:value="barcode,model2,model3" --> </application>您可以通过 Google Play 服务 ModuleInstallClient API 请求显式下载。
如果您未启用在安装时下载模型的选项,也未请求显式下载,模型将在您首次运行该功能时下载。在下载完成之前,推理请求会失败。
如何更新模型
如需在使用捆绑模型或动态下载模型选项时更新模型,请执行以下操作:
更新应用的 gradle 文件,以使用最新的机器学习套件功能客户端库。
dependencies { implementation 'com.google.mlkit:barcode-scanning: 17.3.0' // The latest version number of the API }重新构建您的应用。
为什么某些 API 会提供动态下载的模型
某些机器学习套件 API 有太多模型选项,无法捆绑。例如,数字墨水识别支持 300 多种语言,但并不总是需要在安装期间将每种语言都放入该功能中。 为此,我们提供了第三种安装选项,即在安装后按需下载模型。目前,只有数字墨水识别、翻译和实体提取具有此选项。