Como exportar modelos do Edge

Depois de criar (treinar) um modelo personalizado, será possível exportá-lo.

Depois de exportar o modelo, será possível implantá-lo em um dispositivo.

É possível exportar um modelo de classificação de imagem nos formatos Tensorflow Lite genérico, TensorFlow geral ou TensorFlow.js para Web para um local do Google Cloud Storage usando a API ExportModel.

Exportar para dispositivos

Modelos do TensorFlow Lite

IU da Web

  1. Abra a IU do AutoML Vision Object Detection e clique no ícone de lâmpada na barra de navegação à esquerda para exibir os modelos disponíveis.

    Para ver os modelos de outro projeto, selecione o projeto na lista suspensa na parte superior direita da barra de título.

  2. Selecione a linha do modelo que você quer usar para rotular as imagens.

  3. Selecione a guia Testar e usar.

  4. Na seção Use seu modelo, selecione o cartão TF Lite. A janela lateral Use o modelo em seu dispositivo será exibida.

    Exportar imagem da opção de modelo do TF Lite

  5. Na janela lateral, especifique o local de saída do Google Cloud Storage. Depois de escolher o local de armazenamento para a saída do modelo, selecione Exportar para iniciar a operação de exportação do modelo.

    Escolher um local de armazenamento para a imagem de modelo exportada

  6. Depois de exportar, selecione a opção Abrir no Google Cloud Storage na mesma janela para ir diretamente para o diretório de exportação no Google Cloud Storage.

REST

No campo "modelFormat", especifique "tflite" (padrão).

Antes de usar os dados da solicitação abaixo, faça estas substituições:

  • project-id: o ID do projeto do GCP.
  • model-id: o ID do seu modelo, a partir da resposta de quando você o criou. Ele é o último elemento no nome do modelo. Por exemplo:
    • Nome do modelo: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • ID do modelo: IOD4412217016962778756
  • output-storage-bucket: um bucket/diretório do Google Cloud Storage em que os arquivos de saída serão salvos, expressos no seguinte formato: gs://bucket/directory/. O usuário solicitante precisa ter permissão de gravação no bucket.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a esta:

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

Como resultado, você verá uma estrutura de pastas no diretório fornecido (CLOUD_STORAGE_BUCKET/[DIRECTORY]). A estrutura de pastas criada terá o seguinte formato geral (carimbo de data/hora no formato ISO-8601):

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

Exemplo:

  • 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

A pasta contém um modelo do TensorFlow Lite chamado model.tflite, um arquivo de rótulo chamado dict.txt e um arquivo tflite_metadata.json.

Exemplo de pasta timestamp

Como usar o modelo exportado

Depois de exportar o modelo para um bucket do Google Cloud Storage, implante o modelo do AutoML Vision Edge em dispositivos Android, dispositivos iOS ou Raspberry Pi 3 (em inglês).

Exportar para um contêiner

IU da Web

  1. Abra a IU do AutoML Vision Object Detection e clique no ícone de lâmpada na barra de navegação à esquerda para exibir os modelos disponíveis.

    Para ver os modelos de outro projeto, selecione o projeto na lista suspensa na parte superior direita da barra de título.

  2. Clique na linha do modelo que você quer usar para rotular suas imagens.

  3. Selecione a guia Testar e usar.

  4. Na seção Use seu modelo, selecione o cartão TF Lite. A janela lateral Use o modelo em seu dispositivo será exibida.

    Exportar imagem da opção de modelo do TF Lite

  5. Na janela lateral, especifique o local de saída do Google Cloud Storage. Depois de escolher o local de armazenamento para a saída do modelo, selecione Exportar para iniciar a operação de exportação do modelo.

    Escolher um local de armazenamento para a imagem de modelo exportada

  6. Depois de exportar, selecione a opção Abrir no Google Cloud Storage na mesma janela para ir diretamente para o diretório de exportação no Google Cloud Storage.

REST

No campo "modelFormat", especifique "tf-saved-model".

Antes de usar os dados da solicitação abaixo, faça estas substituições:

  • project-id: o ID do projeto do GCP.
  • model-id: o ID do seu modelo, a partir da resposta de quando você o criou. Ele é o último elemento no nome do modelo. Por exemplo:
    • Nome do modelo: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • ID do modelo: IOD4412217016962778756
  • output-storage-bucket: um bucket/diretório do Google Cloud Storage em que os arquivos de saída serão salvos, expressos no seguinte formato: gs://bucket/directory/. O usuário solicitante precisa ter permissão de gravação no bucket.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a esta:

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

Como resultado, você verá uma estrutura de pastas no diretório fornecido (CLOUD_STORAGE_BUCKET/[DIRECTORY]). A estrutura de pastas criada terá o seguinte formato geral (carimbo de data/hora no formato ISO-8601):

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

Exemplo:

  • 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

A pasta contém um modelo do TensorFlow chamado saved_model.pb.

Exemplo de pasta timestamp

Como usar o modelo exportado

Depois de exportar o modelo para um bucket do Google Cloud Storage, use o modelo exportado para fazer previsões em uma imagem do Docker. Consulte o tutorial sobre contêineres para instruções sobre a implantação em um contêiner.

Exportar para a Web

IU da Web

  1. Abra Vision Dashboard e selecione o ícone de lâmpada na barra de navegação lateral para exibir os modelos disponíveis.

    Para ver os modelos de outro projeto, selecione o projeto na lista suspensa na parte superior direita da barra de título.

  2. Selecione a linha do modelo que você quer usar para rotular as imagens.

  3. Selecione a guia Testar e usar logo abaixo da barra de título.

  4. Na seção Usar seu modelo, selecione a opção Tensorflow.js. Depois de selecionar a opção Tensorflow.js e especificar o local de exportação no Cloud Storage na janela lateral, selecione Exportar para exportar o modelo do TensorFlow.js pronto para a Web.

    opção de exportação do Tensorflow.js opção de exportação do Tensorflow.js

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto do GCP.
  • model-id: o ID do seu modelo, a partir da resposta de quando você o criou. Ele é o último elemento no nome do modelo. Por exemplo:
    • Nome do modelo: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • ID do modelo: IOD4412217016962778756
  • output-storage-bucket: um bucket/diretório do Google Cloud Storage em que os arquivos de saída serão salvos, expressos no seguinte formato: gs://bucket/directory/. O usuário solicitante precisa ter permissão de gravação no bucket.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a esta:

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

Como resultado, você vai ver uma pasta no diretório fornecido (${USER_GCS_PATH}). A pasta criada será nomeada de acordo com o carimbo de data/hora no formato /model-export/icn/tf_js-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ. Por exemplo, tf_js-edge_model-2019-10-03T17:24:46.999Z.

A pasta contém arquivos binários (.bin), um arquivo de rótulo chamado dict.txt e um arquivo model.json.

Exemplo de pasta Tensorflow.js