Creare un'app di sfocatura del viso con spazio di archiviazione in un data warehouse


Vertex AI Vision è una piattaforma basata sull'AI che puoi utilizzare per importare, analizzare e archiviare i dati video . Vertex AI Vision ti consente di creare ed eseguire il deployment di applicazioni di AI. Puoi creare soluzioni Vertex AI Vision end-to-end sfruttando l'integrazione di Vertex AI Vision con altri componenti del prodotto.

Per iniziare a implementare soluzioni utilizzando la piattaforma Vertex AI Vision, esamina i seguenti concetti e componenti di Vertex AI Vision:

  • Stream: rappresentano un livello di streaming video della tua soluzione. La sorgente dello stream può essere un video live (ad esempio, una videocamera IP) o un file video (ad esempio, un file MP4).

  • Applicazioni: consente la connessione tra uno stream e un processore AI per eseguire un'operazione di machine learning sul video. Ad esempio, puoi collegare un flusso della videocamera a un modello di AI che conta le persone che passano davanti.

  • Warehouse multimediali: archiviano il video importato dai flussi in Google Cloud . L'archiviazione dei dati in questa destinazione ti consente di interrogare l'analisi output e i metadati dei processori di AI utilizzati sui dati dei flussi importati.

Obiettivi

Questo tutorial mostra come:

  • Crea una risorsa di stream di input dei dati.
  • Inizia a trasmettere i dati video in questa risorsa stream.
  • Crea un'applicazione vuota.
  • Aggiungi nodi all'applicazione per trasmettere, modificare e archiviare i dati.
  • Esegui il deployment dell'app per utilizzarla.
  • Visualizza l'output dei dati elaborati nella console Google Cloud .

Prima di iniziare questo tutorial, devi disporre di una risorsa video in streaming per inviare dati alla tua app Vertex AI Vision. Questa risorsa può essere un video locale o un feed RTSP. Questi dati video devono contenere volti umani che l'app di esempio può poi sfocare.

Costi

In questo documento, utilizzi i seguenti componenti fatturabili di Google Cloud:

  • Vertex AI Vision (Streams - Data ingested, Streams - Data consumed, Models - Person / face blur, Warehouse - Video storage)

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi Google Cloud utenti potrebbero avere diritto a una prova gratuita.

Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per ulteriori informazioni, vedi Pulizia.

Prima di iniziare

  1. Recupera la posizione dell'origine del video in streaming, in locale (ad esempio, ./sample_video.mp4) o l'indirizzo IP del feed RTSP live (ad esempio, rtsp://192.168.1.180:540). Ti servono queste informazioni per iniziare a importare i dati in uno stream dopo aver creato la risorsa stream.
  2. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Make sure that billing is enabled for your Google Cloud project.

  5. Enable the Vision AI API.

    Enable the API

  6. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Vision AI > Vision AI Editor role to the service account.

      To grant the role, find the Select a role list, then select Vision AI > Vision AI Editor.

    6. Click Continue.
    7. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  7. Create a service account key:

    1. In the Google Cloud console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.
  8. Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

  9. Install the Google Cloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  13. Make sure that billing is enabled for your Google Cloud project.

  14. Enable the Vision AI API.

    Enable the API

  15. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Vision AI > Vision AI Editor role to the service account.

      To grant the role, find the Select a role list, then select Vision AI > Vision AI Editor.

    6. Click Continue.
    7. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  16. Create a service account key:

    1. In the Google Cloud console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.
  17. Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

  18. Install the Google Cloud CLI.

  19. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  20. To initialize the gcloud CLI, run the following command:

    gcloud init
  21. Installazione dello strumento vaictl per l'importazione dei dati in uno stream (sistema operativo: Debian GNU/Linux, architettura CPU: x86_64):
    1. Scarica il pacchetto richiesto:
      wget https://github.com/google/visionai/releases/download/v0.0.5/visionai_0.0-5_amd64.deb
    2. Dopo aver scaricato il pacchetto, esegui questo comando nella directory in cui hai scaricato il file:
      sudo apt install ./visionai_0.0-5_amd64.deb
    3. Verifica l'installazione:
      vaictl --help

Crea uno stream

Per creare un'app di analisi dei flussi video, devi prima creare e registrare una risorsa di stream. In quanto risorsa che riceve i dati video dagli utenti, lo stream è necessario in qualsiasi scenario che crei utilizzando Vertex AI Vision.

Console

Per creare un nuovo stream nella console Google Cloud , segui questi passaggi.

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

    Vai alla scheda Stream

  2. Fai clic su Registrati.

  3. Inserisci input-stream come nome del flusso e seleziona la regione in cui vuoi creare il flusso.

  4. Fai clic su Registra per creare uno o più flussi.

    Opzioni di registrazione dei flussi nell'interfaccia utente

Importare video nello stream

Dopo aver creato una risorsa stream, puoi utilizzare lo strumento a riga di comando vaictl per inviare i dati video allo stream.

Videocamera IP

Se esegui il test utilizzando una videocamera IP live, devi ottenere l'indirizzo IP della videocamera. Devi fornire queste informazioni con la richiesta, insieme ad altre sostituzioni di variabili:

  • PROJECT_ID: il tuo ID progetto Google Cloud .
  • LOCATION_ID: il tuo ID posizione. Ad esempio, us-central1. Per maggiori informazioni, consulta la pagina Località cloud.
  • RTSP_ADDRESS: L'indirizzo del tuo feed Real Time Streaming Protocol (RTSP). Ad esempio, rtsp://192.168.1.180:540.

Questo comando invia un feed RTSP nel flusso. Devi eseguire questo comando nella rete che ha accesso diretto al feed RTSP.

vaictl -p PROJECT_ID \
       -l LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
send rtsp to streams input-stream --rtsp-uri RTSP_ADDRESS
      

Se il comando viene eseguito correttamente, viene visualizzato il seguente output:

[...]
Waiting for long running operation projects/your-project/locations/us-central1/operations/operation-1651364156981-5dde82db7e4a9-dfb17ca5-1051eb20 ⠙
I20220430 21:16:28.024988 211449 gstvaisink.cc:417] cluster-id=application-cluster-0
I20220430 21:16:28.025032 211449 gstvaisink.cc:418] cluster-endpoint=c8khq35ftg78mn61ef50.us-central1.visionai.goog
I20220430 21:16:28.025040 211449 gstvaisink.cc:419] event-id=ev-1651364114183255223
I20220430 21:16:28.025048 211449 gstvaisink.cc:420] stream-id=input-stream
I20220430 21:16:28.025053 211449 gstvaisink.cc:421] series-id=ev-1651364114183255223--input-stream
I20220430 21:16:28.025060 211449 gstvaisink.cc:422] Sending data

File video locale

Puoi anche inviare i dati dei file video a uno stream anziché a un feed video live. Questa opzione può essere utile se non hai accesso a una videocamera IP.

L'unica differenza in questa opzione sono i parametri del comando vaictl. Anziché trasmettere le informazioni della videocamera IP, trasmetti il percorso del file video locale. Effettua le seguenti sostituzioni delle variabili:

  • PROJECT_ID: il tuo ID progetto Google Cloud .
  • LOCATION_ID: il tuo ID posizione. Ad esempio, us-central1. Ulteriori informazioni.
  • LOCAL_FILE.EXT: il nome file di un file video locale. Ad esempio, my-video.mp4.
  • Flag --loop: facoltativo. Esegue il loop dei dati dei file per simulare lo streaming.

Questo comando trasmette in streaming un file video a uno stream. Se utilizzi il flag --loop, il video viene riprodotto in loop nello stream finché non interrompi il comando:

vaictl -p PROJECT_ID \
       -l LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
send video-file to streams 'input-stream' --file-path LOCAL_FILE.EXT --loop

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

Una volta disponibile l'importazione dello stream, puoi visualizzare il feed video nella scheda Stream della dashboard di Vertex AI Vision selezionando lo stream input-stream.

Vai alla scheda Stream

Visualizzazione del video in diretta in streaming nell'interfaccia utente
Visualizzazione in tempo reale del video in fase di caricamento nello stream nella console Google Cloud . Crediti video: Tima Miroshnichenko su Pexels (pixelizzazione aggiunta).

Crea un'applicazione di sfocatura dei volti

Dopo aver creato uno stream e importato i dati, è il momento di creare un'app Vertex AI Vision per elaborare i dati. Un'app può essere considerata una pipeline automatizzata che collega quanto segue:

  • Importazione dei dati: un feed video viene importato in uno stream.
  • Analisi dei dati: dopo l'importazione è possibile aggiungere un modello di AI. Qualsiasi operazione di computer vision può essere eseguita sulle informazioni video inserite.
  • Archiviazione dei dati: le due versioni del feed video (lo stream originale e lo stream elaborato dal modello di AI) possono essere archiviate in un warehouse multimediale.

Nella console Google Cloud un'app è rappresentata come un grafico. Inoltre, in Vertex AI Vision un grafico dell'app deve avere almeno due nodi: un nodo di origine video (stream) e almeno un altro nodo (un modello di elaborazione o una destinazione di output).

Crea un'applicazione vuota

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

Console

Crea un'app nella Google Cloud console.

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

    Vai alla scheda Applicazioni

  2. Fai clic sul pulsante Crea.

  3. Inserisci person-blur-app come nome dell'app e scegli la tua regione.

  4. Fai clic su Crea.

    Finestra di dialogo Crea una nuova app nella UI

Aggiungi 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 stream che sta già importando dati.
  2. Nodo di elaborazione: il modello di sfocatura delle persone che agisce sui dati importati.
  3. Nodo di archiviazione: il warehouse multimediale che archivia i video elaborati e funge anche da archivio dei metadati. Il magazzino consente di generare informazioni di analisi sui dati video inseriti, nonché di memorizzare le informazioni dedotte sui dati dai modelli di AI.

Console

Aggiungi nodi dei componenti all'app nella console.

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

    Vai alla scheda Applicazioni

  2. Nella riga person-blur-app, seleziona Visualizza grafico. Viene visualizzata la visualizzazione del grafico della pipeline di elaborazione.

Aggiungere un nodo di importazione dati

  1. Per aggiungere il nodo del flusso di input, seleziona l'opzione Flussi nella sezione Connettori del menu laterale.

  2. Nella sezione Origine del menu Stream che si apre, seleziona Aggiungi stream.

  3. Nel menu Aggiungi stream, scegli Seleziona dagli stream esistenti e seleziona person-blur-app dall'elenco delle risorse di stream.

    Aggiungere il menu degli stream nell'interfaccia utente

  4. Per aggiungere lo stream al grafico dell'app, fai clic su Aggiungi stream.

Aggiungere un nodo di elaborazione dei dati

  1. Per aggiungere il nodo del modello di sfocatura delle persone, seleziona l'opzione Sfocatura delle persone nella sezione Processori generali del menu laterale.

  2. Nel menu delle opzioni "Offuscamento persone" che si apre, lascia Occlusione completa selezionata e attiva l'opzione Offusca solo i volti.

    Aggiungere il modello di sfocatura del volto nell'interfaccia utente

Aggiungere un nodo di archiviazione dei dati

  1. Per aggiungere il nodo di destinazione di output (spazio di archiviazione), seleziona l'opzione Media Warehouse 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 Connetti warehouse, seleziona Crea nuovo warehouse. Assegna al warehouse il nome person-blur-app e lascia la durata TTL a 14 giorni.

  4. Per aggiungere il warehouse, fai clic su Crea.

    Aggiungere il nodo del magazzino nell'interfaccia utente

Esegui il deployment dell'applicazione

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

Console

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

    Vai alla scheda Applicazioni

  2. Seleziona Visualizza grafico accanto all'app person-blur-app nell'elenco.

  3. Nella pagina del builder del grafico delle applicazioni, fai clic sul pulsante Deploy (Esegui il deployment).

  4. Nella finestra di dialogo di conferma successiva, seleziona Implementa.

    Il completamento dell'operazione di deployment potrebbe richiedere diversi minuti. Al termine del deployment, accanto ai nodi vengono visualizzati segni di spunta verdi.

    App di cui è stato eseguito il deployment nell'interfaccia utente

Visualizzare i dati di output elaborati

Console

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

    Vai alla scheda Magazzini

  2. Trova il magazzino person-blur-output-storage nell'elenco e fai clic su Visualizza asset.

    Visualizzare l'output dell'app nella UI

Esegui la 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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Elimina singole risorse

Eliminare un warehouse

  1. In the Google Cloud console, go to the Warehouses page.

    Go to the Warehouses tab

  2. Locate your person-blur-output-storage warehouse.
  3. To delete the warehouse, click Actions, click Delete warehouse, and then follow the instructions.

Eliminazione di un flusso

  1. In the Google Cloud console, go to the Streams page.

    Go to the Streams tab

  2. Locate your input-stream stream.
  3. To delete the stream, click Actions, click Delete stream, and then follow the instructions.

Eliminare un'app

  1. In the Google Cloud console, go to the Applications page.

    Go to the Applications tab

  2. Locate your person-blur-app app.
  3. To delete the app, click Actions, click Delete application, and then follow the instructions.

Passaggi successivi