Guia de migração do AutoML Vision Edge do Kit de ML

É possível transmitir um modelo de classificação de imagem treinado pelo AutoML para as APIs de modelo personalizado. É possível continuar agrupando o modelo no app ou hospedando-o no Console do Firebase como um modelo personalizado. A API de rotulagem de imagens do AutoML foi removida do Kit de ML porque foi totalmente substituída pela API Custom Model Image Labeling.

APIO que está mudando?
API de rotulagem de imagens do AutoML Vision Edge Ela foi totalmente substituída pela API de rotulagem de imagens de modelos personalizados. A API atual de rotulagem de imagens do AutoML Vision Edge foi removida.

Se você for um usuário do kit de ML que usa a API AutoML Vision Edge, siga as instruções de migração para Android e iOS.

Perguntas frequentes

Qual é o motivo da mudança?

Ele ajuda a simplificar as APIs do Kit de ML e facilita a integração dele ao seu app. Com essa mudança, é possível usar um modelo treinado pelo AutoML da mesma maneira que um modelo personalizado. Ele também permite usar modelos treinados pelo AutoML para detecção e rastreamento de objetos, além da rotulagem de imagens, que atualmente é compatível. Além disso, a API de modelo personalizado é compatível com modelos com mapa de rótulos incorporado nos metadados e modelos com arquivos de manifesto e rótulos separados.

Quais são os benefícios da migração para o novo SDK?

  • Novos recursos: capacidade de usar modelos treinados pelo AutoML para rotulagem de imagens e detecção e rastreamento de objetos e capacidade de usar modelos com o mapa de rótulos incorporado nos metadados.

Guia de migração para Android

Etapa 1: atualizar as importações do Gradle

Atualize as dependências das bibliotecas do Android do Kit de ML no arquivo Gradle do módulo (nível do app), que geralmente é app/build.gradle, de acordo com a tabela a seguir:

Engenharia deArtefatos antigosNovo artefato
Rotulagem de imagens no AutoML sem download do modelo remoto com.google.mlkit:image-labeling-automl:16.2.1 com.google.mlkit:image-labeling-custom:16.0.0-beta5
Imagem de rotulagem de AutoML com download de modelo remoto 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

Etapa 2: atualizar os nomes das classes

Caso sua turma apareça nesta tabela, faça a alteração indicada:

Classe antigaNova turma
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

Etapa 3: atualizar os nomes dos métodos

Há mudanças mínimas no código:

  • LocalModel agora pode ser inicializado com um caminho de arquivo de modelo (se o modelo tiver metadados que contêm o mapa de rótulos) ou com um caminho de arquivo de manifesto de modelo (se o manifesto, o modelo e os rótulos estiverem em arquivos separados).
  • É possível hospedar um modelo personalizado remotamente pelo Console do Firebase e inicializar um CustomRemoteModel com um FirebaseModelSource.

Confira alguns exemplos de métodos Kotlin antigos e novos:

Antigo

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

Novo

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

Aqui estão alguns exemplos de métodos Java antigos e novos:

Antigo

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

Novo

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

Guia de migração para iOS

Pré-requisitos

  • O Xcode 13.2.1 ou versão mais recente é obrigatório.

Etapa 1: atualizar o Cocoapods

Atualize as dependências dos cocoapods para iOS do Kit de ML no Podfile do app:

Engenharia deNomes antigos dos conjuntosNovos nomes de pods
Rotulagem de imagens no AutoML sem download do modelo remoto GoogleMLKit/ImageLabelingAutoML GoogleMLKit/ImageLabelingCustom
Imagem de rotulagem de AutoML com download de modelo remoto GoogleMLKit/ImageLabelingAutoML
GoogleMLKit/LinkFirebase
GoogleMLKit/ImageLabelingCustom
GoogleMLKit/LinkFirebase

Etapa 2: atualizar os nomes das classes

Caso sua turma apareça nesta tabela, faça a alteração indicada:

Swift

Classe antigaNova turma
AutoMLImageLabelerLocalModel LocalModel
AutoMLImageLabelerRemoteModel CustomRemoteModel
AutoMLImageLabelerOptions CustomImageLabelerOptions

Objective-C

Classe antigaNova turma
MLKAutoMLImageLabelerLocalModel MLKLocalModel
MLKAutoMLImageLabelerRemoteModel MLKCustomRemoteModel
MLKAutoMLImageLabelerOptions MLKCustomImageLabelerOptions

Objective-C

Etapa 3: atualizar os nomes dos métodos

Há mudanças mínimas no código:

  • LocalModel agora pode ser inicializado com um caminho de arquivo de modelo (se o modelo tiver metadados que contêm o mapa de rótulos) ou com um caminho de arquivo de manifesto de modelo (se o manifesto, o modelo e os rótulos estiverem em arquivos separados).
  • É possível hospedar um modelo personalizado remotamente pelo Console do Firebase e inicializar um CustomRemoteModel com um FirebaseModelSource.

Aqui estão alguns exemplos de métodos Swift novos e antigos:

Antigo

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

Novo

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)

Aqui estão alguns exemplos de métodos Objective-C antigos e novos:

Antigo

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

Novo

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