En plus du traitement par flux, vous pouvez choisir le traitement par lot pour obtenir des informations à partir des données. Ce mode de traitement non en streaming vous permet de créer des applications compatibles avec d'autres types de médias.
Vous pouvez traiter par lot des fichiers image stockés dans Cloud Storage avec certains modèles. La sortie est stockée dans Cloud Storage.
Modèles compatibles
Les modèles suivants sont compatibles avec le traitement par lot:
- Outil de reconnaissance de tags
- Reconnaissance de produits
Types de données acceptés
Cette page explique comment traiter par lot les types de données suivants:
- Données d'image
Avant de commencer
- Consultez les modèles compatibles et les types de données compatibles pour le traitement par lot décrit sur cette page.
- Si vous utilisez un modèle de reconnaissance de produits, créez un
Catalog
et unProductRecognitionIndex
à utiliser lorsque vous créez un modèle de reconnaissance de produits pour le traitement par lot. Vous pouvez également identifier un index de reconnaissance de produits ou un modèle de reconnaissance de produits existant à utiliser. - Si vous utilisez un modèle de reconnaissance de tags, créez-en un à l'aide du guide du modèle de reconnaissance de tags.
- Si vous utilisez un modèle de reconnaissance de produits, créez un
- Créez un ou plusieurs buckets Cloud Storage pour le traitement par lot des entrées et des sorties.
- Recherchez les fichiers compatibles et importez-les dans votre bucket d'entrée Cloud Storage pour les traiter.
Parcours utilisateur
Pour traiter par lot les données d'image, procédez comme suit:
Activez l'API Vertex AI Vision.
Créez un outil de traitement compatible (outil de reconnaissance de produits ou de tags).
Créez une application.
Entrée: ajoutez un nœud d'entrée universel qui spécifie les fichiers à traiter dans Cloud Storage.
Traitement: ajoutez votre nœud de modèle.
Sortie: ajoutez le nœud de stockage de sortie en spécifiant l'emplacement où les données traitées sont stockées dans Cloud Storage.
Créez des instances par lot de votre application, chaque instance correspondant à un emplacement d'entrée de bucket Cloud Storage.
Déployez l'application et ses instances.
Une fois l'instance de traitement par lot terminée, examinez la sortie stockée dans Cloud Storage.
Traiter des images par lot
La procédure d'envoi d'une requête de traitement par lot varie d'un modèle à l'autre. Suivez les instructions de votre modèle cible pour traiter les images par lot.
Modèle de reconnaissance de produits
Utilisez ces exemples pour traiter des images par lot à l'aide d'un modèle de reconnaissance de produits.
Console
Créez une requête de traitement par lot d'images dans la console Google Cloud .
Créer une application
Ouvrez l'onglet Applications du tableau de bord Vertex AI Vision.
Cliquez sur le bouton
Créer.Saisissez le nom d'une application et choisissez votre région.
Cliquez sur Continuer.
Choisissez votre mode de facturation. Pour en savoir plus sur le paiement à l'utilisation et la facturation mensuelle, consultez la page des tarifs.
Cliquez sur Créer.
Spécifier les entrées de traitement par lot
Sur la page de l'outil de création d'applications graphiques, cliquez sur le nœud Entrée universelle.
Dans le volet Saisie universelle latéral, cliquez sur Sélectionner des sources de saisie.
Sur la page Sélectionner des sources d'entrée, sélectionnez
Prédiction par lots.Cliquez sur Continuer.
Dans le volet Sources, cliquez sur Parcourir dans le champ du sélecteur d'emplacement pour indiquer l'emplacement de vos fichiers dans Cloud Storage.
Facultatif. Pour spécifier d'autres sources, cliquez sur Ajouter un élément et répétez l'étape précédente.
Cliquez sur Envoyer.
Ajouter le modèle
Sur la page de l'outil de création d'applications de graphiques, cliquez sur le nœud de modèle Détecteur de produits dans la section Modèles spécialisés.
Dans le volet Outil de reconnaissance de produits, cliquez sur Sélectionner un modèle.
Sélectionnez
Sélectionner un modèle de reconnaissance de produits existant.Si vous devez créer un modèle ou un indice, sélectionnez l'option correspondante pour créer les ressources.
Choisissez le modèle dans la liste.
Cliquez sur Sélectionner.
Facultatif. Modifiez le seuil de confiance.
Cliquez sur Appliquer les paramètres.
Ajouter une destination de sortie
Sur la page de l'outil de création d'applications graphiques, cliquez sur le nœud de modèle Cloud Storage dans la section Sortie.
Dans le volet Cloud Storage, cliquez sur Parcourir pour sélectionner la destination de sortie de vos prédictions par lot dans Cloud Storage.
Déployer l'application
- Sur la page de l'outil de création d'applications graphiques, cliquez sur Déployer.
API REST et ligne de commande
Pour envoyer votre requête de traitement par lot d'images, procédez comme suit :
Créez un modèle de reconnaissance de produits à l'aide de la méthode
projects.locations.processors.create
.Cette requête inclut une référence aux ressources
Catalog
etProductRecognitionIndex
. Pour en savoir plus sur la création de ressourcesCatalog
etProductRecognitionIndex
, consultez le guide du modèle de reconnaissance des produits.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", } } }'
Créez une application avec le modèle de reconnaissance de produits nouvellement créé. Cette requête utilise la méthode
projects.locations.applications.create
.Corps de la requête (
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" } ] } }
Requête :
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'
Créez des instances de votre application à l'aide de la méthode
projects.locations.applications.createApplicationInstances
.Corps de la requête (
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" } ] }
Requête :
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'
Déployez l'application.
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'
Obtenez des instances d'application. Ces informations vous indiquent quand le traitement par lot est terminé.
En particulier, le champ
state
indique quand le traitement est terminé:"state": "FINISHED"
. Une fois l'instance terminée, vous ne pouvez plus la modifier.Vous pouvez utiliser la méthode
projects.locations.applications.instances.list
pour suivre les instances. De même, pour supprimer des instances de cette liste, utilisez la méthodeprojects.locations.applications.deleteApplicationInstances
.Requête :
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'
Exemple de réponse:
{ "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" } }
Modèle de reconnaissance de tags
Utilisez ces exemples pour traiter des images par lot avec un modèle de reconnaissance de tags.
API REST et ligne de commande
Pour envoyer votre requête de traitement par lot d'images, procédez comme suit :
Créez un modèle de reconnaissance de tags avec la méthode
projects.locations.processors.create
.Pour ce faire, vous devez spécifier le nom de la ressource du modèle d'origine hébergé sur la plate-forme 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" } }'
Créez une application avec le modèle de reconnaissance de tags nouvellement créé. Cette requête utilise la méthode
projects.locations.applications.create
.Corps de la requête (
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" } ] } }
Requête :
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'
Créez des instances de votre application à l'aide de la méthode
projects.locations.applications.createApplicationInstances
.Corps de la requête (
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" } ] }
Requête :
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'
Déployez l'application.
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'
Obtenez des instances d'application. Ces informations vous indiquent quand le traitement par lot est terminé.
En particulier, le champ
state
indique quand le traitement est terminé:"state": "FINISHED"
. Une fois l'instance terminée, vous ne pouvez plus la modifier.Vous pouvez utiliser la méthode
projects.locations.applications.instances.list
pour suivre les instances. De même, pour supprimer des instances de cette liste, utilisez la méthodeprojects.locations.applications.deleteApplicationInstances
.Requête :
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'
Exemple de réponse:
{ "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" } }