Android 上的机器学习套件模型安装路径

默认情况下,所有机器学习套件功能都使用 Google 训练的机器学习模型(称为基础模型)。本指南仅适用于基础模型。如需查看有关自定义模型的指南,请点击此处。

机器学习套件 API 中的模型可以通过以下三种方式之一安装:

  1. 未捆绑: 模型通过 Google Play 服务下载和管理。
  2. 已捆绑: 模型在构建时静态链接到您的应用。
  3. 动态下载: 模型按需下载。

每个 API 支持的安装路径

下表显示了每个机器学习套件功能支持的模型安装路径:

未捆绑 已捆绑 动态下载
文字识别 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请求显式下载。

  • 如果您未启用安装时模型下载或请求显式下载,模型将在您首次运行该功能时下载。 在下载完成之前,推理请求将失败。

如何更新模型

使用捆绑模型或动态下载模型选项时,如需更新模型,请执行以下操作:

  1. 更新应用的 Gradle 文件,以使用最新的机器学习套件功能客户端库。

    dependencies {
      implementation 'com.google.mlkit:barcode-scanning: 17.3.0' // The latest version number of the API
    }
    
  2. 重新构建应用。

为什么某些 API 提供动态下载模型

某些机器学习套件 API 有太多模型选项无法捆绑。例如,数字墨水 识别支持 300+ 种语言,并且在安装期间不 一定需要将每种语言都放入该功能中。 为此,我们提供了第三种安装选项,即在安装后按需下载模型。目前,只有数字墨水 识别、 翻译和实体 提取具有此选项。