Guide de migration d'AutoML Vision Edge du ML Kit

Vous pouvez transmettre un modèle de classification d'images entraîné avec AutoML aux API de modèle personnalisé. Vous pouvez continuer à regrouper le modèle dans votre application ou à l'héberger dans la console Firebase en tant que modèle personnalisé. L'API AutoML Image Labeling a été supprimée de ML Kit, car elle est entièrement remplacée par l'API Custom Model Image Labeling.

APIQu'est-ce qui change ?
API de libellé d'image AutoML Vision Edge Elle est entièrement remplacée par l'API de libellé d'image avec modèle personnalisé. L'API AutoML Vision Edge existante pour le libellé d'images est supprimée.

Si vous utilisez actuellement ML Kit avec l'API AutoML Vision Edge, veuillez suivre les instructions de migration pour Android et iOS.

Questions fréquentes

Pourquoi ce changement ?

Il permet de simplifier les API ML Kit et de faciliter l'intégration de ML Kit dans votre application. Avec ce changement, vous pouvez utiliser un modèle entraîné par AutoML exactement de la même manière qu'un modèle personnalisé. Il vous permet également d'utiliser des modèles entraînés par AutoML pour la détection et le suivi d'objets, en plus du libellé d'image que nous acceptons actuellement. De plus, l'API de modèle personnalisé est compatible à la fois avec les modèles avec une carte de libellés intégrée dans ses métadonnées et les modèles avec des fichiers de fichier manifeste et de libellé distincts.

Quels sont les avantages de la migration vers le nouveau SDK ?

  • Nouvelles fonctionnalités: possibilité d'utiliser des modèles entraînés par AutoML à la fois pour le libellé d'image et la détection et le suivi d'objets, et possibilité d'utiliser des modèles avec une carte de libellés intégrée dans ses métadonnées.

Guide de migration pour Android

Étape 1: Mettre à jour les importations Gradle

Mettez à jour les dépendances des bibliothèques Android ML Kit dans le fichier Gradle de votre module (au niveau de l'application) (généralement app/build.gradle) conformément au tableau suivant:

FonctionnalitéAnciens artefactsNouvel artefact
AutoML pour le libellé d'images sans téléchargement de modèle à distance com.google.mlkit:image-labeling-automl:16.2.1 com.google.mlkit:image-labeling-custom:16.0.0-beta5
AutoML pour le libellé d'images avec le téléchargement de modèles à distance 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

Étape 2: Mettre à jour les noms de classe

Si votre cours figure dans ce tableau, apportez la modification indiquée:

Ancienne classeNouvelle 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

Étape 3: Modifier les noms de méthode

Les modifications de code sont minimes:

  • LocalModel peut désormais être initialisé avec un chemin d'accès au fichier de modèle (si le modèle contient des métadonnées contenant la carte des étiquettes) ou un chemin d'accès au fichier manifeste du modèle (si le fichier manifeste, le modèle et les étiquettes se trouvent dans des fichiers distincts).
  • Vous pouvez héberger un modèle personnalisé à distance via la console Firebase et initialiser un CustomRemoteModel avec un FirebaseModelSource.

Voici quelques exemples d'anciennes et de nouvelles méthodes Kotlin:

Ancienne version

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

Nouveau

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

Voici quelques exemples d'anciennes et de nouvelles méthodes Java:

Ancienne version

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

Nouveau

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

Guide de migration pour iOS

Prérequis

  • Xcode 13.2.1 ou version ultérieure est requis.

Étape 1: Mettez à jour Cocoapods

Mettez à jour les dépendances des CocoaPods iOS ML Kit dans le fichier Podfile de votre application:

FonctionnalitéAncien(s) nom(s) de podNom(s) du ou des nouveaux pods
AutoML pour le libellé d'images sans téléchargement de modèle à distance GoogleMLKit/ImageLabelingAutoML GoogleMLKit/ImageLabelingCustom
AutoML pour le libellé d'images avec le téléchargement de modèles à distance GoogleMLKit/ImageLabelingAutoML
GoogleMLKit/LinkFirebase
GoogleMLKit/ImageLabelingCustom
GoogleMLKit/LinkFirebase

Étape 2: Mettre à jour les noms de classe

Si votre cours figure dans ce tableau, apportez la modification indiquée:

Swift

Ancienne classeNouvelle classe
AutoMLImageLabelerLocalModel LocalModel
AutoMLImageLabelerRemoteModel CustomRemoteModel
AutoMLImageLabelerOptions CustomImageLabelerOptions

Objective-C

Ancienne classeNouvelle classe
MLKAutoMLImageLabelerLocalModel MLKLocalModel
MLKAutoMLImageLabelerRemoteModel MLKCustomRemoteModel
MLKAutoMLImageLabelerOptions MLKCustomImageLabelerOptions

Objective-C

Étape 3: Mettre à jour les noms de méthode

Les modifications de code sont minimes:

  • LocalModel peut désormais être initialisé avec un chemin d'accès au fichier de modèle (si le modèle contient des métadonnées contenant la carte des étiquettes) ou un chemin d'accès au fichier manifeste du modèle (si le fichier manifeste, le modèle et les étiquettes se trouvent dans des fichiers distincts).
  • Vous pouvez héberger un modèle personnalisé à distance via la console Firebase et initialiser un CustomRemoteModel avec un FirebaseModelSource.

Voici quelques exemples d'anciennes et de nouvelles méthodes Swift:

Ancienne version

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

Nouveau

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)

Voici quelques exemples d'anciennes et de nouvelles méthodes Objective-C:

Ancienne version

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

Nouveau

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