机器学习套件 AutoML Vision Edge 迁移指南

您可以将 AutoML 训练的图片分类模型传递给自定义模型 API。您可以继续将模型打包在您的应用中,也可以将其作为自定义模型托管在 Firebase 控制台上。AutoML image Labeling API 已从机器学习套件中移除,因为它已被 Custom Model Image Labeling API 完全取代。

API有何变化?
AutoML Vision Edge 图片加标签 API 它已被自定义模型图片标签 API 完全取代。移除了现有的 AutoML Vision Edge 图片标签 API。

如果您目前是使用 AutoML Vision Edge API 的机器学习套件用户,请按照适用于 Android 和 iOS 的迁移说明进行操作。

常见问题解答

此次变更的原因是什么?

它有助于简化机器学习套件 API,并可让您更轻松地将机器学习套件集成到您的应用中。进行此更改后,您能够以与自定义模型完全相同的方式使用 AutoML 训练的模型。除了我们目前支持的图片标签功能之外,您还可以使用 AutoML 训练的模型进行对象检测和跟踪。此外,自定义模型 API 支持元数据中嵌入了标签映射的模型,也支持具有单独的清单和标签文件的模型。

迁移到新版 SDK 能给我带来哪些好处?

  • 新功能:能够将 AutoML 训练的模型用于图片标签以及对象检测和跟踪,并且能够使用元数据中嵌入了标签映射的模型。

Android 迁移指南

第 1 步:更新 Gradle 导入

根据下表,在模块(应用级)Gradle 文件(通常为 app/build.gradle)中更新 Android 版机器学习套件库的依赖项:

特征旧文物新工件
无需远程下载模型即可为 AutoML 加标签 com.google.mlkit:image-labeling-automl:16.2.1 com.google.mlkit:image-labeling-custom:16.0.0-beta5
通过下载远程模型为 AutoML 加标签 com.google.mlkit:image-labeling-automl:16.2.1
com.google.mlkit:linkfirebase:16.0.1
com.google.mlkit:image-labeling-custom:16.0.0-beta5
com.google.mlkit:linkfirebase:17.0.0

第 2 步:更新类名称

如果您的课程出现在此表格中,请进行指示的更改:

旧课程新建课程
com.google.mlkit.vision.label.automl.AutoMLImageLabelerLocalModel com.google.mlkit.common.model.LocalModel
com.google.mlkit.vision.label.automl.AutoMLImageLabelerRemoteModel com.google.mlkit.common.model.CustomRemoteModel
com.google.mlkit.vision.label.automl.AutoMLImageLabelerOptions com.google.mlkit.vision.label.custom.CustomImageLabelerOptions

第 3 步:更新方法名称

只需进行少量代码更改:

  • 现在可以使用模型文件路径(如果模型具有包含标签映射的元数据)或模型清单文件路径(如果清单、模型和标签位于单独的文件中)初始化 LocalModel
  • 您可以通过 Firebase 控制台远程托管自定义模型,并使用 FirebaseModelSource 初始化 CustomRemoteModel

下面是 Kotlin 新旧方法的一些示例:

旧优惠

val localModel = AutoMLImageLabelerLocalModel.Builder()
    .setAssetFilePath("automl/manifest.json")
    // or .setAbsoluteFilePath(absolute file path to manifest file)
    .build()

val optionsWithLocalModel = AutoMLImageLabelerOptions.Builder(localModel)
    .setConfidenceThreshold(0.5f)
    .build()

val remoteModel = AutoMLImageLabelerRemoteModel.Builder("automl_remote_model")
    .build()

val optionsWithRemoteModel = AutoMLImageLabelerOptions.Builder(remoteModel)
    .build()

新观看者

val localModel = LocalModel.Builder()
    .setAssetManifestFilePath("automl/manifest.json")
    // or .setAbsoluteManifestFilePath(absolute file path to manifest file)
    .build()

val optionsWithLocalModel = CustomImageLabelerOptions.Builder(localModel)
    .setConfidenceThreshold(0.5f)
    .build()

val firebaseModelSource = FirebaseModelSource.Builder("automl_remote_model")
    .build()
val remoteModel = CustomRemoteModel.Builder(firebaseModelSource).build()
val optionsWithRemoteModel = CustomImageLabelerOptions.Builder(remoteModel)
    .build()

下面是新旧 Java 方法的一些示例:

旧优惠

AutoMLImageLabelerLocalModel localModel =
    new AutoMLImageLabelerLocalModel.Builder()
        .setAssetFilePath("automl/manifest.json")
        // or .setAbsoluteFilePath(absolute file path to manifest file)
        .build();
AutoMLImageLabelerOptions optionsWithLocalModel =
    new AutoMLImageLabelerOptions.Builder(localModel)
        .setConfidenceThreshold(0.5f)
        .build();
AutoMLImageLabelerRemoteModel remoteModel =
    new AutoMLImageLabelerRemoteModel.Builder("automl_remote_model").build();
AutoMLImageLabelerOptions optionsWithRemoteModel =
    new AutoMLImageLabelerOptions.Builder(remoteModel)
        .build();

新观看者

LocalModel localModel =
    new LocalModel.Builder()
        .setAssetManifestFilePath("automl/manifest.json")
        // or .setAbsoluteManifestFilePath(absolute file path to manifest file)
        .build()
CustomImageLabelerOptions optionsWithLocalModel =
    new CustomImageLabelerOptions.Builder(localModel)
        .setConfidenceThreshold(0.5f)
        .build();
FirebaseModelSource firebaseModelSource =
    new FirebaseModelSource.Builder("automl_remote_model").build();
CustomRemoteModel remoteModel =
    new CustomRemoteModel.Builder(firebaseModelSource).build();
CustomImageLabelerOptions optionsWithRemoteModel =
    new CustomImageLabelerOptions.Builder(remoteModel).build();

iOS 迁移指南

前提条件

  • 需要 Xcode 13.2.1 或更高版本。

第 1 步:更新 CocoaPods

在应用的 Podfile 中更新机器学习套件 iOS CocoaPods 的依赖项:

特征旧 Pod 名称新 Pod 名称
无需远程下载模型即可为 AutoML 加标签 GoogleMLKit/ImageLabelingAutoML GoogleMLKit/ImageLabelingCustom
通过下载远程模型为 AutoML 加标签 GoogleMLKit/ImageLabelingAutoML
GoogleMLKit/LinkFirebase
GoogleMLKit/ImageLabelingCustom
GoogleMLKit/LinkFirebase

第 2 步:更新类名称

如果您的课程出现在此表格中,请进行指示的更改:

Swift

旧课程新建课程
AutoMLImageLabelerLocalModel LocalModel
AutoMLImageLabelerRemoteModel CustomRemoteModel
AutoMLImageLabelerOptions CustomImageLabelerOptions

Objective-C

旧课程新建课程
MLKAutoMLImageLabelerLocalModel MLKLocalModel
MLKAutoMLImageLabelerRemoteModel MLKCustomRemoteModel
MLKAutoMLImageLabelerOptions MLKCustomImageLabelerOptions

Objective-C

第 3 步:更新方法名称

只需进行少量代码更改:

  • 现在可以使用模型文件路径(如果模型具有包含标签映射的元数据)或模型清单文件路径(如果清单、模型和标签位于单独的文件中)初始化 LocalModel
  • 您可以通过 Firebase 控制台远程托管自定义模型,并使用 FirebaseModelSource 初始化 CustomRemoteModel

下面是新旧 Swift 方法的一些示例:

旧优惠

let localModel =
    AutoMLImageLabelerLocalModel(manifestPath: "automl/manifest.json")
let optionsWithLocalModel = AutoMLImageLabelerOptions(localModel: localModel)
let remoteModel = AutoMLImageLabelerRemoteModel(name: "automl_remote_model")
let optionsWithRemoteModel = AutoMLImageLabelerOptions(remoteModel: remoteModel)

新观看者

guard let localModel = LocalModel(manifestPath: "automl/manifest.json") else { return }
let optionsWithLocalModel = CustomImageLabelerOptions(localModel: localModel)
let firebaseModelSource = FirebaseModelSource(name: "automl_remote_model")
let remoteModel = CustomRemoteModel(remoteModelSource: firebaseModelSource)
let optionsWithRemoteModel = CustomImageLabelerOptions(remoteModel: remoteModel)

下面是新旧 Objective-C 方法的一些示例:

旧优惠

MLKAutoMLImageLabelerLocalModel *localModel =
    [[MLKAutoMLImageLabelerLocalModel alloc]
        initWithManifestPath:"automl/manifest.json"];
MLKAutoMLImageLabelerOptions *optionsWithLocalModel =
    [[MLKAutoMLImageLabelerOptions alloc] initWithLocalModel:localModel];
MLKAutoMLImageLabelerRemoteModel *remoteModel =
    [[MLKAutoMLImageLabelerRemoteModel alloc]
        initWithManifestPath:"automl/manifest.json"];
MLKAutoMLImageLabelerOptions *optionsWithRemoteModel =
    [[MLKAutoMLImageLabelerOptions alloc] initWithRemoteModel:remoteModel];

新观看者

MLKLocalModel *localModel =
    [[MLKLocalModel alloc] initWithManifestPath:"automl/manifest.json"];
MLKCustomImageLabelerOptions *optionsWithLocalModel =
    [[MLKCustomImageLabelerOptions alloc] initWithLocalModel:localModel];
MLKFirebaseModelSource *firebaseModelSource =
    [[MLKFirebaseModelSource alloc] initWithName:@"automl_remote_model"];
MLKCustomRemoteModel *remoteModel =
    [[MLKCustomRemoteModel alloc] initWithRemoteModelSource:firebaseModelSource];
MLKCustomImageLabelerOptions *optionsWithRemoteModel =
    [[MLKCustomImageLabelerOptions alloc] initWithRemoteModel:remoteModel];