Depois de criar um modelo (treinado), faça uma solicitação de previsão assíncrona para um lote de imagens usando o método batchPredict
. O método batchPredict
aplica rótulos à imagem com base no objeto principal que seu modelo prevê.
A duração máxima de um modelo personalizado é de 18 meses a partir da versão em disponibilidade geral (GA, na sigla em inglês). É preciso criar e treinar um novo modelo para continuar anotando o conteúdo depois desse período.
Previsão em lote
É possível solicitar anotações (previsões) para imagens usando o comando batchPredict
. O comando batchPredict
recebe, como entrada, um arquivo CSV armazenado no seu bucket do Google Cloud Storage que contém os caminhos para as imagens a serem anotadas. Cada linha especifica um caminho separado para uma imagem no Google Cloud Storage.
batch_prediction.csv
:
gs://my-cloud-storage-bucket/prediction_files/image1.jpg gs://my-cloud-storage-bucket/prediction_files/image2.jpg gs://my-cloud-storage-bucket/prediction_files/image3.jpg gs://my-cloud-storage-bucket/prediction_files/image4.jpg gs://my-cloud-storage-bucket/prediction_files/image5.jpg gs://my-cloud-storage-bucket/prediction_files/image6.png
Dependendo do número de imagens que você especificou no arquivo CSV, a tarefa de previsão em lote pode demorar um pouco para ser concluída. Mesmo com um pequeno número de imagens, a previsão em lote levará, no mínimo, 30 minutos para ser concluída.
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.
- location-id: um identificador de local válido. Atualmente, é preciso
usar o seguinte valor:
us-central1
- 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
- Nome do modelo:
- input-storage-path: o caminho para um arquivo CSV armazenado no Google Cloud Storage. O usuário solicitante precisa ter, pelo menos, permissão de leitura no bucket.
- output-storage-bucket: um intervalo/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.
Considerações específicas de campo:
params.score_threshold
- Um valor entre 0,0 e 1,0. Somente resultados com pontuações maiores ou iguais a esse valor serão retornados.
Método HTTP e URL:
POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID:batchPredict
Corpo JSON da solicitação:
{ "inputConfig": { "gcsSource": { "inputUris": [ "INPUT_STORAGE_PATH" ] } }, "outputConfig": { "gcsDestination": { "outputUriPrefix": "OUTPUT_STORAGE_BUCKET" } }, "params": { "score_threshold": "0.0" } }
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/LOCATION_ID/models/MODEL_ID:batchPredict"
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/LOCATION_ID/models/MODEL_ID:batchPredict" | Select-Object -Expand Content
A resposta será semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/ICN926615623331479552", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-06-19T21:28:35.302067Z", "updateTime": "2019-06-19T21:28:35.302067Z", "batchPredictDetails": { "inputConfig": { "gcsSource": { "inputUris": [ "INPUT_STORAGE_PATH" ] } } } } }
Use o ID da operação
(neste caso, ICN926615623331479552
) para receber o status da tarefa. Veja um exemplo em Como trabalhar com operações de longa duração.
Quando a operação for concluída, state
será exibido como DONE
e os
resultados serão gravados no arquivo do Google Cloud Storage especificado:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/ICN926615623331479552", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-06-19T21:28:35.302067Z", "updateTime": "2019-06-19T21:57:18.310033Z", "batchPredictDetails": { "inputConfig": { "gcsSource": { "inputUris": [ "INPUT_STORAGE_PATH" ] } }, "outputInfo": { "gcsOutputDirectory": "gs://STORAGE_BUCKET_VCM/SUBDIRECTORY/prediction-8370559933346329705-YYYY-MM-DDThh:mm:ss.sssZ" } } }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1.BatchPredictResult" } }
Veja um exemplo de arquivo de saída na seção Arquivos JSONL de saída abaixo.
Java
Antes de testar esta amostra, siga as instruções de configuração dessa linguagem na página Bibliotecas de cliente.
Node.js
Antes de testar esta amostra, siga as instruções de configuração dessa linguagem na página Bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração dessa linguagem na página Bibliotecas de cliente.
Outras linguagens
C#: Siga as Instruções de configuração do C# na página das bibliotecas de cliente e acesse a Documentação de referência do AutoML Vision para .NET.
PHP: Siga as Instruções de configuração do PHP na página das bibliotecas de cliente e acesse a Documentação de referência do AutoML Vision para PHP.
Ruby: Siga as Instruções de configuração do Ruby na página das bibliotecas de cliente e acesse a Documentação de referência do AutoML Vision para Ruby.
Arquivos JSONL de saída
Quando a tarefa de previsão em lotes é concluída, a saída da previsão é armazenada no bucket do Google Cloud Storage especificado no seu comando.
No bucket de saída (se aplicável, no diretório especificado) os arquivos image_classification_1.jsonl
, image_classification_2.jsonl
, ..., image_classification_N.jsonl
serão criados, onde N pode ser 1 e depende do número total das imagens e anotações previstas com êxito.
Uma única imagem será listada apenas uma vez com todas as suas anotações e elas nunca serão divididas entre os arquivos.
Cada arquivo JSONL conterá, por linha, uma representação JSON de um arquivo proto que une o ID da imagem: "<id_value>", seguido de uma lista de zero ou mais arquivos proto AnnotationPayload (chamados de anotações), que têm detalhes de classificação preenchidos.
Exemplo de arquivo JSONL:
image_image_classification_0.jsonl
: um único arquivo .jsonl com quatro linhas, cada
linha correspondendo a um JSON de anotação de arquivo de imagem.
Como trabalhar com operações de longa duração
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.
- operation-id: o ID da operação. Ele é o último elemento do nome da operação. Por exemplo:
- nome da operação:
projects/project-id/locations/location-id/operations/IOD5281059901324392598
- ID da operação:
IOD5281059901324392598
- nome da operação:
Método HTTP e URL:
GET https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID"
PowerShell
execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID" | Select-Object -Expand Content
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2018-10-29T15:56:29.176485Z", "updateTime": "2018-10-29T16:10:41.326614Z", "importDataDetails": {} }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
Você verá uma saída semelhante à seguinte para uma operação de modelo de criação concluída:
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-07-22T18:35:06.881193Z", "updateTime": "2019-07-22T19:58:44.972235Z", "createModelDetails": {} }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1.Model", "name": "projects/PROJECT_ID/locations/us-central1/models/MODEL_ID" } }
Go
Antes de testar esta amostra, siga as instruções de configuração dessa linguagem na página APIs e referência > Bibliotecas de cliente.
Java
Antes de testar esta amostra, siga as instruções de configuração dessa linguagem na página APIs e referência > Bibliotecas de cliente.
Node.js
Antes de testar esta amostra, siga as instruções de configuração dessa linguagem na página APIs e referência > Bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração dessa linguagem na página APIs e referência > Bibliotecas de cliente.
Outras linguagens
C#: Siga as Instruções de configuração do C# na página das bibliotecas de cliente e acesse a Documentação de referência do AutoML Vision para .NET.
PHP: Siga as Instruções de configuração do PHP na página das bibliotecas de cliente e acesse a Documentação de referência do AutoML Vision para PHP.
Ruby: Siga as Instruções de configuração do Ruby na página das bibliotecas de cliente e acesse a Documentação de referência do AutoML Vision para Ruby.