Processamento em lote de imagens

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

Jornada do usuário

Para processar dados de imagem em lote, siga estas etapas gerais:

  1. Ative a API Vision da plataforma de agentes do Gemini Enterprise.

  2. Crie um processador compatível (reconhecimento de produtos ou reconhecimento de tags).

  3. Crie um aplicativo.

    1. Entrada: adicione um nó de entrada universal que especifica os arquivos a serem processados no Cloud Storage.

    2. Processamento: adicione o nó do modelo.

    3. Saída: adicione o nó de armazenamento de saída especificando onde os dados processados são armazenados no Cloud Storage.

  4. Crie instâncias em lote do seu app. Cada instância corresponde a um local de entrada de bucket do Cloud Storage.

  5. Implante o app e as instâncias dele.

  6. 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

  1. Abra a guia Aplicativos do painel da API Vision da plataforma de agentes do Gemini Enterprise.

    Acessar a guia "Aplicativos"

  2. Clique no botão Criar.

  3. Insira um nome de app e escolha sua região.

  4. Clique em Continuar.

  5. 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.

  6. Clique em Criar.

Especificar entradas de processamento em lote

  1. Na página do criador de apps de gráfico, clique no nó Entrada universal.

  2. No painel lateral Entrada universal, clique em Selecionar fontes de entrada.

  3. Na página Selecionar fontes de entrada, selecione Previsão em lote.

  4. Clique em Continuar.

  5. No painel Fontes, clique em Procurar no campo do seletor de local para indicar onde os arquivos estão no Cloud Storage.

  6. Opcional. Para especificar mais fontes, clique em Adicionar um item e repita a etapa anterior.

  7. Clique em Enviar.

Adicionar o modelo

  1. Na página do criador de apps de gráfico, clique no nó do modelo Reconhecimento de produtos na seção Modelos especializados.

  2. No painel Reconhecimento de produtos, clique em Selecionar modelo.

  3. 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.

  4. Escolha o modelo na lista.

  5. Clique em Selecionar.

  6. Opcional. Modifique o Limite de confiança.

  7. Clique em Aplicar configurações.

Adicionar um destino de saída

  1. Na página do criador de apps de gráfico, clique no nó do modelo Cloud Storage na seção Saída.

  2. 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

  1. 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.

  1. Crie um modelo de reconhecimento de produtos com o projects.locations.processors.create método.

    Essa solicitação inclui referência aos recursos Catalog e ProductRecognitionIndex. Para informações sobre como criar Catalog e ProductRecognitionIndex recursos, 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",
         }
       }
     }'
    
  2. Crie um aplicativo com o modelo de reconhecimento de produtos recém-criado. Essa solicitação usa o projects.locations.applications.create mé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'
    
  3. Crie instâncias do aplicativo usando o projects.locations.applications.createApplicationInstances mé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'
    
  4. 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'
    
  5. Receba instâncias de apps. Essas informações informam quando o processamento em lote é concluído.

    Em particular, o campo state mostra 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.list método para rastrear instâncias. Da mesma forma, para remover instâncias dessa lista, use o projects.locations.applications.deleteApplicationInstances mé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.

  1. Crie um modelo de reconhecimento de tags com o projects.locations.processors.create mé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"
       }
     }'
    
  2. Crie um aplicativo com o modelo de reconhecimento de tags recém-criado. Essa solicitação usa o projects.locations.applications.create mé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'
    
  3. Crie instâncias do aplicativo usando o projects.locations.applications.createApplicationInstances mé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'
    
  4. 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'
    
  5. Receba instâncias de apps. Essas informações informam quando o processamento em lote é concluído.

    Em particular, o campo state mostra 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.list método para rastrear instâncias. Da mesma forma, para remover instâncias dessa lista, use o projects.locations.applications.deleteApplicationInstances mé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"
         }
     }