Elaborazione batch delle immagini

Oltre all'elaborazione in streaming, puoi scegliere l'elaborazione batch come metodo per recuperare informazioni dai dati. Questa modalità di elaborazione non in streaming ti consente di creare applicazioni per supportare altri tipi di contenuti multimediali.

Puoi elaborare in batch i file immagine archiviati in Cloud Storage con modelli selezionati. L'output viene archiviato in Cloud Storage.

Modelli supportati

I seguenti modelli supportano l'elaborazione collettiva:

  • Riconoscimento tag
  • Riconoscimento dei prodotti

Tipi di dati supportati

Questa pagina descrive come elaborare in batch i seguenti tipi di dati:

  • Dati dell'immagine

Prima di iniziare

Percorso dell'utente

Per elaborare in batch i dati delle immagini, segui questi passaggi generali:

  1. Abilita l'API Vertex AI Vision.

  2. Crea un elaboratore supportato (Riconoscimento dei prodotti o Riconosci tag).

  3. Crea un'applicazione.

    1. Input: aggiungi un nodo di input universale che specifichi i file da elaborare in Cloud Storage.

    2. Elaborazione: aggiungi il nodo del modello.

    3. Output: aggiungi il nodo di archiviazione di output specificando dove vengono memorizzati i dati elaborati in Cloud Storage.

  4. Crea istanze batch della tua app, ciascuna corrispondente a una posizione di input del bucket Cloud Storage.

  5. Esegui il deployment dell'app e delle istanze dell'app.

  6. Al termine dell'istanza di elaborazione batch, esamina l'output archiviato in Cloud Storage.

Elaborare le immagini in batch

I passaggi per inviare una richiesta di elaborazione batch variano da un modello all'altro. Segui le istruzioni per il modello di destinazione per elaborare le immagini in batch.

Modello di riconoscimento dei prodotti

Utilizza questi esempi per elaborare in batch le immagini con un modello di riconoscimento dei prodotti.

Console

Crea una richiesta di elaborazione collettiva delle immagini nella console Google Cloud.

Creare una nuova applicazione

  1. Apri la scheda Applicazioni della dashboard di Vertex AI Vision.

    Vai alla scheda Applicazioni

  2. Fai clic sul pulsante Crea.

  3. Inserisci il nome di un'app e scegli la tua regione.

  4. Fai clic su Continua.

  5. Scegli il metodo di fatturazione. Per ulteriori informazioni sul pagamento post-pagamento rispetto alla fatturazione mensile, consulta la pagina dei prezzi.

  6. Fai clic su Crea.

Specificare gli input per l'elaborazione batch

  1. Nella pagina del generatore di app di grafici, fai clic sul nodo Input universale.

  2. Nel riquadro laterale Input universale, fai clic su Seleziona origini dati.

  3. Nella pagina Seleziona le origini di input, seleziona Predizione batch.

  4. Fai clic su Continua.

  5. Nel riquadro Origini, fai clic su Sfoglia nel campo del selettore di posizione per indicare dove si trovano i file in Cloud Storage.

  6. Facoltativo. Per specificare altre origini, fai clic su Aggiungi un elemento e ripeti il passaggio precedente.

  7. Fai clic su Invia.

Aggiungi il modello

  1. Nella pagina del Graph App Builder, fai clic sul nodo del modello Riconoscimento dei prodotti nella sezione Modelli specializzati.

  2. Nel riquadro Riconoscimento dei prodotti, fai clic su Seleziona modello.

  3. Seleziona Seleziona un modello esistente di riconoscimento dei prodotti.

    Se devi creare un nuovo modello o indice, seleziona l'opzione corrispondente per creare le risorse.

  4. Scegli il modello dall'elenco.

  5. Fai clic su Seleziona.

  6. Facoltativo. Modifica la soglia di confidenza.

  7. Fai clic su Applica impostazioni.

Aggiungere una destinazione di output

  1. Nella pagina del generatore di app di grafo, fai clic sul nodo del modello Cloud Storage nella sezione Output.

  2. Nel riquadro Cloud Storage, fai clic su Sfoglia per selezionare la destinazione di output della previsione batch in Cloud Storage.

Esegui il deployment dell'applicazione

  1. Nella pagina del generatore di app di grafo, fai clic su Esegui il deployment.

REST e riga di comando

Completa i seguenti passaggi per inviare la richiesta di elaborazione collettiva delle immagini.

  1. Crea un modello di riconoscimento dei prodotti con il metodo projects.locations.processors.create.

    Questa richiesta include un riferimento alle risorse Catalog e ProductRecognitionIndex. Per informazioni sulla creazione di risorse Catalog e ProductRecognitionIndex, consulta la guida al modello di riconoscimento dei prodotti.

    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 un'applicazione con il modello di riconoscimento dei prodotti appena creato. Questa richiesta utilizza il metodo projects.locations.applications.create.

    Corpo della richiesta (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"
          }
        ]
      }
    }
    

    Richiesta:

    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 istanze dell'applicazione utilizzando il metodo projects.locations.applications.createApplicationInstances.

    Corpo della richiesta (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"
         }
       ]
     }
    

    Richiesta:

    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. Esegui il deployment dell'applicazione.

     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. Ottieni le istanze dell'app. Queste informazioni ti indicano quando viene completata l'elaborazione collettiva.

    In particolare, il campo state mostra quando l'elaborazione è completata: "state": "FINISHED". Una volta completata l'istanza, non puoi modificarla.

    Puoi utilizzare il metodo projects.locations.applications.instances.list per monitorare le istanze. Analogamente, per rimuovere istanze da questo elenco, utilizza il metodo projects.locations.applications.deleteApplicationInstances.

    Richiesta:

     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'
    

    Risposta di esempio:

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

Modello di riconoscimento tag

Utilizza questi esempi per elaborare in batch le immagini con un modello di riconoscimento tag.

REST e riga di comando

Completa i seguenti passaggi per inviare la richiesta di elaborazione collettiva delle immagini.

  1. Crea un modello di riconoscimento dei tag con il metodo projects.locations.processors.create.

    Per farlo, devi specificare il nome della risorsa del modello originale ospitato nella piattaforma 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 un'applicazione con il modello di riconoscimento tag appena creato. Questa richiesta utilizza il metodo projects.locations.applications.create.

    Corpo della richiesta (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"
           }
         ]
       }
     }
    

    Richiesta:

    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 istanze dell'applicazione utilizzando il metodo projects.locations.applications.createApplicationInstances.

    Corpo della richiesta (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"
         }
       ]
     }
    

    Richiesta:

    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. Esegui il deployment dell'applicazione.

     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. Ottieni le istanze dell'app. Queste informazioni ti indicano quando viene completata l'elaborazione collettiva.

    In particolare, il campo state mostra quando l'elaborazione è completata: "state": "FINISHED". Una volta completata l'istanza, non puoi modificarla.

    Puoi utilizzare il metodo projects.locations.applications.instances.list per monitorare le istanze. Analogamente, per rimuovere istanze da questo elenco, utilizza il metodo projects.locations.applications.deleteApplicationInstances.

    Richiesta:

     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'
    

    Risposta di esempio:

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