Além do processamento por streaming, pode escolher o processamento em lote como forma de obter informações a partir dos dados. Este modo de processamento sem streaming permite-lhe criar aplicações para suportar outros tipos de conteúdo multimédia.
Pode processar em lote ficheiros de imagem armazenados no Cloud Storage com modelos selecionados. O resultado é armazenado no Cloud Storage.
Modelos suportados
Os seguintes modelos suportam o processamento em lote:
- Identificador de etiquetas
- Identificador de produtos
Tipos de dados suportados
Esta página descreve como processar em lote os seguintes tipos de dados:
- Dados da imagem
Antes de começar
- Reveja os modelos suportados e os
tipos de dados suportados para o processamento em lote descrito nesta
página.
- Se usar um modelo de reconhecimento de produtos, crie um
Catalog
e umProductRecognitionIndex
para usar quando criar um modelo de reconhecimento de produtos para processamento em lote. Em alternativa, identifique um índice do reconhecedor de produtos ou um modelo do reconhecedor de produtos existente para usar. - Se usar um modelo de reconhecimento de etiquetas, crie um modelo com o guia do modelo de reconhecimento de etiquetas.
- Se usar um modelo de reconhecimento de produtos, crie um
- Crie um ou mais contentores do Cloud Storage para a entrada e a saída do processamento em lote.
- Localize os ficheiros suportados e carregue-os para o contentor de entrada do Cloud Storage para serem processados.
Percurso do utilizador
Para processar dados de imagens em lote, conclua os seguintes passos gerais:
Ative a API Vertex AI Vision.
Crie um processador suportado (reconhecedor de produtos ou reconhecedor de etiquetas).
Crie uma aplicação.
Entrada: adicione um nó de entrada universal que especifique os ficheiros a processar no Cloud Storage.
Processamento: adicione o nó do modelo.
Saída: adicione o nó de armazenamento de saída que especifica onde os dados processados são armazenados no Cloud Storage.
Crie instâncias em lote da sua app, cada instância correspondendo a uma localização de entrada do contentor do Cloud Storage.
Implemente a app e as instâncias da app.
Após a conclusão da instância de processamento em lote, examine a saída armazenada no Cloud Storage.
Processar imagens em lote
Os passos para enviar uma solicitação de processamento em lote variam de modelo para modelo. Siga as instruções para o modelo de destino para processar imagens em lote.
Modelo do identificador de produtos
Use estes exemplos para processar imagens em lote com um modelo de reconhecimento de produtos.
Consola
Crie um pedido de processamento em lote de imagens na consola Google Cloud .
Crie uma nova aplicação
Abra o separador Aplicações do painel de controlo do Vertex AI Vision.
Clique no botão
Criar.Introduza um nome para a app e escolha a sua região.
Clique em Continuar.
Escolha o método de faturação. Para mais informações sobre o pagamento conforme o uso em comparação com a faturação mensal, consulte a página de preços.
Clique em Criar.
Especifique as entradas de processamento em lote
Na página do criador de apps de grafos, clique no nó Entrada universal.
No painel lateral Introdução universal, clique em Selecionar origens de introdução.
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 localização para indicar onde se encontram os seus ficheiros no Cloud Storage.
Opcional. Para especificar mais origens, clique em Adicione um item e repita o passo anterior.
Clique em Enviar.
Adicione o modelo
Na página do criador de apps de grafos, clique no nó do modelo Reconhecedor de produtos na secção Modelos especializados.
No painel Reconhecedor de produtos, clique em Selecionar modelo.
Selecione
Selecionar modelo de reconhecimento de produtos existente.Se precisar de 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 definições.
Adicione um destino de saída
Na página do criador de apps de grafos, clique no nó do modelo Cloud Storage na secção Output.
No painel Cloud Storage, clique em Procurar para selecionar o destino do resultado da previsão em lote no Cloud Storage.
Implemente a aplicação
- Na página do criador de apps de gráficos, clique em Implementar.
REST e linha de comandos
Conclua os passos seguintes para enviar o seu pedido de processamento em lote de imagens.
Crie um modelo de reconhecimento de produtos com o método
projects.locations.processors.create
.Este pedido inclui referências a recursos
Catalog
eProductRecognitionIndex
. Para informações sobre a criação de recursosCatalog
eProductRecognitionIndex
, consulte o guia do modelo de reconhecimento 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 uma aplicação com o modelo de reconhecimento de produtos recém-criado. Este pedido usa o método
projects.locations.applications.create
.Corpo do pedido (
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" } ] } }
Pedido:
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 da sua aplicação através do método
projects.locations.applications.createApplicationInstances
.Corpo do pedido (
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" } ] }
Pedido:
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'
Implemente a aplicação.
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'
Obtenha instâncias de apps. Estas informações indicam quando o processamento em lote estiver concluído.
Em particular, o campo
state
mostra quando o processamento está concluído:"state": "FINISHED"
. Após a conclusão da instância, não pode modificá-la.Pode usar o método
projects.locations.applications.instances.list
para acompanhar instâncias. Da mesma forma, para remover instâncias desta lista, use o métodoprojects.locations.applications.deleteApplicationInstances
.Pedido:
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 identificador de etiquetas
Use estes exemplos para processar imagens em lote com um modelo de reconhecimento de etiquetas.
REST e linha de comandos
Conclua os passos seguintes para enviar o seu pedido de processamento em lote de imagens.
Crie um modelo de reconhecimento de etiquetas com o método
projects.locations.processors.create
.Isto requer que especifique o nome do recurso do modelo original alojado na plataforma 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 uma aplicação com o modelo de reconhecimento de etiquetas recém-criado. Este pedido usa o método
projects.locations.applications.create
.Corpo do pedido (
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" } ] } }
Pedido:
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 da sua aplicação através do método
projects.locations.applications.createApplicationInstances
.Corpo do pedido (
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" } ] }
Pedido:
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'
Implemente a aplicação.
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'
Obtenha instâncias de apps. Estas informações indicam quando o processamento em lote estiver concluído.
Em particular, o campo
state
mostra quando o processamento está concluído:"state": "FINISHED"
. Após a conclusão da instância, não pode modificá-la.Pode usar o método
projects.locations.applications.instances.list
para acompanhar instâncias. Da mesma forma, para remover instâncias desta lista, use o métodoprojects.locations.applications.deleteApplicationInstances
.Pedido:
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" } }