Creazione di un'applicazione

Questa pagina mostra come creare un'app e combinare componenti, come flussi di input, modelli per l'analisi e warehouse per l'archiviazione, da utilizzare sulla piattaforma dell'app Vision di Gemini Enterprise Agent Platform.

Per creare un'app, devi considerare le origini dati, l'analisi che vuoi eseguire e il modo in cui vuoi archiviare i risultati. Un'app end-to-end può avere moduli diversi a seconda del caso d'uso. Di conseguenza, il modo in cui crei un'app dipenderà dal tuo obiettivo.

Prima di iniziare, valuta il tuo caso d'uso e il tuo obiettivo dal punto di vista dell'AI responsabile e considera l'impatto che i tuoi modelli e le tue applicazioni potrebbero avere sugli utenti finali in caso di errore. Scopri di più sui primi passi per valutare l'equità del tuo caso d'uso. Assicurati inoltre che il tuo utilizzo di Gemini Enterprise Agent Platform Vision sia conforme ai Termini di servizio di Google Cloudo a una variante offline e ai Termini URL incorporati, come le Norme di utilizzo accettabile di Google Cloud.

Quando crei la tua applicazione, tieni presente che le tecnologie di visione AI hanno il potenziale di rafforzare o introdurre bias ingiusti e di influire sui diritti umani fondamentali. Lo sviluppo della tua applicazione deve comportare una riflessione etica basata sui valori della tua azienda e una due diligence legale per il tuo caso d'uso specifico, inclusi i casi d'uso ad alto rischio. Come per tutte le tecnologie, devi considerare tutte le leggi e le normative vigenti che regolano l'utilizzo delle tecnologie di AI/ML nella regione in cui le implementi. I clienti sono responsabili della due diligence necessaria per implementare casi d'uso considerati ad alto rischio in una determinata regione.

Crea una nuova applicazione

Prima di poter aggiungere componenti come uno stream o modelli a un'app, devi creare l'app stessa. Per essere implementate, tutte le app devono contenere quanto segue:

  • Un nodo di input stream (origine dati).
  • Almeno un altro nodo componente, ad esempio un modello o un warehouse.

Crea una nuova applicazione personalizzata

Console

Crea un'app nella console Google Cloud .

  1. Apri la scheda Applicazioni della dashboard Vision di Gemini Enterprise Agent Platform.

    Vai alla scheda Applicazioni

  2. Fai clic sul pulsante Crea.

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

  4. Fai clic su Crea.

Creare un'applicazione con un modello

Console

Crea un'app nella console Google Cloud .

  1. Apri la scheda Applicazioni della dashboard Vision di Gemini Enterprise Agent Platform.

    Vai alla scheda Applicazioni

  2. Fai clic sul pulsante Crea.

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

  4. Fai clic su Crea.

  5. Nella pagina del builder di applicazioni, fai clic sul nodo Modello di applicazione.

  6. Nel riquadro delle impostazioni laterali, fai clic sul pulsante Seleziona modello.

  7. Seleziona un modello dal menu a discesa.

Aggiungere l'input dello stream

Un'applicazione deve contenere un nodo di stream video. Non puoi eseguire il deployment dell'applicazione se non aggiungi un nodo Streams.

Se l'applicazione non è stata implementata, l'aggiornamento dell'input dello stream verrà applicato automaticamente all'applicazione. Se la tua app è già stata implementata, devi annullarne l'implementazione e aggiornarla per applicare le modifiche. Per maggiori dettagli, consulta la sezione Aggiornare un'app.

Console

Aggiungi uno stream a un'app nella console Google Cloud .

  1. Apri la scheda Applicazioni della dashboard Vision di Gemini Enterprise Agent Platform.

    Vai alla scheda Applicazioni

  2. Fai clic su Visualizza app per la tua app.

  3. Nell'elenco laterale dei componenti, scegli Flussi video dall'elenco dei Connettori. Il nodo del flusso viene aggiunto al grafico dell'app e si apre un menu laterale Flussi video.

  4. Seleziona Aggiungi flussi video.

  5. Se scegli di Selezionare da stream esistenti, seleziona lo stream esistente e poi Aggiungi stream.

    Se scegli di Registrare nuovi flussi, aggiungi un nome per il nuovo flusso e seleziona Aggiungi flussi.

REST

Per aggiungere uno stream a un'app, invia una richiesta POST utilizzando il metodo projects.locations.applications.addStreamInput.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT: il tuo Google Cloud ID progetto o numero di progetto.
  • LOCATION_ID: la regione in cui utilizzi Agent Platform Vision. Ad esempio: us-central1, europe-west4. Consulta le regioni disponibili.
  • APPLICATION_ID: l'ID dell'applicazione di destinazione.
  • STREAM_ID: l'ID dello stream di destinazione.

Metodo HTTP e URL:

POST https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput

Corpo JSON della richiesta:

{
  "applicationStreamInputs": [
     {
       "streamWithAnnotation": {
         "stream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID"
       }
     },
     {
       "streamWithAnnotation": {
         "stream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID"
       }
     }
   ]
}

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput" | Select-Object -Expand Content

Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.

Aggiungere input di stream con annotazioni dei nodi

Quando crei un flusso di input dell'applicazione, puoi aggiungere annotazioni al flusso utilizzando l'API Gemini Enterprise Agent Platform Vision. Puoi anche aggiungere annotazioni a un nodo nella consoleGoogle Cloud .

Console

L'esempio seguente aggiunge le annotazioni disponibili (STREAM_ANNOTATION_TYPE_ACTIVE_ZONE e STREAM_ANNOTATION_TYPE_CROSSING_LINE) a un modello di conteggio delle presenze.

  1. Apri la scheda Applicazioni della dashboard Vision di Gemini Enterprise Agent Platform.

    Vai alla scheda Applicazioni

  2. Seleziona Visualizza app accanto al nome dell'applicazione nell'elenco.

  3. Nella pagina del generatore di applicazioni, seleziona il modello con input di flusso a cui vuoi aggiungere annotazioni.

  4. Nel riquadro laterale delle impostazioni del modello, espandi la sezione "Impostazioni avanzate". Dopo aver espanso la sezione, fai clic sul pulsante Crea linee/zone attive.

  5. Nella visualizzazione della galleria di stream, seleziona uno stream di input per disegnare zone o linee attive.

  6. Nella visualizzazione dell'editor, scegli Aggiungi linee multipunto o Aggiungi poligono semplice per aggiungere annotazioni. Utilizza il riquadro laterale per rinominare la zona o il nome della linea, eliminare zone/linee esistenti o invertire la direzione della linea.

REST & CMD LINE

Il seguente codice aggiunge le annotazioni dello stream.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT: il tuo Google Cloud ID progetto o numero di progetto.
  • LOCATION_ID: la regione in cui utilizzi Agent Platform Vision. Ad esempio: us-central1, europe-west4. Consulta le regioni disponibili.
  • APPLICATION_ID: l'ID dell'applicazione di destinazione.
  • STREAM_ID: l'ID dello stream di destinazione.
  • NODE_NAME: il nome del nodo di destinazione nel grafico dell'app. Ad esempio, builtin-occupancy-count.
  • ANNOTATION_ID: l'ID dell'annotazione di destinazione.
  • ANNOTATION_DISPLAYNAME: Il nome visualizzato specificato dall'utente dell'annotazione di destinazione.
  • ANNOTATION_TYPE: uno dei valori enum disponibili. Questo tipo deve corrispondere all'oggetto annotation_payload, activeZone o crossingLine. I valori disponibili sono:
    • STREAM_ANNOTATION_TYPE_UNSPECIFIED
    • STREAM_ANNOTATION_TYPE_ACTIVE_ZONE
    • STREAM_ANNOTATION_TYPE_CROSSING_LINE
  • normalizedVertices: ogni vertice è specificato dai valori delle coordinate x e y. Le coordinate sono valori float normalizzati [0,1] relativi all'immagine originale; 0.0 è X_MIN o Y_MIN, 1.0 è X_MAX o Y_MAX.

Metodo HTTP e URL:

POST https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput

Corpo JSON della richiesta:

{
  "applicationStreamInputs": [
    {
      "streamWithAnnotation": {
        "stream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID",
        "nodeAnnotations": [
          {
            "node": "NODE_NAME",
            "annotations": [
              {
                "id": "ANNOTATION_ID",
                "displayName": "ANNOTATION_DISPLAYNAME",
                "sourceStream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID",
                "type": ANNOTATION_TYPE,
                "activeZone": {
                  "normalizedVertices": {
                    "x": 0.07434944,
                    "y": 0.18061674
                  },
                  "normalizedVertices": {
                    "x": 0.64684016,
                    "y": 0.16079295
                  },
                  "normalizedVertices": {
                    "x": 0.6047088,
                    "y": 0.92070484
                  },
                  "normalizedVertices": {
                    "x": 0.1251549,
                    "y": 0.76651984
                  }
                }
              }
            ]
          }
        ]
      }
    }
  ]
}

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput" | Select-Object -Expand Content

Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.

Rimuovere l'input dello stream

REST

Per rimuovere un flusso da un'app, invia una richiesta POST utilizzando il metodo projects.locations.applications.removeStreamInput.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT: il tuo Google Cloud ID progetto o numero di progetto.
  • LOCATION_ID: la regione in cui utilizzi Agent Platform Vision. Ad esempio: us-central1, europe-west4. Consulta le regioni disponibili.
  • APPLICATION_ID: l'ID dell'applicazione di destinazione.
  • STREAM_ID: l'ID dello stream di destinazione.

Metodo HTTP e URL:

POST https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:removeStreamInput

Corpo JSON della richiesta:

{
  "targetStreamInputs": [
     {
       "stream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID"
     },
     {
       "stream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID"
     }
   ]
}

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:removeStreamInput"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:removeStreamInput" | Select-Object -Expand Content

Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.

Aggiungere un modello pre-addestrato di Gemini Enterprise Agent Platform Vision

Dopo aver creato un'app, puoi aggiungere un modello e collegarlo a stream, ad altri modelli o a un media warehouse.

Esistono due tipi di modelli: modelli preaddestrati o modelli addestrati dall'utente. Allo stesso modo, anche i modelli addestrati dall'utente possono essere di due tipi: AutoML o con addestramento personalizzato:

  • I modelli pre-addestrati svolgono un obiettivo specifico, vengono addestrati su dati generalizzati e sono pronti all'uso.
  • I modelli AutoML o con addestramento personalizzato addestrati dall'utente richiedono di identificare e fornire dati di esempio e quindi addestrare modelli più adatti al tuo caso d'uso unico. Addestri questi modelli utilizzando Vertex AI, un prodotto che offre due opzioni di addestramento: modelli addestrati con AutoML e modelli con addestramento personalizzato. Per ulteriori informazioni, consulta la sezione Scegliere un metodo di addestramento.

Segui queste istruzioni per aggiungere un modello di visione preaddestrato di Gemini Enterprise Agent Platform al grafico dell'app.

Console

  1. Apri la scheda Applicazioni della dashboard Vision di Gemini Enterprise Agent Platform.

    Vai alla scheda Applicazioni

  2. Seleziona Visualizza app accanto al nome dell'applicazione nell'elenco.

  3. Nella pagina del generatore di applicazioni, seleziona il modello da aggiungere dall'elenco Modelli di AI. Ogni modello ha impostazioni di configurazione individuali.

  4. Per connettere questo modello a un nodo sorgente di ingresso, seleziona il nodo sorgente e seleziona Aggiungi output.

  5. Seleziona il nodo del modello di AI appena creato dall'elenco dei Nodi disponibili.

Aggiungere un modello Vertex AI addestrato dall'utente

Dopo aver creato un'app, puoi aggiungere un modello e collegarlo a stream, ad altri modelli o a un media warehouse.

Esistono due tipi di modelli: modelli preaddestrati o modelli addestrati dall'utente. Allo stesso modo, anche i modelli addestrati dall'utente possono essere di due tipi: AutoML o con addestramento personalizzato:

  • I modelli pre-addestrati svolgono un obiettivo specifico, vengono addestrati su dati generalizzati e sono pronti all'uso.
  • I modelli AutoML o con addestramento personalizzato addestrati dall'utente richiedono di identificare e fornire dati di esempio e quindi addestrare modelli più adatti al tuo caso d'uso unico. Addestri questi modelli utilizzando Vertex AI, un prodotto che offre due opzioni di addestramento: modelli addestrati con AutoML e modelli con addestramento personalizzato. Per ulteriori informazioni, consulta la sezione Scegliere un metodo di addestramento.

Aggiungere un modello di flusso di rilevamento di oggetti AutoML di Vertex AI

Segui le istruzioni riportate di seguito per aggiungere al grafico dell'app un modello di flusso di rilevamento di oggetti AutoML di Vertex AI che addestri.

Prima di poter addestrare un modello Vertex AI AutoML, devi preparare i dati di rilevamento degli oggetti e creare un set di dati.

Addestrare un modello da utilizzare in Gemini Enterprise Agent Platform Vision

Dopo aver creato un set di dati con una raccolta rappresentativa di dati in Vertex AI, puoi addestrare un modello da utilizzare in Gemini Enterprise Agent Platform Vision.

Console

  1. Nella console Google Cloud , nella dashboard di Vertex AI, vai alla pagina Set di dati.

    Vai alla pagina Set di dati

  2. Fai clic sul nome del set di dati che vuoi utilizzare per addestrare il modello per aprire la pagina dei dettagli.

  3. Se il tipo di dati utilizza set di annotazioni, seleziona quello che vuoi utilizzare per questo modello.

  4. Fai clic su Addestra nuovo modello.

  5. Nella pagina Addestra nuovo modello, completa i seguenti passaggi per il modello di rilevamento degli oggetti nelle immagini AutoML:

    1. Nella sezione Metodo di addestramento del modello, scegli AutoML.

    2. Nella sezione Scegli dove utilizzare il modello, seleziona Gemini Enterprise Agent Platform Vision.

    3. Fai clic su Continua.

    4. Compila i valori per le sezioni Dettagli modello, Opzioni di addestramento e Calcolo e prezzi. Per informazioni più dettagliate, consulta Addestrare un modello AutoML (consoleGoogle Cloud ).

    5. Fai clic su Inizia addestramento.

      L'addestramento del modello può richiedere molte ore, a seconda delle dimensioni e della complessità dei dati e del budget di addestramento, se ne hai specificato uno. Puoi chiudere questa scheda e tornarci in un secondo momento. Riceverai un'email al termine dell'addestramento del modello.

Aggiungere il modello addestrato all'app

Una volta completato l'addestramento del modello, puoi aggiungerlo all'app Gemini Enterprise Agent Platform Vision.

Console

  1. Apri la scheda Applicazioni della dashboard Vision di Gemini Enterprise Agent Platform.

    Vai alla scheda Applicazioni

  2. Seleziona Visualizza app accanto al nome dell'applicazione nell'elenco.

  3. Nella pagina del generatore di applicazioni, seleziona Aggiungi modello Vertex AI dall'elenco dei componenti laterali. Se selezioni questa opzione, si apre un menu laterale.

  4. Nel menu Aggiungi modello Vertex AI, lascia selezionata l'opzione Importa un modello addestrato da Vertex AI, quindi scegli il modello dall'elenco dei modelli Vertex AI AutoML esistenti.

  5. Dopo aver scelto il modello da importare, seleziona Aggiungi modello.

    Dopo aver fatto clic sul pulsante Aggiungi modello, verrà visualizzato un modello in attesa sul lato della pagina del generatore di grafici. Dopo alcuni secondi, il modello è pronto per l'uso.

Aggiungere un modello personalizzato Vertex AI

Puoi anche importare modelli addestrati personalizzati di Vertex AI in Gemini Enterprise Agent Platform Vision per utilizzarli per l'analisi dei dati. Questi modelli con addestramento personalizzato devono avere le seguenti proprietà:

  • Il modello deve essere stateless, poiché l'input del modello sono le immagini che provengono da diverse istanze dell'applicazione (stream) e potrebbero essere fuori ordine. Se hai bisogno di un'elaborazione di streaming stateful, potresti dover conservare gli stati all'interno del tuo contenitore.
  • La dimensione dell'input del modello è limitata a 1,5 MB. Di conseguenza, Gemini Enterprise Agent Platform Vision deve comprimere l'immagine RGB originale in un formato con perdita di dati, ad esempio JPG.

Segui le istruzioni riportate di seguito per aggiungere al grafico dell'app un modello video personalizzato addestrato con Vertex AI esistente.

Per informazioni sulla creazione di un modello con addestramento personalizzato Vertex AI con container personalizzato, consulta Utilizzare un container personalizzato per la previsione.

Specifica un file YAML delle istanze

Quando aggiungi un modello addestrato personalizzato di Vertex AI, devi specificare un file YAML di istanze (instances.yaml) archiviato in Cloud Storage. Questo file specifica l'input previsto per il container del modello.

Vertex AI invia la richiesta di previsione in un formato:

{
  "instances": [
    <value>|<simple/nested list>|<object>,
    ...
  ]
}

Qui, instances.yaml definisce lo schema del payload. Per saperne di più, consulta Generazione di previsioni online da modelli con addestramento personalizzato.

Gemini Enterprise Agent Platform Vision supporta solo modelli addestrati personalizzati con esattamente un input di previsione denominato. Questo tipo di input deve essere una stringa JPEG codificata. Lo schema dell'input di previsione deve essere specificato con il file YAML dello schema delle istanze. Questo file YAML dello schema deve essere nel formato di un oggetto schema OpenAPI.

Ad esempio, il seguente schema riceverà la richiesta con l'immagine codificata in un campo denominato image_bytes:

properties:
  image_bytes:
    type: string

Il tuo modello personalizzato riceve l'input di previsione nel seguente formato:

{
  "instances": [
    {
      "image_bytes" : {
        "b64": "BASE64_ENCODED_IMAGE_BYTES"
      }
    }
  ]
}

Prima di importare il modello in Gemini Enterprise Agent Platform Vision, verifica che funzioni correttamente con questo input.

Specifica un file YAML delle previsioni

Quando aggiungi un modello addestrato in modo personalizzato di Vertex AI, puoi specificare un file YAML di previsioni (predictions.yaml) archiviato in Cloud Storage. Questo file specifica l'output del contenitore del modello.

Questo file è facoltativo, ma consigliato per informare Gemini Enterprise Agent Platform Vision della struttura dell'output del modello. Ad esempio, il seguente file classification_1.0.0.yaml descrive le informazioni sull'output del modello per un modello di classificazione delle immagini:

title: Classification
type: object
description: >
  The predicted AnnotationSpecs.
properties:
  ids:
    type: array
    description: >
      The resource IDs of the