Esportazione dei modelli Edge

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Dopo aver creato (addestrato) un modello, puoi esportarlo.

Dopo aver esportato il modello, puoi eseguirne il deployment su un dispositivo.

Puoi esportare un modello di classificazione delle immagini in formato generico Tensorflow Lite, in formato generale TensorFlow o in formato TensorFlow.js per il Web in una località Google Cloud Storage utilizzando l'API ExportModel.

Esporta nei dispositivi

Modelli TensorFlow Lite

UI web

  1. Apri l'UI di rilevamento degli oggetti AutoML e fai clic sull'icona a forma di lampadina nella barra di navigazione a sinistra per visualizzare i modelli disponibili.

    Per visualizzare i modelli di un altro progetto, seleziona il progetto nell'elenco a discesa in alto a destra nella barra del titolo.

  2. Seleziona la riga del modello da utilizzare per etichettare le immagini.

  3. Seleziona la scheda Testa e utilizza.

  4. Nella sezione Utilizza il tuo modello, seleziona la scheda TF Lite. Viene visualizzata la finestra "Usa il tuo modello sul dispositivo".

    Immagine opzione di esportazione del modello TF Lite

  5. Nella finestra laterale, specifica la posizione di output di Google Cloud Storage. Dopo aver scelto la posizione di archiviazione per l'output del modello, seleziona Esporta per avviare l'operazione di esportazione del modello.

    Scegli una posizione di archiviazione per l'immagine modello esportata

  6. Dopo l'esportazione, puoi selezionare l'opzione "Apri in Google Cloud Storage" nella stessa finestra per passare direttamente alla directory di esportazione in Google Cloud Storage.

REST

Nel campo "modelFormat", specifica "tflite" (valore predefinito).

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • project-id: il tuo ID progetto GCP.
  • model-id: l'ID del tuo modello, dalla risposta quando hai creato il modello. L'ID è l'ultimo elemento del nome del modello. Ad esempio:
    • nome del modello: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • ID modello: IOD4412217016962778756
  • output-storage-bucket: un bucket/directory Google Cloud Storage in cui salvare i file di output, espressi nel seguente formato: gs://bucket/directory/. L'utente richiedente deve disporre dell'autorizzazione di scrittura nel bucket.

Metodo e URL HTTP:

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

Testo JSON richiesta:

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

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json, ed esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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"
      }
    }
  }
}

Di conseguenza, vedrai una struttura di cartelle nella directory che hai fornito (CLOUD_STORAGE_BUCKET/[DIRECTORY]). La struttura di cartelle creata avrà il seguente formato generale (timestamp in formato ISO-8601):

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

Ad esempio:

  • 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

La cartella contiene un modello TensorFlow Lite denominato model.tflite, un file dell'etichetta denominato dict.txt e un file tflite_metadata.json.

Esempio di cartella timestamp

Utilizzo del modello esportato

Dopo aver esportato il modello in un bucket Google Cloud Storage, puoi eseguire il deployment del modello AutoML Vision Edge sui dispositivi Android, sui dispositivi iOS o su Raspberry Pi 3.

Esportare in un contenitore

UI web

  1. Apri l'UI di rilevamento degli oggetti AutoML e fai clic sull'icona a forma di lampadina nella barra di navigazione a sinistra per visualizzare i modelli disponibili.

    Per visualizzare i modelli di un altro progetto, seleziona il progetto nell'elenco a discesa in alto a destra nella barra del titolo.

  2. Fai clic sulla riga del modello da utilizzare per etichettare le immagini.

  3. Seleziona la scheda Testa e utilizza.

  4. Nella sezione Utilizza il tuo modello, seleziona la scheda TF Lite. Viene visualizzata la finestra "Usa il tuo modello sul dispositivo".

    Immagine opzione di esportazione del modello TF Lite

  5. Nella finestra laterale, specifica la posizione di output di Google Cloud Storage. Dopo aver scelto la posizione di archiviazione per l'output del modello, seleziona Esporta per avviare l'operazione di esportazione del modello.

    Scegli una posizione di archiviazione per l'immagine modello esportata

  6. Dopo l'esportazione, puoi selezionare l'opzione "Apri in Google Cloud Storage" nella stessa finestra per passare direttamente alla directory di esportazione in Google Cloud Storage.

REST

Nel campo "modelFormat", specifica "tf-saved-model".

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • project-id: il tuo ID progetto GCP.
  • model-id: l'ID del tuo modello, dalla risposta quando hai creato il modello. L'ID è l'ultimo elemento del nome del modello. Ad esempio:
    • nome del modello: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • ID modello: IOD4412217016962778756
  • output-storage-bucket: un bucket/directory Google Cloud Storage in cui salvare i file di output, espressi nel seguente formato: gs://bucket/directory/. L'utente richiedente deve disporre dell'autorizzazione di scrittura nel bucket.

Metodo e URL HTTP:

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

Testo JSON richiesta:

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

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json, ed esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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"
      }
    }
  }
}

Di conseguenza, vedrai una struttura di cartelle nella directory che hai fornito (CLOUD_STORAGE_BUCKET/[DIRECTORY]). La struttura di cartelle creata avrà il seguente formato generale (timestamp in formato ISO-8601):

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

Ad esempio:

  • 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

La cartella contiene un modello TensorFlow denominato saved_model.pb.

Esempio di cartella timestamp

Utilizzo del modello esportato

Dopo aver esportato il modello in un bucket Google Cloud Storage, puoi utilizzare il modello esportato per effettuare previsioni in un'immagine Docker. Per istruzioni sul deployment in un container, consulta il tutorial sui container.

Esporta per il Web

UI web

  1. Apri Vision Dashboard e seleziona l'icona a forma di lampadina nella barra di navigazione laterale per visualizzare i modelli disponibili.

    Per visualizzare i modelli di un altro progetto, seleziona il progetto nell'elenco a discesa in alto a destra nella barra del titolo.

  2. Seleziona la riga del modello da utilizzare per etichettare le immagini.

  3. Seleziona la scheda Testa e utilizza appena sotto la barra del titolo.

  4. Nella sezione Utilizza il modello, seleziona l'opzione Tensorflow.js. Dopo aver selezionato l'opzione Tensorflow.js e specificato la posizione di esportazione in Cloud Storage nella finestra laterale, seleziona Esporta per esportare il modello TensorFlow.js pronto per il Web.

    Esporta l'opzione di Tensorflow.js Esporta l'opzione di Tensorflow.js

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • project-id: il tuo ID progetto GCP.
  • model-id: l'ID del tuo modello, dalla risposta quando hai creato il modello. L'ID è l'ultimo elemento del nome del modello. Ad esempio:
    • nome del modello: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • ID modello: IOD4412217016962778756
  • output-storage-bucket: un bucket/directory Google Cloud Storage in cui salvare i file di output, espressi nel seguente formato: gs://bucket/directory/. L'utente richiedente deve disporre dell'autorizzazione di scrittura nel bucket.

Metodo e URL HTTP:

POST https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:export

Testo JSON richiesta:

{
  "outputConfig": {
    "modelFormat": "tf_js",
    "gcsDestination": {
      "outputUriPrefix": "output-storage-bucket/"
    },
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json, ed esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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"
      }
    }
  }
}

Di conseguenza, vedrai una cartella nella directory che hai fornito (USER_GCS_PATH). Il nome della cartella creata sarà basato sul timestamp nel formato /model-export/icn/tf_js-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ (ad esempio, tf_js-edge_model-2019-10-03T17:24:46.999Z).

La cartella contiene file binari (.bin), un file di etichetta denominato dict.txt e un file model.json.

Esempio di cartella Tensorflow.js