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 que no es de transmisión te permite compilar aplicaciones para admitir otros tipos de medios.
Puedes procesar por lotes archivos de imágenes 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 procesas por lotes los siguientes tipos de datos:
- Datos de imágenes
Antes de comenzar
- Revisa los modelos admitidos y
los tipos de datos admitidos para el procesamiento por lotes que se describe en esta
página.
- Si usas un identificador de productos, crea un
CatalogyProductRecognitionIndexpara usar cuando crees un modelo de identificador de productos para el procesamiento por lotes. Como alternativa, identifica un índice de identificador de productos o un modelo de identificador de productos existente para usar. - Si usas un modelo de reconocimiento de etiquetas, crea un modelo con la guía del modelo de reconocimiento de etiquetas.
- Si usas un identificador de productos, crea un
- Crea uno o más buckets de Cloud Storage para la entrada y la salida del procesamiento por lotes.
- Ubica los archivos admitidos y súbelos a tu bucket de entrada de Cloud Storage para que se procesen.
Recorrido del usuario
Para procesar por lotes datos de imágenes, completa los siguientes pasos generales:
Habilita la API de Gemini Enterprise Agent Platform Vision.
Crea un procesador compatible (identificador de productos o reconocimiento de etiquetas).
Crea una aplicación.
Entrada: Agrega un nodo de entrada universal que especifique los archivos que se procesarán en Cloud Storage.
Procesamiento: Agrega el nodo del modelo.
Salida: Agrega el nodo de almacenamiento de salida que especifica dónde se almacenan los datos procesados en Cloud Storage.
Crea instancias por lotes de tu app. Cada instancia corresponde a una ubicación de entrada del bucket de Cloud Storage.
Implementa la app y las instancias de la app.
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 de un modelo a otro. Sigue las instrucciones para tu modelo de destino para procesar imágenes por lotes.
Modelo de identificador de productos
Usa estos ejemplos para procesar imágenes por lotes con un modelo de identificador de productos.
Console
Crea una solicitud de procesamiento por lotes de imágenes en la Google Cloud consola.
Crea una aplicación nueva
Abre la pestaña Applications del panel de Gemini Enterprise Agent Platform Vision.
Haz clic en el botón Create.
Ingresa un nombre de app y elige tu región.
Haz clic en Continuar.
Elige tu forma de facturación. Para obtener más información sobre la facturación mensual y la facturación por uso, consulta la página de precios.
Haz clic en Crear.
Especifica las entradas de procesamiento por lotes
En la página del compilador de apps de gráficos, haz clic en el nodo Universal input.
En el panel lateral Universal input, haz clic en Select input sources.
En la página Select input sources, selecciona Batch prediction.
Haz clic en Continuar.
En el panel Sources, haz clic en Browse en el campo del selector de ubicación para indicar dónde están tus archivos en Cloud Storage.
Es opcional. Para especificar más fuentes, haz clic en Add an item y repite el paso anterior.
Haz clic en Enviar.
Agrega el modelo
En la página del compilador de apps de gráficos, haz clic en el nodo del modelo Product recognizer de la sección Specialized models.
En el panel Product recognizer, haz clic en Select model.
Selecciona Select existing product recognizer model.
Si necesitas crear un modelo o un índice nuevos, selecciona la opción correspondiente para crear los recursos.
Elige el modelo de la lista.
Haz clic en Seleccionar.
Es opcional. Modifica el Confidence threshold.
Selecciona Aplicar configuración.
Agrega un destino de salida
En la página del compilador de apps de gráficos, haz clic en el nodo del modelo Cloud Storage de la sección Output.
En el panel Cloud Storage, haz clic en Browse para seleccionar el destino de salida de la predicción por lotes en Cloud Storage.
Implemente la aplicación
- En la página del compilador de apps de gráficos, haz clic en Deploy.
LÍNEA DE REST Y CMD
Completa los siguientes pasos para enviar tu solicitud de procesamiento por lotes de imágenes.
Crea un modelo de identificador de productos con el
projects.locations.processors.createmétodo.Esta solicitud incluye referencias a los recursos
CatalogyProductRecognitionIndex. Para obtener información sobre cómo crearCatalogyProductRecognitionIndexrecursos, consulta la guía del modelo de 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", } } }'Crea una aplicación con el modelo de identificador de productos recién creado. En esta solicitud, se usa el
projects.locations.applications.createmétodo.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" } ] } }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'Crea instancias de tu aplicación con el
projects.locations.applications.createApplicationInstancesmétodo.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" } ] }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'Implementa 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'Obtén instancias de la app. Esta información te indica cuándo se completa el procesamiento por lotes.
En particular, el campo
statemuestra cuándo se completa el procesamiento:"state": "FINISHED". Una vez que se completa la instancia, no puedes modificarla.Puedes usar el
projects.locations.applications.instances.listmétodo para hacer un seguimiento de las instancias. Del mismo modo, para quitar instancias de esta lista, usa elprojects.locations.applications.deleteApplicationInstancesmé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'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 estos ejemplos 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.
Crea un modelo de reconocimiento de etiquetas con el
projects.locations.processors.createmétodo.Esto requiere que especifiques el nombre del recurso del modelo original alojado 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" } }'Crea una aplicación con el modelo de reconocimiento de etiquetas recién creado. En esta solicitud, se usa el
projects.locations.applications.createmétodo.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" } ] } }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'Crea instancias de tu aplicación con el
projects.locations.applications.createApplicationInstancesmétodo.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" } ] }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'Implementa 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'Obtén instancias de la app. Esta información te indica cuándo se completa el procesamiento por lotes.
En particular, el campo
statemuestra cuándo se completa el procesamiento:"state": "FINISHED". Una vez que se completa la instancia, no puedes modificarla.Puedes usar el
projects.locations.applications.instances.listmétodo para hacer un seguimiento de las instancias. Del mismo modo, para quitar instancias de esta lista, usa elprojects.locations.applications.deleteApplicationInstancesmé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'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" } }