Procesamiento por lotes de imágenes

Además del procesamiento de transmisión, puedes elegir el procesamiento por lotes como una forma de obtener información de los datos. Este modo de procesamiento no continuo te permite compilar aplicaciones para admitir otros tipos de contenido multimedia.

Puedes procesar por lotes archivos de imagen almacenados en Cloud Storage con modelos seleccionados. El resultado se almacena en Cloud Storage.

Modelos compatibles

Los siguientes modelos admiten el procesamiento por lotes:

  • Reconocimiento de etiquetas
  • Identificador de productos

Tipos de datos admitidos

En esta página, se describe cómo procesar por lotes los siguientes tipos de datos:

  • Datos de imágenes

Antes de comenzar

Recorrido del usuario

Para procesar datos de imágenes por lotes, completa los siguientes pasos generales:

  1. Habilita la API de Vertex AI Vision.

  2. Crea un procesador compatible (reconocedor de productos o de etiquetas).

  3. Crea una aplicación.

    1. Entrada: Agrega un nodo de entrada universal que especifique los archivos que se procesarán en Cloud Storage.

    2. Procesamiento: Agrega tu nodo de modelo.

    3. Salida: Agrega el nodo de almacenamiento de salida que especifica dónde se almacenan los datos procesados en Cloud Storage.

  4. Crea instancias por lotes de tu app, cada una de las cuales corresponde a una ubicación de entrada de un bucket de Cloud Storage.

  5. Implementa la app y las instancias de la app.

  6. Una vez que finalice la instancia de procesamiento por lotes, examina el resultado almacenado en Cloud Storage.

Procesa imágenes por lotes

Los pasos para enviar una solicitud de procesamiento por lotes varían según el modelo. Sigue las instrucciones de tu modelo de destino para procesar imágenes por lotes.

Modelo de reconocedor de productos

Usa estos ejemplos para procesar imágenes por lotes con un modelo de reconocedor de productos.

Console

Crea una solicitud de procesamiento por lotes de imágenes en la consola de Google Cloud .

Cómo crear una aplicación nueva

  1. Abre la pestaña Aplicaciones del panel de Vertex AI Vision.

    Ve a la pestaña Aplicaciones.

  2. Haz clic en el botón Crear.

  3. Ingresa un nombre de app y elige tu región.

  4. Haz clic en Continuar.

  5. Elige tu método de facturación. Para obtener más información sobre el pago por uso en comparación con la facturación mensual, consulta la página de precios.

  6. Haz clic en Crear.

Especifica las entradas de procesamiento por lotes

  1. En la página del compilador de apps de gráficos, haz clic en el nodo Universal input.

  2. En el panel lateral Universal input, haz clic en Select input sources.

  3. En la página Seleccionar fuentes de entrada, selecciona Predicción por lotes.

  4. Haz clic en Continuar.

  5. En el panel Fuentes, haz clic en Explorar en el campo del selector de ubicación para indicar dónde se encuentran tus archivos en Cloud Storage.

  6. Opcional. Para especificar más fuentes, haz clic en Agregar un elemento y repite el paso anterior.

  7. Haz clic en Enviar.

Agrega el modelo

  1. En la página del compilador de apps de gráficos, haz clic en el nodo del modelo Product recognizer en la sección Specialized models.

  2. En el panel Reconocedor de productos, haz clic en Seleccionar modelo.

  3. Selecciona Seleccionar un modelo de reconocedor de productos existente.

    Si necesitas crear un modelo o índice nuevo, selecciona la opción correspondiente para crear los recursos.

  4. Elige el modelo de la lista.

  5. Haz clic en Seleccionar.

  6. Opcional. Modifica el Umbral de confianza.

  7. Haz clic en Aplicar configuración.

Agrega un destino de salida

  1. En la página del compilador de apps de gráficos, haz clic en el nodo del modelo Cloud Storage en la sección Resultado.

  2. En el panel Cloud Storage, haz clic en Explorar para seleccionar el destino de salida de la predicción por lotes en Cloud Storage.

Implemente la aplicación

  1. En la página del compilador de apps de gráficos, haz clic en Implementar.

LÍNEA DE REST Y CMD

Completa los siguientes pasos para enviar tu solicitud de procesamiento por lotes de imágenes.

  1. Crea un modelo de reconocedor de productos con el método projects.locations.processors.create.

    Esta solicitud incluye referencias a recursos Catalog y ProductRecognitionIndex. Para obtener información sobre cómo crear recursos Catalog y ProductRecognitionIndex, consulta la guía del modelo del identificador de productos.

    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. Crea una aplicación con el modelo de reconocedor de productos recién creado. En esta solicitud, se usa el método projects.locations.applications.create.

    Cuerpo de la solicitud (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"
          }
        ]
      }
    }
    

    Solicitud:

    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. Crea instancias de tu aplicación con el método projects.locations.applications.createApplicationInstances.

    Cuerpo de la solicitud (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"
         }
       ]
     }
    

    Solicitud:

    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 la aplicación.

     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. Obtén instancias de app. Esta información te indica cuándo se completa el procesamiento por lotes.

    En particular, el campo state muestra cuándo se completa el procesamiento: "state": "FINISHED". Una vez que se complete la instancia, no podrás modificarlo.

    Puedes usar el método projects.locations.applications.instances.list para hacer un seguimiento de las instancias. Del mismo modo, para quitar instancias de esta lista, usa el método projects.locations.applications.deleteApplicationInstances.

    Solicitud:

     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'
    

    Respuesta de muestra:

     {
       "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 reconocimiento de etiquetas

Usa estas muestras para procesar imágenes por lotes con un modelo de reconocimiento de etiquetas.

LÍNEA DE REST Y CMD

Completa los siguientes pasos para enviar tu solicitud de procesamiento por lotes de imágenes.

  1. Crea un modelo de reconocimiento de etiquetas con el método projects.locations.processors.create.

    Para ello, debes especificar el nombre del recurso del modelo original almacenado en la plataforma de 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. Crea una aplicación con el modelo de reconocimiento de etiquetas recién creado. En esta solicitud, se usa el método projects.locations.applications.create.

    Cuerpo de la solicitud (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"
           }
         ]
       }
     }
    

    Solicitud:

    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. Crea instancias de tu aplicación con el método projects.locations.applications.createApplicationInstances.

    Cuerpo de la solicitud (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"
         }
       ]
     }
    

    Solicitud:

    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 la aplicación.

     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. Obtén instancias de app. Esta información te indica cuándo se completa el procesamiento por lotes.

    En particular, el campo state muestra cuándo se completa el procesamiento: "state": "FINISHED". Una vez que se complete la instancia, no podrás modificarlo.

    Puedes usar el método projects.locations.applications.instances.list para hacer un seguimiento de las instancias. Del mismo modo, para quitar instancias de esta lista, usa el método projects.locations.applications.deleteApplicationInstances.

    Solicitud:

     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'
    

    Respuesta de muestra:

     {
       "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"
         }
     }