App di monitoraggio del traffico Vertex AI Vision

1. Obiettivi

Panoramica

Questo codelab si concentra sulla creazione di un'applicazione Vertex AI Vision end-to-end per monitorare i filmati del traffico in tempo reale. Utilizzeremo il modello specializzato preaddestrato Occupancy analytics. funzionalità integrate per acquisire quanto segue:

  • Contare il numero di veicoli e persone che attraversano una strada su una determinata linea.
  • Contare il numero di veicoli per persona in una zona fissa della strada.
  • Rilevamento della congestione in qualsiasi parte della strada.

Cosa imparerai a fare

  • Come configurare una VM per importare video per lo streaming
  • Come creare un'applicazione in Vertex AI Vision
  • Diverse funzionalità disponibili in Analisi delle presenze e come utilizzarle
  • Come eseguire il deployment dell'app
  • Come cercare video nel warehouse multimediale di Vertex AI Vision nel tuo spazio di archiviazione.
  • Come connettere l'output a BigQuery, scrivere una query SQL per estrarre insight dall'output JSON del modello e visualizzare il risultato in Looker Studio in tempo reale.

2. Prima di iniziare

  1. Nella pagina del selettore dei progetti della console Google Cloud, seleziona o crea un progetto Google Cloud. Nota: se non prevedi di conservare le risorse create in questa procedura, crea un progetto invece di selezionarne uno esistente. Dopo aver completato questi passaggi, puoi eliminare il progetto rimuovendo tutte le risorse associate. Vai al selettore progetti
  2. Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come controllare se la fatturazione è abilitata per un progetto.
  3. Abilita le API Compute Engine e Vision AI. Abilita le API

Crea un account di servizio:

  1. Nella console Google Cloud, vai alla pagina Crea account di servizio. Vai a Crea account di servizio
  2. Seleziona il progetto.
  3. Nel campo Nome account di servizio, inserisci un nome. La console Google Cloud compila il campo ID account di servizio in base a questo nome. Nel campo Descrizione account di servizio, inserisci una descrizione. ad esempio Account di servizio per la guida rapida.
  4. Fai clic su Crea e continua.
  5. Per concedere l'accesso al progetto, concedi i seguenti ruoli al tuo account di servizio: Vision AI > Editor Vision AI, Compute Engine > Amministratore istanze Compute (beta), Storage > Visualizzatore oggetti Storage † . Nell'elenco Seleziona un ruolo, seleziona un ruolo. Per aggiungere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni altro ruolo. Nota: il campo Ruolo influisce sulle risorse a cui il tuo account di servizio può accedere nel progetto. Puoi revocare questi ruoli o concederne altri in un secondo momento. Negli ambienti di produzione, non concedere i ruoli di Proprietario, Editor o Visualizzatore. Concedi invece un ruolo predefinito o un ruolo personalizzato che soddisfi le tue esigenze.
  6. Fai clic su Continua.
  7. Fai clic su Fine per completare la creazione dell'account di servizio. Non chiudere la finestra del browser. Lo utilizzerai nel passaggio successivo.

Crea una chiave dell'account di servizio:

  1. Nella console Google Cloud, fai clic sull'indirizzo email dell'account di servizio che hai creato.
  2. Fai clic su Chiavi.
  3. Fai clic su Aggiungi chiave, quindi su Crea nuova chiave.
  4. Fai clic su Crea. Sul computer viene scaricato un file della chiave JSON.
  5. Fai clic su Chiudi.
  6. Installa e inizializza Google Cloud CLI.

† Il ruolo è necessario solo se copi un file video di esempio da un bucket Cloud Storage.

3. Configura una VM per riprodurre video in streaming

Prima di creare un'app in Analisi delle presenze, devi registrare uno stream che possa essere utilizzato in un secondo momento dall'app.

In questo tutorial creerai un'istanza VM di Compute Engine che ospita un video e invierai i dati video in streaming dalla VM.

Crea una VM Linux

Il primo passaggio per l'invio di video da un'istanza VM di Compute Engine è la creazione dell'istanza VM.

  1. Nella console, vai alla pagina Istanze VM. Vai a Istanze VM
  2. Seleziona il progetto e fai clic su Continua.
  3. Fai clic su Crea istanza.
  4. Specifica un nome per la VM. Per ulteriori informazioni, consulta la Convenzione di denominazione delle risorse.
  5. (Facoltativo) Modifica la Zona per questa VM. Compute Engine randomizza l'elenco di zone all'interno di ogni regione per incoraggiarne l'uso in più zone.
  6. Accetta le restanti opzioni predefinite. Per saperne di più su queste opzioni, consulta Creare e avviare una VM.
  7. Per creare e avviare la VM, fai clic su Crea.

Configurare l'ambiente VM

Dopo l'avvio della VM, puoi utilizzare la console per connetterti alla VM tramite SSH dal browser. Successivamente, potrai scaricare lo strumento a riga di comando vaictl per importare il video nel tuo stream.

Stabilisci una connessione SSH alla VM

  1. Nella console, vai alla pagina Istanze VM. Vai a Istanze VM
  2. Nella sezione Connetti della riga dell'istanza che hai creato, fai clic su SSH. Viene aperta una connessione SSH in una nuova finestra del browser. L'opzione SSH nell'interfaccia utente

Scarica lo strumento a riga di comando vaictl

  1. Nella finestra SSH nel browser, scarica lo strumento a riga di comando di Vertex AI Vision (vaictl) utilizzando il seguente comando:
wget https://github.com/google/visionai/releases/download/v0.0.4/visionai_0.0-4_amd64.deb
  1. Installa lo strumento a riga di comando eseguendo questo comando:
sudo apt install ./visionai_0.0-4_amd64.deb
  1. Puoi testare l'installazione eseguendo questo comando:
vaictl --help

4. Importare un file video per lo streaming

Dopo aver configurato l'ambiente VM, puoi copiare un file video di esempio e utilizzare vaictl per inviare i dati video in streaming all'app di analisi delle presenze.

Inizia attivando l'API Vision AI nella console Cloud

Registrare un nuovo stream

  1. Fai clic sulla scheda Stream nel riquadro sinistro di Vertex AI Vision.
  2. Fai clic su Registrati
  3. Nel nome dello stream, inserisci "traffic-stream".
  4. Nella regione, inserisci "us-central1"
  5. Fai clic su Registra

La registrazione dello stream richiederà un paio di minuti.

Copia un video di esempio nella VM

  1. Nella finestra SSH-in-browser della tua VM, copia un video di esempio con il seguente comando gsutil cp. Sostituisci la seguente variabile:
  • ORIGINE: posizione di un file video da utilizzare. Puoi utilizzare la tua origine del file video (ad esempio, gs://BUCKET_NAME/FILENAME.mp4) oppure il video di esempio (gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4 )(video con persone e veicoli, fonte)
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

Trasmetti in streaming i video da una VM e importa i dati nel tuo stream

  1. Per inviare questo file video locale allo stream di input dell'app, utilizza il seguente comando. Devi effettuare le seguenti sostituzioni delle variabili:
  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • LOCATION_ID: l'ID della tua località. Ad esempio us-central1. Per ulteriori informazioni, vedi Località cloud.
  • LOCAL_FILE: il nome di un file video locale. Ad esempio street_vehicles_people.mp4.
  • –loop flag: facoltativo. Esegue il loop dei dati del file per simulare lo streaming.
export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1
export LOCAL_FILE=street_vehicles_people.mp4
  1. Questo comando consente di trasmettere un file video a uno stream. Se utilizzi il flag –loop, il video rimane in loop nello stream fino a quando non interrompi il comando. Eseguiremo questo comando come job in background, in modo che mantenga il flusso di dati anche dopo la disconnessione della VM.
  • ( aggiungi nohup all'inizio e "&" alla fine per renderlo un job in background)
nohup vaictl -p $PROJECT_ID \
    -l $LOCATION_ID \
    -c application-cluster-0 \
    --service-endpoint visionai.googleapis.com \
send video-file to streams 'traffic-stream' --file-path $LOCAL_FILE --loop &

Potrebbero trascorrere circa 100 secondi tra l'avvio dell'operazione di importazione vaictl e la visualizzazione del video nella dashboard.

Quando l'importazione dello stream è disponibile, puoi visualizzare il feed video nella scheda Stream della dashboard di Vertex AI Vision selezionando lo stream del flusso di traffico.

Vai alla scheda Stream

Visualizzazione di un video in diretta trasmesso in streaming nell&#39;interfaccia utenteVisione in diretta del video importato nello stream all'interno della console Google Cloud. Video di: Elizabeth Mavor su Pixabay (pixelazione aggiunta).

5. Crea un'applicazione

Il primo passaggio consiste nel creare un'app che elabora i tuoi dati. Un'app può essere considerata una pipeline automatizzata che collega quanto segue:

  • Importazione dati: un feed video viene importato in uno stream.
  • Analisi dei dati: è possibile aggiungere un modello di IA(visione artificiale) dopo l'importazione.
  • Archiviazione dei dati: le due versioni del feed video (quello originale e quello elaborato dal modello di IA) possono essere archiviate in un media warehouse.

Nella console Google Cloud un'app è rappresentata da un grafico.

Creare un'app vuota

Prima di poter completare il grafico dell'app, devi creare un'app vuota.

Crea un'app nella console Google Cloud.

  1. Vai alla console Google Cloud.
  2. Apri la scheda Applications (Applicazioni) della dashboard di Vertex AI Vision.

Vai alla scheda Applicazioni

  1. Fai clic sul pulsante Crea.
  2. Inserisci traffic-app come nome dell'app e scegli la tua regione.
  3. Fai clic su Crea.

Aggiungere nodi dei componenti dell'app

Dopo aver creato l'applicazione vuota, puoi aggiungere i tre nodi al grafico dell'app:

  1. Nodo di importazione: la risorsa di flusso che importa i dati inviati da un'istanza VM di Compute Engine creata da te.
  2. Nodo di elaborazione: il modello di analisi delle presenze che agisce sui dati importati.
  3. Nodo di archiviazione: il warehouse multimediale in cui sono archiviati i video elaborati e che funge da archivio di metadati. Gli archivi di metadati includono informazioni di analisi sui dati video importati e informazioni dedotte dai modelli di IA.

Aggiungi i nodi dei componenti all'app nella console.

  1. Apri la scheda Applications (Applicazioni) della dashboard di Vertex AI Vision. Vai alla scheda Applicazioni
  2. Nella linea dell'app Traffico, seleziona Visualizza grafico. Viene visualizzata la visualizzazione grafica della pipeline di elaborazione.

Aggiungi un nodo di importazione dati

  1. Per aggiungere un nodo per lo stream di input, seleziona l'opzione Stream nella sezione Connettori del menu laterale.
  2. Nella sezione Origine del menu Stream visualizzato, seleziona Aggiungi stream.
  3. Nel menu Aggiungi stream, scegli Registra nuovi stream e aggiungi stream di traffico come nome dello stream.
  4. Per aggiungere lo stream al grafico dell'app, fai clic su Aggiungi stream.

Aggiungere un nodo di elaborazione dati

  1. Per aggiungere il nodo del modello per il numero di presenze, seleziona l'opzione Analisi del numero di persone nella sezione Modelli specializzati del menu laterale.
  2. Lascia le selezioni predefinite Persone e Veicoli.
  3. Aggiungi linee in Crossing. Utilizza lo strumento Linea multipunto per tracciare le linee in cui rilevare le auto o le persone in uscita o in entrata.
  4. Traccia le zone attive per contare le persone/i veicoli al loro interno.
  5. Aggiungi le impostazioni del tempo di attesa per rilevare la congestione se viene tracciata una zona attiva.
  • (attualmente la zona attiva e il passaggio di linea non sono supportati contemporaneamente. Utilizza una sola funzione alla volta.)

3acdb6f1e8474e07.png ce63449d601995e9.png

194c54d2bbcf7e8a.png

Aggiungere un nodo di archiviazione dati

  1. Per aggiungere il nodo di destinazione di output (archiviazione), seleziona l'opzione warehouse multimediale di Vertex AI Vision nella sezione Connettori del menu laterale.
  2. Nel menu warehouse multimediale di Vertex AI Vision, fai clic su Connetti warehouse.
  3. Nel menu Collega magazzino, seleziona Crea nuovo magazzino. Assegna un nome al data warehouse del traffico del warehouse e lascia la durata TTL su 14 giorni.
  4. Fai clic sul pulsante Crea per aggiungere il warehouse.

6. Connetti l'output alla tabella BigQuery

Quando aggiungi un connettore BigQuery all'app Vertex AI Vision, tutti gli output del modello dell'app collegati verranno importati nella tabella di destinazione.

Puoi creare la tua tabella BigQuery e specificarla quando aggiungi un connettore BigQuery all'app oppure lasciare che la piattaforma dell'app Vertex AI Vision crei automaticamente la tabella.

Creazione automatica di tabelle

Se consenti alla piattaforma di app Vertex AI Vision di creare automaticamente la tabella, puoi specificare questa opzione quando aggiungi il nodo del connettore BigQuery.

Se vuoi utilizzare la creazione automatica delle tabelle, si applicano le seguenti condizioni del set di dati e della tabella:

  • Set di dati: il nome del set di dati creato automaticamente è visionai_dataset.
  • Tabella: il nome della tabella creata automaticamente è visionai_dataset.APPLICATION_ID.
  • Gestione degli errori:
  • Se esiste una tabella con lo stesso nome sotto lo stesso set di dati, non viene creata alcuna creazione automatica.
  1. Apri la scheda Applications (Applicazioni) della dashboard di Vertex AI Vision. Vai alla scheda Applicazioni
  2. Seleziona Visualizza app accanto al nome della tua applicazione nell'elenco.
  3. Nella pagina del generatore di applicazioni, seleziona BigQuery dalla sezione Connettori.
  4. Lascia vuoto il campo BigQuery path. ee0b67d4ab2263d.png
  5. In Metadati del negozio da: seleziona solo "Analisi delle presenze" e deseleziona i flussi.

Il grafico finale dell'app dovrebbe essere simile al seguente:

1787242465fd6da7.png

7. Esegui il deployment dell'app per utilizzarla

Dopo aver creato l'app end-to-end con tutti i componenti necessari, l'ultimo passaggio per utilizzarla è il deployment.

  1. Apri la scheda Applications (Applicazioni) della dashboard di Vertex AI Vision. Vai alla scheda Applicazioni
  2. Seleziona Visualizza grafico accanto all'app Traffico nell'elenco.
  3. Nella pagina di Application Graph Builder, fai clic sul pulsante Esegui il deployment.
  4. Nella finestra di dialogo di conferma seguente, seleziona Esegui il deployment. Il completamento dell'operazione di deployment potrebbe richiedere diversi minuti. Al termine del deployment, accanto ai nodi appaiono dei segni di spunta verdi. ee78bbf00e5db898.png

8. Cerca contenuti video nel warehouse di archiviazione

Dopo aver importato i dati video nella tua app di elaborazione, puoi visualizzare i dati video analizzati ed eseguire ricerche nei dati in base alle informazioni sull'analisi del numero di persone.

  1. Apri la scheda Warehouse della dashboard di Vertex AI Vision. Vai alla scheda Warehouse
  2. Individua il warehouse del data warehouse nell'elenco e fai clic su Visualizza asset.
  3. Nella sezione Conteggio persone o Conteggio veicoli, imposta il valore Min su 1 e il valore Max su 5.
  4. Per filtrare i dati video elaborati archiviati nel warehouse multimediale di Vertex AI Vision, fai clic su Cerca.

e636361b19738c8d.png

Una visualizzazione dei dati video archiviati che corrispondono ai criteri di ricerca nella console Google Cloud. Riconoscimenti del video: Elizabeth Mavor su Pixabay (criteri di ricerca applicati).

9. Analizza l'output in una tabella BigQuery

Vai a BigQuery

Seleziona il set di dati: visionai_dataset

Seleziona la tabella: APPLICATION_ID (in questo caso traffic-app)

Fai clic sui tre puntini a destra del nome della tabella e fai clic su Query

Scrivi la seguente query

Query1: query per verificare il conteggio dei veicoli che attraversa ogni riga al minuto

abc.sql

- Get list of active marked lines for each timeframe
WITH line_array AS (
  SELECT
  t.ingestion_time AS ingestion_time,
  JSON_QUERY_ARRAY(t.annotation.stats["crossingLineCounts"]) AS lines
  FROM
  `PROJ_ID.visionai_dataset.APP_ID` AS t
),
- Flatten active lines to get individual entities details
flattened AS (
  SELECT
  line_array.ingestion_time,
  JSON_VALUE(line.annotation.id) as line_id,
  JSON_QUERY_ARRAY(line["positiveDirectionCounts"]) AS entities
  FROM line_array, unnest(line_array.lines) as line
 )
- Generate aggregate vehicle count per zone w.r.t time 
SELECT
  STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, line_id,
  SUM(INT64(entity["count"])) as vehicle_count
FROM
  flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, line_id

Query2: query per verificare il conteggio dei veicoli al minuto in ciascuna zona

- Get list of active zones for each timeframe
WITH zone_array AS (
     SELECT
     t.ingestion_time AS ingestion_time,
     JSON_QUERY_ARRAY(t.annotation.stats["activeZoneCounts"]) AS zones
     FROM
     `PROJ_ID.visionai_dataset.APP_ID` AS t
),
- Flatten active zones to get individual entities details
flattened AS (
   SELECT zone_array.ingestion_time, JSON_VALUE(zone.annotation.id) as zone_id,
         JSON_QUERY_ARRAY(zone["counts"]) AS entities
   FROM zone_array, unnest(zone_array.zones) as zone
 )
- Generate aggregate vehicle count per zone w.r.t time 
SELECT 
STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, 
zone_id,
SUM(INT64(entity["count"])) as vehicle_count
FROM flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, zone_id

Nelle query precedenti puoi modificare il campo "Veicolo". a "Persona" per contare Persona.

Questo codelab mostra solo i dati di esempio e la visualizzazione per Query1. Puoi seguire la procedura simile per Query2.

e6fd891f3a46246.png

Fai clic su Esplora dati nel menu laterale a destra e seleziona Esplora con Looker Studio

9e737ddb4d0d25b6.png

Nella "dimensione" aggiungere ora e modificare la configurazione dell'ora in data-ora. In "Dimensioni di suddivisione" aggiungi line_id. b5da9704ccd8db.png

Il grafico sopra mostra il numero di veicoli per persona che attraversano ogni linea in un minuto.

Le barre blu scuro e azzurro indicano i due diversi ID linea.

10. Complimenti

Congratulazioni, hai terminato il lab.

Pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

Elimina singole risorse

Risorse

https://cloud.google.com/vision-ai/docs/overview

https://cloud.google.com/vision-ai/docs/occupancy-count-tutorial

Feedback

Fai clic qui per fornire un feedback

Sondaggio

Come utilizzerai questo tutorial?

Solo lettura Leggilo e completa gli esercizi

Quanto è stato utile questo codelab?

Molto utile Moderatamente utile