Além do processamento de streaming, você pode escolher o processamento em lote como uma maneira de receber informações dos dados. Esse modo de processamento não 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 oferecem suporte ao 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
- Analise os modelos compatíveis e
tipos de dados compatíveis com o processamento em lote descrito nesta
página.
- Se você usar um modelo de reconhecimento de produtos, crie um
CatalogeProductRecognitionIndexpara usar ao criar um modelo de reconhecimento de produtos para processamento em lote. Como alternativa, identifique um índice ou modelo de reconhecimento de produtos atual para usar. - Se você usar um modelo de reconhecimento de tags, crie um modelo usando o guia de modelos de reconhecimento de tags.
- Se você usar um modelo de reconhecimento de produtos, crie um
- Crie um ou mais buckets do Cloud Storage para entrada e saída de processamento em lote.
- Localize os arquivos compatíveis e faça upload deles para o bucket de entrada do Cloud Storage para serem processados.
Jornada do usuário
Para processar dados de imagem em lote, siga estas etapas gerais:
Ative a API Vision da plataforma de agentes do Gemini Enterprise.
Crie um processador compatível (reconhecimento de produtos ou reconhecimento de tags).
Crie um aplicativo.
Entrada: adicione um nó de entrada universal que especifica 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 seu app. Cada instância corresponde 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 terminar, 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 modelo para modelo. Siga as instruções do modelo de destino para processar imagens em lote.
Modelo de reconhecimento de produtos
Use estes exemplos para processar imagens em lote com um modelo de reconhecimento de produtos.
Console
Crie uma solicitação de processamento em lote de imagens no Google Cloud console.
Criar um novo aplicativo
Abra a guia Aplicativos do painel da API Vision da plataforma de agentes do Gemini Enterprise.
Clique no botão Criar.
Insira um nome de app e escolha sua região.
Clique em Continuar.
Escolha sua forma de pagamento. Para mais informações sobre o pagamento conforme o uso e o 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 lateral Entrada universal, clique em Selecionar fontes de entrada.
Na página Selecionar fontes de entrada, selecione Previsão em lote.
Clique em Continuar.
No painel Fontes, 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 produtos na seção Modelos especializados.
No painel Reconhecimento de produtos, clique em Selecionar modelo.
Selecione Selecionar o modelo de reconhecimento de produtos atual.
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 Saída.
No painel Cloud Storage, clique em Procurar para selecionar o destino de saída da previsão em lote no Cloud Storage.
Implantar o aplicativo
- Na página do criador de apps de gráfico, clique em Implantar.
REST e LINHA DE CMD
Conclua as etapas a seguir para enviar sua solicitação de processamento em lote de imagens.
Crie um modelo de reconhecimento de produtos com o
projects.locations.processors.createmétodo.Essa solicitação inclui referência aos recursos
CatalogeProductRecognitionIndex. Para informações sobre como criarCatalogeProductRecognitionIndexrecursos, 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 um aplicativo com o modelo de reconhecimento de produtos recém-criado. Essa solicitação usa o
projects.locations.applications.createmétodo.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" } ] } }Request:
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 aplicativo usando o
projects.locations.applications.createApplicationInstancesmétodo.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" } ] }Request:
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'Receba instâncias de apps. Essas informações informam quando o processamento em lote é concluído.
Em particular, o campo
statemostra quando o processamento está completo:"state": "FINISHED". Depois que a instância é concluída, não é possível modificá-la.Você pode usar o
projects.locations.applications.instances.listmétodo para rastrear instâncias. Da mesma forma, para remover instâncias dessa lista, use oprojects.locations.applications.deleteApplicationInstancesmétodo.Request:
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 estes exemplos para processar imagens em lote com um modelo de reconhecimento de tags.
REST e LINHA DE CMD
Conclua as etapas a seguir para enviar sua solicitação de processamento em lote de imagens.
Crie um modelo de reconhecimento de tags com o
projects.locations.processors.createmétodo.Isso exige que você especifique o nome do recurso do modelo original hospedado 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 um aplicativo com o modelo de reconhecimento de tags recém-criado. Essa solicitação usa o
projects.locations.applications.createmétodo.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" } ] } }Request:
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 aplicativo usando o
projects.locations.applications.createApplicationInstancesmétodo.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" } ] }Request:
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'Receba instâncias de apps. Essas informações informam quando o processamento em lote é concluído.
Em particular, o campo
statemostra quando o processamento está completo:"state": "FINISHED". Depois que a instância é concluída, não é possível modificá-la.Você pode usar o
projects.locations.applications.instances.listmétodo para rastrear instâncias. Da mesma forma, para remover instâncias dessa lista, use oprojects.locations.applications.deleteApplicationInstancesmétodo.Request:
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" } }