Processamento em lote de imagens

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

Percurso do utilizador

Para processar dados de imagens em lote, conclua os seguintes passos gerais:

  1. Ative a API Vertex AI Vision.

  2. Crie um processador suportado (reconhecedor de produtos ou reconhecedor de etiquetas).

  3. Crie uma aplicação.

    1. Entrada: adicione um nó de entrada universal que especifique os ficheiros a processar no Cloud Storage.

    2. Processamento: adicione o nó do modelo.

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

  4. Crie instâncias em lote da sua app, cada instância correspondendo a uma localização de entrada do contentor do Cloud Storage.

  5. Implemente a app e as instâncias da app.

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

  1. Abra o separador Aplicações do painel de controlo do Vertex AI Vision.

    Aceda ao separador Aplicações

  2. Clique no botão Criar.

  3. Introduza um nome para a app e escolha a sua região.

  4. Clique em Continuar.

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

  6. Clique em Criar.

Especifique as entradas de processamento em lote

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

  2. No painel lateral Introdução universal, clique em Selecionar origens de introdução.

  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 localização para indicar onde se encontram os seus ficheiros no Cloud Storage.

  6. Opcional. Para especificar mais origens, clique em Adicione um item e repita o passo anterior.

  7. Clique em Enviar.

Adicione o modelo

  1. Na página do criador de apps de grafos, clique no nó do modelo Reconhecedor de produtos na secção Modelos especializados.

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

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

  4. Escolha o modelo na lista.

  5. Clique em Selecionar.

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

  7. Clique em Aplicar definições.

Adicione um destino de saída

  1. Na página do criador de apps de grafos, clique no nó do modelo Cloud Storage na secção Output.

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

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

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

    Este pedido inclui referências a recursos Catalog e ProductRecognitionIndex. Para informações sobre a criação de recursos Catalog e ProductRecognitionIndex, 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 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'
    
  3. 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'
    
  4. 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'
    
  5. 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étodo projects.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.

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