Además del procesamiento en streaming, puedes elegir el procesamiento por lotes para obtener información a partir de los datos. Este modo de procesamiento sin streaming te permite crear aplicaciones para admitir otros tipos de contenido multimedia.
Puedes procesar por lotes archivos de imagen almacenados en Cloud Storage con modelos concretos. La salida se almacena en Cloud Storage.
Modelos admitidos
Los siguientes modelos admiten el procesamiento por lotes:
- Reconocedor de etiquetas
- Reconocedor de productos
Tipos de datos admitidos
En esta página se describe cómo procesar por lotes los siguientes tipos de datos:
- Datos de imagen
Antes de empezar
- Consulte los modelos admitidos y los tipos de datos admitidos para el procesamiento por lotes que se describe en esta página.
- Si usas un modelo de reconocimiento de productos, crea un
Catalog
y unProductRecognitionIndex
para usarlos al crear un modelo de reconocimiento de productos para el procesamiento por lotes. También puede identificar un índice o un modelo de reconocedor de productos que ya tenga para usarlo. - Si usas un modelo de reconocimiento de etiquetas, crea un modelo siguiendo la guía de modelos de reconocimiento de etiquetas.
- Si usas un modelo de reconocimiento de productos, crea un
- Crea uno o varios segmentos de Cloud Storage para la entrada y la salida del procesamiento por lotes.
- Busca los archivos admitidos y súbelos a tu segmento de entrada de Cloud Storage para que se procesen.
Recorrido del usuario
Para procesar datos de imagen por lotes, sigue estos pasos generales:
Habilita la API Vision de Vertex AI.
Crea un procesador compatible (reconocedor de productos o de etiquetas).
Crea una aplicación.
Entrada: añade un nodo de entrada universal que especifique los archivos que se van a procesar en Cloud Storage.
Procesando: añade el nodo del modelo.
Salida: añade el nodo de almacenamiento de salida que especifica dónde se almacenan los datos procesados en Cloud Storage.
Crea instancias por lotes de tu aplicación. Cada instancia corresponde a una ubicación de entrada de un segmento de Cloud Storage.
Implementa la aplicación y las instancias de la aplicación.
Una vez que finalice la instancia de procesamiento por lotes, examina la salida almacenada en Cloud Storage.
Procesar imágenes por lotes
Los pasos para enviar una solicitud de procesamiento por lotes varían de un modelo a otro. Sigue las instrucciones de tu modelo de destino para procesar imágenes por lotes.
Modelo de reconocedor de productos
Usa estas muestras para procesar por lotes imágenes con un modelo de reconocedor de productos.
Consola
Crea una solicitud de procesamiento por lotes de imágenes en la Google Cloud consola.
Crear una aplicación
Abre la pestaña Aplicaciones del panel de control de Vertex AI Vision.
Haz clic en el botón
Crear.Escribe el nombre de una aplicación y elige tu región.
Haz clic en Continuar.
Elige tu método de facturación. Para obtener más información sobre la facturación mensual y la modalidad de pago por uso, consulta la página de precios.
Haz clic en Crear.
Especificar las entradas del procesamiento por lotes
En la página del creador de aplicaciones de gráficos, haz clic en el nodo Entrada universal.
En el panel lateral Entrada universal, haz clic en Seleccionar fuentes de entrada.
En la página Seleccionar fuentes de entrada, elija
Predicción por lotes.Haz clic en Continuar.
En el panel Fuentes, haga clic en Explorar en el campo del selector de ubicación para indicar dónde se encuentran sus archivos en Cloud Storage.
Opcional. Para especificar más fuentes, haz clic en Añadir un elemento y repite el paso anterior.
Haz clic en Enviar.
Añadir el modelo
En la página de creación de aplicaciones de gráficos, haga clic en el nodo del modelo Reconocedor de productos de la sección Modelos especializados.
En el panel Reconocedor de productos, haga clic en Seleccionar modelo.
Selecciona
Seleccionar modelo de reconocedor de productos.Si necesitas crear un modelo o un índice, selecciona la opción correspondiente para crear los recursos.
Elige el modelo de la lista.
Haz clic en Seleccionar.
Opcional. Modifica el umbral de confianza.
Haz clic en Aplicar configuración.
Añadir un destino de salida
En la página del creador de aplicaciones de gráficos, haz clic en el nodo del modelo Cloud Storage (Almacenamiento en Cloud) de la sección Output (Salida).
En el panel Cloud Storage (Cloud Storage), haz clic en Browse (Examinar) para seleccionar el destino de salida de la predicción por lotes en Cloud Storage.
Desplegar la aplicación
- En la página del creador de aplicaciones de gráficos, haz clic en Implementar.
REST Y LÍNEA DE COMANDOS
Sigue estos pasos para enviar tu solicitud de procesamiento por lotes de imágenes.
Crea un modelo de reconocimiento de productos con el método
projects.locations.processors.create
.Esta solicitud incluye referencias a los recursos
Catalog
yProductRecognitionIndex
. Para obtener información sobre cómo crear recursos deCatalog
yProductRecognitionIndex
, consulte la guía del modelo de reconocedor 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", } } }'
Crea una aplicación con el modelo de reconocedor de productos que acabas de crear. Esta solicitud 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'
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'
Despliega 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'
Obtener instancias de la aplicación. Esta información indica cuándo se completa el procesamiento por lotes.
En concreto, el campo
state
muestra cuándo se ha completado el procesamiento:"state": "FINISHED"
. Una vez que se haya completado la instancia, no podrás modificarla.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étodoprojects.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 ejemplo:
{ "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 reconocedor de etiquetas
Usa estas muestras para procesar por lotes imágenes con un modelo de reconocedor de etiquetas.
REST Y LÍNEA DE COMANDOS
Sigue estos pasos para enviar tu solicitud de procesamiento por lotes de imágenes.
Crea un modelo de reconocedor de etiquetas con el método
projects.locations.processors.create
.Para ello, debes especificar el nombre del recurso del modelo original alojado en la 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" } }'
Crea una aplicación con el modelo de reconocimiento de etiquetas que acabas de crear. Esta solicitud 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'
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'
Despliega 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'
Obtener instancias de la aplicación. Esta información indica cuándo se completa el procesamiento por lotes.
En concreto, el campo
state
muestra cuándo se ha completado el procesamiento:"state": "FINISHED"
. Una vez que se haya completado la instancia, no podrás modificarla.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étodoprojects.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 ejemplo:
{ "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" } }