Przewodnik po migracji do ML Kit AutoML Vision Edge

Do interfejsów API modeli niestandardowych możesz przekazać model klasyfikacji obrazów wytrenowany przez AutoML. Możesz nadal dołączać model do aplikacji lub hostować go w konsoli Firebase jako model niestandardowy. Interfejs AutoML Image Labeling API został usunięty z ML Kit, ponieważ został w pełni zastąpiony przez interfejs Custom Model Image Labeling API.

Interfejs APICo się zmienia?
Interfejs AutoML Vision Edge Image Labeling API Został w pełni zastąpiony przez interfejs Custom Model Image Labeling API. Istniejący interfejs AutoML Vision Edge Image Labeling API został usunięty.

Jeśli obecnie korzystasz z ML Kit i interfejsu AutoML Vision Edge API, postępuj zgodnie z instrukcjami migracji na Androida i iOS.

Najczęstsze pytania

Dlaczego wprowadzamy tę zmianę?

Ułatwia to uproszczenie interfejsów ML Kit API i ułatwia integrację ML Kit z aplikacją. Dzięki tej zmianie możesz używać modelu wytrenowanego przez AutoML w taki sam sposób jak modelu niestandardowego. Umożliwia to też używanie modeli wytrenowanych przez AutoML do wykrywania i śledzenia obiektów oraz do etykietowania obrazów, które obecnie obsługujemy. Ponadto interfejs API modeli niestandardowych obsługuje zarówno modele z mapą etykiet osadzoną w metadanych, jak i modele z oddzielnymi plikami manifestu i etykiet.

Jakie korzyści przyniesie mi migracja do nowego pakietu SDK?

  • Nowe funkcje: możliwość używania modeli wytrenowanych przez AutoML do etykietowania obrazów oraz wykrywania i śledzenia obiektów, a także możliwość używania modeli z mapą etykiet osadzoną w metadanych.

Przewodnik po migracji na Androida

Krok 1. Zaktualizuj importy Gradle

Zaktualizuj zależności bibliotek ML Kit na Androida w pliku Gradle modułu (na poziomie aplikacji) (zwykle app/build.gradle) zgodnie z tą tabelą:

FunkcjaStare artefaktyNowy artefakt
Etykietowanie obrazów AutoML bez pobierania modelu zdalnego com.google.mlkit:image-labeling-automl:16.2.1 com.google.mlkit:image-labeling-custom:16.0.0-beta5
Etykietowanie obrazów AutoML z pobieraniem modelu zdalnego 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

Krok 2. Zaktualizuj nazwy klas

Jeśli Twoja klasa znajduje się w tej tabeli, wprowadź wskazaną zmianę:

Stara klasaNowe zajęcia
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

Krok 3. Zaktualizuj nazwy metod

W kodzie trzeba wprowadzić minimalne zmiany:

  • Klasę LocalModel można teraz zainicjować za pomocą ścieżki do pliku modelu (jeśli model ma metadane zawierające mapę etykiet) lub ścieżki do pliku manifestu modelu (jeśli manifest, model i etykiety znajdują się w osobnych plikach).
  • Model niestandardowy możesz hostować zdalnie za pomocą konsoli Firebase i zainicjować CustomRemoteModel za pomocą FirebaseModelSource.

Oto kilka przykładów starych i nowych metod w Kotlinie:

Stary

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()

Nowy

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()

Oto kilka przykładów starych i nowych metod w Javie:

Stary

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();

Nowy

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();

Przewodnik po migracji na iOS

Wymagania wstępne

  • Wymagany jest Xcode w wersji 13.2.1 lub nowszej.

Krok 1. Zaktualizuj Cocoapods

Zaktualizuj zależności cocoapods ML Kit na iOS w pliku Podfile aplikacji:

FunkcjaStare nazwy podówNowe nazwy podów
Etykietowanie obrazów AutoML bez pobierania modelu zdalnego GoogleMLKit/ImageLabelingAutoML GoogleMLKit/ImageLabelingCustom
Etykietowanie obrazów AutoML z pobieraniem modelu zdalnego GoogleMLKit/ImageLabelingAutoML
GoogleMLKit/LinkFirebase
GoogleMLKit/ImageLabelingCustom
GoogleMLKit/LinkFirebase

Krok 2. Zaktualizuj nazwy klas

Jeśli Twoja klasa znajduje się w tej tabeli, wprowadź wskazaną zmianę:

Swift

Stara klasaNowe zajęcia
AutoMLImageLabelerLocalModel LocalModel
AutoMLImageLabelerRemoteModel CustomRemoteModel
AutoMLImageLabelerOptions CustomImageLabelerOptions

Objective-C

Stara klasaNowe zajęcia
MLKAutoMLImageLabelerLocalModel MLKLocalModel
MLKAutoMLImageLabelerRemoteModel MLKCustomRemoteModel
MLKAutoMLImageLabelerOptions MLKCustomImageLabelerOptions

Objective-C

Krok 3. Zaktualizuj nazwy metod

W kodzie trzeba wprowadzić minimalne zmiany:

  • Klasę LocalModel można teraz zainicjować za pomocą ścieżki do pliku modelu (jeśli model ma metadane zawierające mapę etykiet) lub ścieżki do pliku manifestu modelu (jeśli manifest, model i etykiety znajdują się w osobnych plikach).
  • Model niestandardowy możesz hostować zdalnie za pomocą konsoli Firebase i zainicjować CustomRemoteModel za pomocą FirebaseModelSource.

Oto kilka przykładów starych i nowych metod w Swift:

Stary

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

Nowy

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)

Oto kilka przykładów starych i nowych metod w Objective-C:

Stary

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];

Nowy

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];