Processamento em lote de imagens

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

Jornada do usuário

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

  1. Ative a API Vertex AI Vision.

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

  3. Crie um aplicativo.

    1. Entrada: adicione um nó de entrada universal que especifique 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 app, cada uma correspondendo 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 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

  1. Abra a guia Aplicativos do painel da Vertex AI Vision.

    Acesse a guia "Aplicativos"

  2. Clique no botão Criar.

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

  4. Clique em Continuar.

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

  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 Entrada universal, clique em Selecionar fontes de entrada.

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

  4. Clique em Continuar.

  5. No painel Origens, 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 produto na seção Modelos especializados.

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

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

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

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

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

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

    Essa solicitação inclui referência a recursos Catalog e ProductRecognitionIndex. Para saber como criar recursos Catalog e ProductRecognitionIndex, 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",
         }
       }
     }'
    
  2. 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'
    
  3. 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'
    
  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. 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étodo projects.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.

  1. 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"
       }
     }'
    
  2. 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'
    
  3. 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'
    
  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. 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étodo projects.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"
         }
     }