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 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.

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 di 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 sede. 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 nello stream. 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 di variabili:

  • PROJECT_ID: il tuo ID progetto Google Cloud .
  • LOCATION_ID: il tuo ID sede. 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 caricamento di 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).

Creare 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:

  • 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 prima 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 della persona 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 warehouse consente di generare informazioni analitiche sui dati video importati, nonché di archiviare 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 da stream esistenti e seleziona person-blur-app dall'elenco delle risorse di stream.

    Aggiungere il menu dei flussi 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 (Implementa).

  4. Nella finestra di dialogo di conferma successiva, seleziona Esegui il deployment.

    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