Exporter des modèles Edge

Après avoir créé (entraîné) un modèle, vous pouvez exporter votre modèle personnalisé.

Après avoir exporté votre modèle, vous pouvez le déployer sur un appareil.

Vous pouvez exporter un modèle de classification d'images sous divers formats (Tensorflow Lite générique, TensorFlow général ou TensorFlow.js pour le Web) vers un emplacement Google Cloud Storage à l'aide de l'API ExportModel.

Exporter vers des appareils

Modèles TensorFlow Lite

UI Web

  1. Accédez à l'UI de détection d'objets AutoML Vision, puis cliquez sur l'icône représentant une ampoule dans la barre de navigation de gauche pour afficher les modèles disponibles.

    Pour afficher les modèles d'un autre projet, sélectionnez le projet dans la liste déroulante située en haut à droite de la barre de titre.

  2. Sélectionnez la ligne du modèle que vous souhaitez utiliser pour attribuer des étiquettes à vos images.

  3. Sélectionnez l'onglet Test & use (Test et utilisation).

  4. Dans la section Use your model (Utiliser votre modèle), sélectionnez la fiche TF Lite. Une fenêtre latérale Use your on-device model (Utiliser votre modèle sur l'appareil) s'ouvre.

    Image de l'option d'exportation du modèle TF Lite

  5. Dans la fenêtre latérale, spécifiez l'emplacement de sortie Google Cloud Storage. Après avoir choisi l'emplacement de stockage pour la sortie du modèle, sélectionnez Export (Exporter) pour lancer l'opération d'exportation du modèle.

    Choix d'un emplacement de stockage pour l'image de modèle exportée

  6. Après l'exportation, vous pouvez sélectionner l'option Open in Google Cloud Storage (Ouvrir dans Google Cloud Storage) dans la même fenêtre pour accéder directement au répertoire d'exportation dans Google Cloud Storage.

REST

Dans le champ "modelFormat", spécifiez "tflite" (valeur par défaut).

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID de votre projet GCP.
  • model-id : ID de votre modèle, issu de la réponse obtenue lors de sa création. L'ID est le dernier élément du nom du modèle. Exemple :
    • Nom du modèle : projects/project-id/locations/location-id/models/IOD4412217016962778756
    • ID du modèle : IOD4412217016962778756
  • output-storage-bucket : répertoire/bucket Google Cloud Storage dans lequel enregistrer les fichiers de sortie, exprimé sous la forme suivante : gs://bucket/directory/. L'utilisateur demandeur doit disposer d'autorisations en écriture sur le bucket.

Méthode HTTP et URL :

POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export

Corps JSON de la requête :

{
  "outputConfig": {
    "modelFormat": "tflite",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_STORAGE_BUCKET/"
    },
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-07-22T21:23:21.643041Z",
    "updateTime": "2019-07-22T21:23:21.643041Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "OUTPUT_STORAGE_BUCKET/model-export/iod/tflite-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

Une fois cette opération effectuée, une structure de dossiers s'affiche dans le répertoire que vous avez spécifié (CLOUD_STORAGE_BUCKET/[DIRECTORY]). La structure de dossiers créée sera au format général suivant (horodatage au format ISO-8601) :

  • CLOUD_STORAGE_BUCKET/model-export/iod/MODEL_TYPE-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ

Exemple :

  • CLOUD_STORAGE_BUCKET/model-export/iod/tf-saved-model-DATASET_NAME-2019-07-22T21:25:35.135Z
  • CLOUD_STORAGE_BUCKET/model-export/iod/tflite-DATASET_NAME-2019-07-22T21:23:18.861Z

Le dossier contient un modèle TensorFlow Lite nommé model.tflite, un fichier d'étiquettes nommé dict.txt et un fichier tflite_metadata.json.

Exemple de dossier avec horodatage

Utiliser le modèle exporté

Après avoir exporté votre modèle vers un bucket Google Cloud Storage, vous pouvez déployer votre modèle AutoML Vision Edge sur des appareils Android, iOS ou Raspberry Pi 3.

Exporter vers un conteneur

UI Web

  1. Accédez à l'UI de détection d'objets AutoML Vision, puis cliquez sur l'icône représentant une ampoule dans la barre de navigation de gauche pour afficher les modèles disponibles.

    Pour afficher les modèles d'un autre projet, sélectionnez le projet dans la liste déroulante située en haut à droite de la barre de titre.

  2. Cliquez sur la ligne du modèle que vous souhaitez utiliser pour étiqueter vos images.

  3. Sélectionnez l'onglet Test & use (Test et utilisation).

  4. Dans la section Use your model (Utiliser votre modèle), sélectionnez la fiche TF Lite. Une fenêtre latérale Use your on-device model (Utiliser votre modèle sur l'appareil) s'ouvre.

    Image de l'option d'exportation du modèle TF Lite

  5. Dans la fenêtre latérale, spécifiez l'emplacement de sortie Google Cloud Storage. Après avoir choisi l'emplacement de stockage pour la sortie du modèle, sélectionnez Export (Exporter) pour lancer l'opération d'exportation du modèle.

    Choix d'un emplacement de stockage pour l'image de modèle exportée

  6. Après l'exportation, vous pouvez sélectionner l'option Open in Google Cloud Storage (Ouvrir dans Google Cloud Storage) dans la même fenêtre pour accéder directement au répertoire d'exportation dans Google Cloud Storage.

REST

Dans le champ "modelFormat", spécifiez "tf-saved-model".

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID de votre projet GCP.
  • model-id : ID de votre modèle, issu de la réponse obtenue lors de sa création. L'ID est le dernier élément du nom du modèle. Exemple :
    • Nom du modèle : projects/project-id/locations/location-id/models/IOD4412217016962778756
    • ID du modèle : IOD4412217016962778756
  • output-storage-bucket : répertoire/bucket Google Cloud Storage dans lequel enregistrer les fichiers de sortie, exprimé sous la forme suivante : gs://bucket/directory/. L'utilisateur demandeur doit disposer d'autorisations en écriture sur le bucket.

Méthode HTTP et URL :

POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export

Corps JSON de la requête :

{
  "outputConfig": {
    "modelFormat": "tf-saved-model",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_STORAGE_BUCKET/"
    },
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-07-22T21:23:21.643041Z",
    "updateTime": "2019-07-22T21:23:21.643041Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "OUTPUT_STORAGE_BUCKET/model-export/iod/tf-saved-model-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

Une fois cette opération effectuée, une structure de dossiers s'affiche dans le répertoire que vous avez spécifié (CLOUD_STORAGE_BUCKET/[DIRECTORY]). La structure de dossiers créée sera au format général suivant (horodatage au format ISO-8601) :

  • CLOUD_STORAGE_BUCKET/model-export/iod/MODEL_TYPE-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ

Exemple :

  • CLOUD_STORAGE_BUCKET/model-export/iod/tf-saved-model-DATASET_NAME-2019-07-22T21:25:35.135Z
  • CLOUD_STORAGE_BUCKET/model-export/iod/tflite-DATASET_NAME-2019-07-22T21:23:18.861Z

Le dossier contient un modèle TensorFlow nommé saved_model.pb.

Exemple de dossier avec horodatage

Utiliser le modèle exporté

Après avoir exporté votre modèle vers un bucket Google Cloud Storage, vous pouvez utiliser le modèle exporté pour effectuer des prédictions dans une image Docker. Pour savoir comment procéder au déploiement dans un conteneur, reportez-vous au tutoriel sur les conteneurs.

Exporter pour le Web

UI Web

  1. Pour afficher les modèles disponibles, accédez à Vision Dashboard et sélectionnez l'icône représentant une ampoule dans la barre de navigation latérale.

    Pour afficher les modèles d'un autre projet, sélectionnez le projet dans la liste déroulante située en haut à droite de la barre de titre.

  2. Sélectionnez la ligne du modèle que vous souhaitez utiliser pour attribuer des libellés à vos images.

  3. Sélectionnez l'onglet Test et utilisation situé juste en dessous de la barre de titre.

  4. Dans la section Utiliser votre modèle, sélectionnez l'option TensorFlow.js. Après avoir sélectionné l'option Tensorflow.js et spécifié l'emplacement d'exportation dans Cloud Storage dans la fenêtre latérale, sélectionnez Exporter pour exporter votre modèle TensorFlow.js conçu pour le Web.

    Option d'exportation Tensorflow.js Option d'exportation Tensorflow.js

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID de votre projet GCP.
  • model-id : ID de votre modèle, issu de la réponse obtenue lors de sa création. L'ID est le dernier élément du nom du modèle. Exemple :
    • Nom du modèle : projects/project-id/locations/location-id/models/IOD4412217016962778756
    • ID du modèle : IOD4412217016962778756
  • output-storage-bucket : répertoire/bucket Google Cloud Storage dans lequel enregistrer les fichiers de sortie, exprimé sous la forme suivante : gs://bucket/directory/. L'utilisateur demandeur doit disposer d'autorisations en écriture sur le bucket.

Méthode HTTP et URL :

POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export

Corps JSON de la requête :

{
  "outputConfig": {
    "modelFormat": "tf_js",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_STORAGE_BUCKET/"
    },
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-07-22T21:23:21.643041Z",
    "updateTime": "2019-07-22T21:23:21.643041Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "OUTPUT_STORAGE_BUCKET/model-export/icn/tf_js-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

Une fois cette opération effectuée, un dossier s'affiche dans le répertoire que vous avez spécifié (USER_GCS_PATH). Le dossier créé est nommé en fonction de l'horodatage au format /model-export/icn/tf_js-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ (par exemple, tf_js-edge_model-2019-10-03T17:24:46.999Z).

Ce dossier contient des fichiers binaires (.bin), un fichier de libellés nommé dict.txt et un fichier model.json.

Exemple de dossier TensorFlow.js