Além do processamento de streaming, você pode escolher o processamento em lote como uma forma de extrair informações dos dados. Esse modo de processamento não em streaming permite criar aplicativos para oferecer suporte a outros tipos de mídia.
É possível processar em lote arquivos de imagem armazenados no Cloud Storage com modelos selecionados. A saída é armazenada no Cloud Storage.
Modelos compatíveis
Os seguintes modelos são compatíveis com o processamento em lote:
- Identificador de tags
- Identificador de produto
Tipos de dados compatíveis
Esta página descreve como processar em lote os seguintes tipos de dados:
- Dados de imagem
Antes de começar
- Consulte os modelos e os tipos de dados compatíveis para o processamento em lote descrito nesta
página.
- Se você usar um modelo de reconhecimento de produto, crie um
Catalog
e umProductRecognitionIndex
para usar ao criar um modelo de reconhecimento de produto para processamento em lote. Como alternativa, identifique um índice ou modelo de reconhecimento de produtos atual para usar. - Se você usa um modelo de reconhecedor de tags, crie um usando o guia de modelo de reconhecimento de tags.
- Se você usar um modelo de reconhecimento de produto, crie um
- Crie um ou mais buckets do Cloud Storage para processar em lote a entrada e a saída.
- Localize os arquivos compatíveis e faça upload deles no bucket de entrada do Cloud Storage para que sejam processados.
Jornada do usuário
Para processar dados de imagem em lote, siga estas etapas gerais:
Ative a API Vertex AI Vision.
Crie um processador compatível (reconhecedor de produtos ou de tags).
Crie um aplicativo.
Entrada: adicione um nó de entrada universal que especifique os arquivos a serem processados no Cloud Storage.
Processamento: adicione o nó do modelo.
Saída: adicione o nó de armazenamento de saída especificando onde os dados processados são armazenados no Cloud Storage.
Crie instâncias em lote do app, cada uma correspondendo a um local de entrada de bucket do Cloud Storage.
Implante o app e as instâncias dele.
Depois que a instância de processamento em lote for concluída, examine a saída armazenada no Cloud Storage.
Processar imagens em lote
As etapas para enviar uma solicitação de processamento em lote variam de acordo com o modelo. Siga as instruções do modelo de destino para processar imagens em lote.
Modelo de reconhecimento de produtos
Use essas amostras para processar imagens em lote com um modelo de reconhecimento de produtos.
Console
Crie uma solicitação de processamento em lote de imagens no console do Google Cloud.
Criar um novo aplicativo
Abra a guia Aplicativos do painel da Vertex AI Vision.
Clique no botão
Criar.Insira o nome de um app e escolha sua região.
Clique em Continuar.
Escolha o método de faturamento. Para mais informações sobre o pagamento por uso em vez do faturamento mensal, consulte a página de preços.
Clique em Criar.
Especificar entradas de processamento em lote
Na página do criador de apps de gráfico, clique no nó Entrada universal.
No painel Entrada universal, clique em Selecionar fontes de entrada.
Na página Selecionar origens de entrada, selecione
Previsão em lote.Clique em Continuar.
No painel Origens, clique em Procurar no campo do seletor de local para indicar onde os arquivos estão no Cloud Storage.
Opcional. Para especificar mais fontes, clique em Adicionar um item e repita a etapa anterior.
Clique em Enviar.
Adicionar o modelo
Na página do criador de apps de gráfico, clique no nó do modelo Reconhecimento de produto na seção Modelos especializados.
No painel Reconhecimento de produtos, clique em Selecionar modelo.
Selecione
Selecionar modelo de reconhecimento de produtos.Se você precisar criar um novo modelo ou índice, selecione a opção correspondente para criar os recursos.
Escolha o modelo na lista.
Clique em Selecionar.
Opcional. Modifique o Limite de confiança.
Clique em Aplicar configurações.
Adicionar um destino de saída
Na página do criador de apps de gráfico, clique no nó do modelo Cloud Storage na seção Output.
No painel Cloud Storage, clique em Procurar para selecionar o destino de saída da previsão em lote no Cloud Storage.
Implante o aplicativo
- Na página do criador de apps de gráfico, clique em Implantar.
REST e LINHA DE CMD
Siga as etapas abaixo para enviar sua solicitação de processamento de imagens em lote.
Crie um modelo de reconhecimento de produtos com o método
projects.locations.processors.create
.Essa solicitação inclui referência a recursos
Catalog
eProductRecognitionIndex
. Para saber como criar recursosCatalog
eProductRecognitionIndex
, consulte o guia do modelo do reconhecedor de produtos.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/processors?processor_id=product-recognition-model1 \ -d '{ "display_name": "DISPLAY_NAME", "model_type": PRODUCT_RECOGNIZER, "custom_processor_source_info": { "source_type": PRODUCT_RECOGNIZER, "product_recognizer_artifact": { "retail_product_recognition_index":"projects/PROJECT_ID/locations/LOCATION_ID/retailCatalogs/CATALOG_ID/retailProductRecognitionIndexes/INDEX_ID", } } }'
Crie um app com o modelo de reconhecimento de produtos recém-criado. Essa solicitação usa o método
projects.locations.applications.create
.Corpo da solicitação (
app.json
):{ "applicationConfigs": { "nodes": [ { "displayName": "Universal Input", "name": "universal-input-0", "processor": "builtin:universal-input" }, { "displayName": "Product Recognition", "name": "product-recognition", "nodeConfig": { "product_recognizer_config": { "recognition_confidence_threshold": 0.75 } }, "parents": [ { "parentNode": "universal-input-0" } ], "processor": "projects/PROJECT_ID/locations/LOCATION_ID/processors/product-recognition-model1" }, { "displayName": "Storage output", "name": "gcs-output", "nodeConfig": { "gcs_output_config": { "gcs_path":"gs://product_recognizer_app_output" } }, "parents": [ { "parentNode": "product-recognition" } ], "processor": "builtin:gcs-output" } ] } }
Solicitação:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @app.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications?application_id=product-recognition-app'
Crie instâncias do seu app usando o método
projects.locations.applications.createApplicationInstances
.Corpo da solicitação (
instances.json
):{ "applicationInstances": [ { "instance": { "instanceType": "BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://product_recognition_input" } ] }, "instanceId": "instance1" }, { "instance": { "instanceType":"BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://product_recognition_input2" } ] }, "instanceId": "instance2" } ] }
Solicitação:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @instances.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app:createApplicationInstances'
Implante o aplicativo.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{}' \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app:deploy'
Receber instâncias de apps. Essas informações informam quando o processamento em lote é concluído.
Especificamente, o campo
state
mostra quando o processamento é concluído:"state": "FINISHED"
. Depois que a instância for concluída, não será possível modificá-la.Você pode usar o método
projects.locations.applications.instances.list
para rastrear instâncias. Da mesma forma, para remover instâncias dessa lista, use o métodoprojects.locations.applications.deleteApplicationInstances
.Solicitação:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app/instances'
Exemplo de resposta:
{ "instances": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app/instances/instance1", "createTime": "2023-03-30T18:30:51.991004265Z", "inputResources": [ { "inputResource": "gs://product_recognition_input", "consumerNode": "universal-input-0", "dataType": "IMAGE" } ], "outputResources": [ { "outputResource": "gs://product_recognition_output/instance1", "producerNode": "product-recognition", "autogen": true } ], "updateTime": "2023-04-18T04:58:18.592092259Z", "state": "FINISHED", "instanceType": "BATCH_PREDICTION" } }
Modelo de reconhecimento de tags
Use esses exemplos para processar imagens em lote com um modelo de reconhecimento de tags.
REST e LINHA DE CMD
Siga as etapas abaixo para enviar sua solicitação de processamento de imagens em lote.
Crie um modelo de reconhecimento de tags com o método
projects.locations.processors.create
.Para isso, é necessário especificar o nome do recurso do modelo original hospedado na plataforma da Vertex AI (
vertex_model
).curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/processors?processor_id=tag-recognition-model1 \ -d '{ "display_name": "DISPLAY_NAME", "model_type": TAG_RECOGNIZER, "custom_processor_source_info": { "source_type": VERTEX_AUTOML, "vertex_model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID" } }'
Crie um aplicativo com o modelo de reconhecimento de tags recém-criado. Essa solicitação usa o método
projects.locations.applications.create
.Corpo da solicitação (
app.json
):{ "applicationConfigs": { "nodes": [ { "displayName": "Universal Input", "name": "universal-input-0", "processor": "builtin:universal-input" }, { "displayName": "Tag Recognition", "name": "tag-recognition", "nodeConfig": { "tag_recognizer_config": { "tag_parsing_config": { "entity_parsing_configs": [ { "entity_class": "price", "regex": "\\$\\d+\\.\\d{2}", "entity_matching_strategy": "MAX_OVERLAP_AREA" } ] }, "entity_detection_confidence_threshold": 0.0 } }, "parents": [ { "parentNode": "universal-input-0" } ], "processor": "projects/PROJECT_ID/locations/LOCATION_ID/processors/tag-recognition-model1" }, { "displayName": "Storage output", "name": "gcs-output", "nodeConfig": { "gcs_output_config": { "gcs_path": "gs://tag_recognizer_app_output" } }, "parents": [ { "parentNode": "tag-recognition" } ], "processor": "builtin:gcs-output" } ] } }
Solicitação:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @app.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications?application_id=tag-recognition-app'
Crie instâncias do seu app usando o método
projects.locations.applications.createApplicationInstances
.Corpo da solicitação (
instances.json
):{ "applicationInstances": [ { "instance": { "instanceType": "BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://tag_recognition_input" } ] }, "instanceId": "instance1" }, { "instance": { "instanceType":"BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://tag_recognition_input2" } ] }, "instanceId": "instance2" } ] }
Solicitação:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @instances.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app:createApplicationInstances'
Implante o aplicativo.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{}' \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app:deploy'
Receber instâncias de apps. Essas informações informam quando o processamento em lote é concluído.
Especificamente, o campo
state
mostra quando o processamento é concluído:"state": "FINISHED"
. Depois que a instância for concluída, não será possível modificá-la.Você pode usar o método
projects.locations.applications.instances.list
para rastrear instâncias. Da mesma forma, para remover instâncias dessa lista, use o métodoprojects.locations.applications.deleteApplicationInstances
.Solicitação:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app/instances'
Exemplo de resposta:
{ "instances": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app/instances/instance1", "createTime": "2023-03-30T18:30:51.991004265Z", "inputResources": [ { "inputResource": "gs://tag_recognition_input", "consumerNode": "universal-input-0", "dataType": "IMAGE" } ], "outputResources": [ { "outputResource": "gs://tag_recognition_output/instance1", "producerNode": "tag-recognition", "autogen": true } ], "updateTime": "2023-04-18T04:58:18.592092259Z", "state": "FINISHED", "instanceType": "BATCH_PREDICTION" } }