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 API do oznaczania zdjęć etykietami został usunięty z ML Kit, ponieważ został w pełni zastąpiony przez interfejs Custom Model Image Labeling API.
| Interfejs API | Co się zmienia? |
|---|---|
| Interfejs AutoML Vision Edge API do oznaczania zdjęć etykietami | Został w pełni zastąpiony przez interfejs Custom Model Image Labeling API. Dotychczasowy interfejs AutoML Vision Edge API do oznaczania zdjęć etykietami został usunięty. |
Jeśli używasz 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 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 też korzystanie z modeli wytrenowanych przez AutoML do wykrywania i śledzenia obiektów oraz oznaczania zdjęć etykietami. 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 oznaczania zdjęć etykietami 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 na poziomie modułu (aplikacji) (zwykle app/build.gradle.kts) zgodnie z tą tabelą:
| Funkcja | Stare artefakty | Nowy artefakt |
|---|---|---|
| Oznaczanie zdjęć etykietami za pomocą AutoML bez pobierania modelu zdalnego | com.google.mlkit:image-labeling-automl:16.2.1 | com.google.mlkit:image-labeling-custom:16.0.0-beta5 |
| Oznaczanie zdjęć etykietami za pomocą 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 Aby hostować i pobierać modele niestandardowe, przenieś je do Cloud Storage i dodaj w aplikacji logikę pobierania, aby wczytywać je za pomocą LocalModel. Więcej informacji znajdziesz w [przewodniku po migracji z Firebase ML do Cloud Storage][migrate-storage]. |
Krok 2. Zaktualizuj nazwy klas
Jeśli Twoja klasa znajduje się w tej tabeli, wprowadź wskazaną zmianę:
| Stara klasa | Nowa klasa |
|---|---|
| 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.LocalModel Twoja aplikacja musi zawierać logikę pobierania modeli hostowanych zdalnie i inicjowania ich za pomocą LocalModel. |
| com.google.mlkit.vision.label.automl.AutoMLImageLabelerOptions | com.google.mlkit.vision.label.custom.CustomImageLabelerOptions |
Krok 3. Zaktualizuj nazwy metod
Wymaga to minimalnych zmian w kodzie:
LocalModelmożna teraz zainicjować za pomocą ścieżki modelu (jeśli model ma metadane zawierające mapę etykiet) lub ścieżki manifestu modelu (jeśli manifest, model i etykiety znajdują się w osobnych plikach).- Dodaj do aplikacji logikę pobierania modeli hostowanych zdalnie do pamięci lokalnej i wczytywania ich za pomocą
LocalModel.
Oto kilka przykładów starych i nowych metod w Kotlinie:
Stary
val localModel = AutoMLImageLabelerLocalModel.Builder() .setAssetFilePath("automl/manifest.json") // or .setAbsoluteFilePath(absolute 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
// Similar process for both local and remotely-hosted models (that have been downloaded) val localModel = LocalModel.Builder() .setAssetManifestFilePath("automl/manifest.json") // or .setAbsoluteManifestFilePath(absolute path to manifest file) .build() val optionsWithLocalModel = CustomImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.5f) .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 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
// Similar process for local models and remotely-hosted models (that have been downloaded) LocalModel localModel = new LocalModel.Builder() .setAssetManifestFilePath("automl/manifest.json") // or .setAbsoluteManifestFilePath(absolute path to manifest file) .build(); CustomImageLabelerOptions optionsWithLocalModel = new CustomImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.5f) .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:
| Funkcja | Stare nazwy podów | Nowe nazwy podów |
|---|---|---|
| Oznaczanie zdjęć etykietami za pomocą AutoML bez pobierania modelu zdalnego | GoogleMLKit/ImageLabelingAutoML | GoogleMLKit/ImageLabelingCustom |
| Oznaczanie zdjęć etykietami za pomocą AutoML z pobieraniem modelu zdalnego |
GoogleMLKit/ImageLabelingAutoML GoogleMLKit/LinkFirebase |
GoogleMLKit/ImageLabelingCustom Aby hostować i pobierać modele niestandardowe, przenieś je do Cloud Storage i dodaj w aplikacji logikę pobierania, aby wczytywać je jako modele lokalne. Więcej informacji znajdziesz w przewodniku po migracji z Firebase ML do Cloud Storage][migrate-storage]. |
Krok 2. Zaktualizuj nazwy klas
Jeśli Twoja klasa znajduje się w tej tabeli, wprowadź wskazaną zmianę:
Swift
| Stara klasa | Nowa klasa |
|---|---|
| AutoMLImageLabelerLocalModel | LocalModel |
| AutoMLImageLabelerRemoteModel |
LocalModel Aby hostować i pobierać modele niestandardowe, przenieś je do Cloud Storage i dodaj w aplikacji logikę pobierania, aby wczytywać je jako modele lokalne. Więcej informacji znajdziesz w przewodniku po migracji z Firebase ML do Cloud Storage][migrate-storage]. |
| AutoMLImageLabelerOptions | CustomImageLabelerOptions |
Objective-C
| Stara klasa | Nowa klasa |
|---|---|
| MLKAutoMLImageLabelerLocalModel | MLKLocalModel |
| MLKAutoMLImageLabelerRemoteModel |
MLKLocalModel Aby hostować i pobierać modele niestandardowe, przenieś je do Cloud Storage i dodaj w aplikacji logikę pobierania, aby wczytywać je jako modele lokalne. Więcej informacji znajdziesz w przewodniku po migracji z Firebase ML do Cloud Storage][migrate-storage]. |
| MLKAutoMLImageLabelerOptions | MLKCustomImageLabelerOptions |
Krok 3. Zaktualizuj nazwy metod
Wymaga to minimalnych zmian w kodzie:
LocalModelmożna teraz zainicjować za pomocą ścieżki modelu (jeśli model ma metadane zawierające mapę etykiet) lub ścieżki manifestu modelu (jeśli manifest, model i etykiety znajdują się w osobnych plikach).- Dodaj do aplikacji logikę pobierania modeli hostowanych zdalnie do pamięci lokalnej i wczytywania ich za pomocą
LocalModel.
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
// Similar process for local models and remotely-hosted models (that have been downloaded) guard let localModel = LocalModel(manifestPath: "automl/manifest.json") else { return } let optionsWithLocalModel = CustomImageLabelerOptions(localModel: localModel)
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
// Similar process for local models and remotely-hosted models (that have been downloaded) MLKLocalModel *localModel = [[MLKLocalModel alloc] initWithManifestPath:"automl/manifest.json"]; MLKCustomImageLabelerOptions *optionsWithLocalModel = [[MLKCustomImageLabelerOptions alloc] initWithLocalModel:localModel];