ML Kit AutoML Vision Edge 遷移指南

您可以將以 AutoML 訓練的圖片分類模型傳遞至自訂模型 API。您可以繼續將模型與應用程式一併發布,或在 Firebase 控制台上以自訂模型的形式發布。AutoML 圖片標記 API 已從 ML Kit 移除,因為自訂模型圖片標記 API 已完全取代該 API。

API異動內容
AutoML Vision Edge 圖片標籤 API 並完全由 Custom Model 圖片標籤 API 取代。移除現有的 AutoML Vision Edge 圖片標籤 API。

如果您目前是使用 AutoML Vision Edge API 的 ML Kit 使用者,請按照 Android 和 iOS 的遷移指示操作。

常見問題

異動原因

這項變更可簡化 ML Kit API,方便您將 ML Kit 整合至應用程式。變更後,您可以使用以 AutoML 訓練的模型,方式與自訂模型完全相同。此外,除了目前支援的圖片標籤功能,您還能使用 AutoML 訓練的模型進行物件偵測和追蹤。此外,自訂模型 API 支援的兩種模型,分別是中繼資料內嵌標籤地圖的模型,以及具有獨立資訊清單和標籤檔案的模型。

遷移至新版 SDK 有哪些好處?

  • 新功能:可將 AutoML 訓練的模型用於圖片標籤和物件偵測與追蹤,並使用中繼資料內嵌標籤對應的模型。

Android 遷移指南

步驟 1:更新 Gradle 匯入項目

根據下表,更新模組 (應用程式層級) Gradle 檔案 (通常為 app/build.gradle) 中 ML Kit 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 中,更新 ML Kit iOS Cocoapod 的依附元件:

功能舊 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];