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. Você pode continuar agrupando o modelo no seu app ou hospedando-o no Console do Firebase como um modelo personalizado. A API de rotulagem de imagens do AutoML foi removida do ML Kit, já que foi totalmente substituída pela API Custom Model Image Labeling.

APIO que vai mudar?
API AutoML Vision Edge para rotulagem de imagens Ela foi totalmente substituída pela API Custom Model image labeling. A API de rotulagem de imagens do AutoML Vision Edge foi removida.

Se você é 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?

Isso ajuda a simplificar as APIs do Kit de ML e facilita a integração do Kit de ML ao seu app. Com essa mudança, é possível usar um modelo treinado pelo AutoML da mesma forma que um modelo personalizado. Também é possível usar modelos treinados pelo AutoML para detecção e rastreamento de objetos, além do rotulagem de imagens, que é aceita no momento. Além disso, a API de modelo personalizado oferece suporte a 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 rotulação de imagens e detecção e rastreamento de objetos, além de usar modelos com mapa de rótulos incorporado aos 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) (geralmente app/build.gradle) de acordo com a tabela abaixo:

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

Se a sua turma aparecer nessa tabela, faça a mudança indicada:

Classe antigaNova classe
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:

  • Agora, LocalModel pode ser inicializado com um caminho de arquivo de modelo (se o modelo tiver metadados que contêm o mapa de rótulos) ou 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 antigos e novos do 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()

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

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

Guia de migração para iOS

Pré-requisitos

  • É necessário usar o Xcode 13.2.1 ou mais recente.

Etapa 1: atualizar o Cocoapods

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

RecursoNomes antigos do podNomes de novos pods
Rotulagem de imagens do AutoML sem download remoto de modelos GoogleMLKit/ImageLabelingAutoML GoogleMLKit/ImageLabelingCustom
Rotulagem de imagens do AutoML com download remoto do modelo GoogleMLKit/ImageLabelingAutoML
GoogleMLKit/LinkFirebase
GoogleMLKit/ImageLabelingCustom
GoogleMLKit/LinkFirebase

Etapa 2: atualizar os nomes das classes

Se a sua turma aparecer nessa tabela, faça a mudança indicada:

Classe antigaNova classe
AutoMLImageLabelerLocalModel LocalModel
AutoMLImageLabelerRemoteModel CustomRemoteModel
AutoMLImageLabelerOptions CustomImageLabelerOptions
Classe antigaNova classe
MLKAutoMLImageLabelerLocalModel MLKLocalModel
MLKAutoMLImageLabelerRemoteModel MLKCustomRemoteModel
MLKAutoMLImageLabelerOptions MLKCustomImageLabelerOptions

Etapa 3: atualizar os nomes dos métodos

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

  • Agora, LocalModel pode ser inicializado com um caminho de arquivo de modelo (se o modelo tiver metadados que contêm o mapa de rótulos) ou 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 antigos e novos do 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)

Confira alguns exemplos de métodos antigos e novos do 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];