Créer une application de floutage de visage avec un stockage en entrepôt


Vertex AI Vision est une plate-forme basée sur l'IA que vous pouvez utiliser pour ingérer, analyser et stocker des données vidéo. Vertex AI Vision vous permet de créer et de déployer des applications d'IA. Vous pouvez créer des solutions Vertex AI Vision de bout en bout en tirant parti de l'intégration de Vertex AI Vision à d'autres composants du produit.

Pour commencer à implémenter des solutions à l'aide de la plate-forme Vertex AI Vision, consultez les concepts et composants Vertex AI Vision suivants :

  • Flux : représentent un calque de streaming vidéo de votre solution. La source du flux peut être une vidéo en direct (par exemple, une caméra IP) ou un fichier vidéo (par exemple, un fichier MP4).

  • Applications : permettent d'établir la connexion entre un flux et un processeur d'IA pour effectuer une opération de machine learning sur la vidéo. Par exemple, vous pouvez connecter un flux de caméra à un modèle d'IA qui compte les personnes qui passent devant.

  • Entrepôts multimédias : stockent les vidéos ingérées par les flux dans l'Google Cloud . Le stockage des données dans cette destination vous permet d'interroger les résultats d'analyse et les métadonnées des processeurs d'IA utilisés sur les données des flux ingérés.

Objectifs

Ce tutoriel vous explique comment effectuer les tâches suivantes :

  • Créez une ressource de flux de données d'entrée.
  • Commencez à diffuser des données vidéo dans cette ressource de flux.
  • Créez une application vide.
  • Ajoutez des nœuds à votre application pour diffuser, modifier et stocker des données.
  • Déployez votre application pour l'utiliser.
  • Affichez la sortie des données traitées dans la console Google Cloud .

Avant de commencer ce tutoriel, vous devez disposer d'une ressource vidéo en streaming pour envoyer des données à votre application Vertex AI Vision. Cette ressource peut être une vidéo locale ou un flux RTSP. Ces données vidéo doivent contenir des visages humains que l'application exemple peut ensuite flouter.

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

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

Pour obtenir une estimation des coûts en fonction de votre utilisation prévue, utilisez le simulateur de coût.

Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

  1. Obtenez l'emplacement de votre source vidéo en streaming, que ce soit en local (par exemple, ./sample_video.mp4) ou l'adresse IP du flux RTSP en direct (par exemple, rtsp://192.168.1.180:540). Vous aurez besoin de ces informations pour commencer à ingérer des données dans un flux après avoir créé la ressource de flux.
  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. Installation de l'outil vaictl pour ingérer des données dans un flux (OS: Debian GNU/Linux, architecture CPU: x86_64):
    1. Téléchargez le package requis :
      wget https://github.com/google/visionai/releases/download/v0.0.5/visionai_0.0-5_amd64.deb
    2. Après avoir téléchargé le package, exécutez la commande suivante dans le répertoire où vous avez téléchargé le fichier :
      sudo apt install ./visionai_0.0-5_amd64.deb
    3. Vérifiez l'installation :
      vaictl --help

Créer un flux

Pour créer une application d'analyse de vidéos en streaming, vous devez d'abord créer et enregistrer une ressource de flux. Le flux est la ressource qui reçoit les données vidéo des utilisateurs. Il est donc nécessaire dans tous les scénarios que vous créez à l'aide de Vertex AI Vision.

Console

Pour créer un flux dans la console Google Cloud , procédez comme suit.

  1. Ouvrez l'onglet Flux du tableau de bord Vertex AI Vision.

    Accéder à l'onglet "Flux"

  2. Cliquez sur Register (S'inscrire).

  3. Saisissez input-stream comme nom de flux et sélectionnez la région dans laquelle vous souhaitez créer votre flux.

  4. Cliquez sur Enregistrer pour créer un ou plusieurs flux.

    Options d'enregistrement des flux dans l'UI

Ingérer des vidéos dans le flux

Une fois que vous avez créé une ressource de flux, vous pouvez utiliser l'outil de ligne de commande vaictl pour envoyer des données vidéo au flux.

Caméra IP

Si vous effectuez des tests à l'aide d'une caméra IP en ligne, vous devez obtenir l'adresse IP de la caméra. Vous devez fournir ces informations avec la demande, ainsi que d'autres substitutions de variables :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION_ID : ID de votre emplacement. Par exemple, us-central1. Pour en savoir plus, consultez la section Emplacements Cloud.
  • RTSP_ADDRESS : adresse de votre flux Real Time Streaming Protocol (RTSP). Par exemple, rtsp://192.168.1.180:540.

Cette commande envoie un flux RTSP dans le flux. Vous devez exécuter cette commande sur le réseau qui a un accès direct au flux 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
      

Si la commande s'exécute correctement, vous obtenez le résultat suivant :

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

Fichier vidéo local

Vous pouvez également envoyer des données de fichier vidéo à un flux au lieu d'un flux vidéo en direct. Cette option peut être utile si vous n'avez pas accès à une caméra IP.

La seule différence dans cette option concerne les paramètres de la commande vaictl. Au lieu de transmettre les informations de la caméra IP, transmettez le chemin d'accès au fichier vidéo local. Effectuez les substitutions de variables suivantes :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION_ID : ID de votre emplacement. Par exemple, us-central1. En savoir plus
  • LOCAL_FILE.EXT : nom d'un fichier vidéo local. Exemple :my-video.mp4
  • Option --loop : facultative. Boucle les données du fichier pour simuler le streaming.

Cette commande diffuse un fichier vidéo dans un flux. Si vous utilisez l'indicateur --loop, la vidéo est mise en boucle dans le flux jusqu'à ce que vous arrêtiez la commande :

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

Il peut s'écouler environ 100 secondes entre le début de l'opération d'ingestion vaictl et l'apparition de la vidéo dans le tableau de bord.

Une fois l'ingestion du flux disponible, vous pouvez voir le flux vidéo dans l'onglet Flux du tableau de bord Vertex AI Vision en sélectionnant le flux input-stream.

Accéder à l'onglet "Flux"

Vue de la vidéo en direct diffusée dans l'UI
Aperçu en direct de la vidéo ingérée dans le flux dans la console Google Cloud . Crédit vidéo : Tima Miroshnichenko sur Pexels (pixellisation ajoutée).

Créer une application de floutage des visages

Une fois que vous avez créé un flux et ingéré des données dans ce flux, il est temps de créer une application Vertex AI Vision pour traiter les données. Une application peut être considérée comme un pipeline automatisé qui relie les éléments suivants :

  • Ingestion de données : un flux vidéo est ingéré dans un flux.
  • Analyse des données : un modèle d'IA peut être ajouté après l'ingestion. Toute opération de vision par ordinateur peut être effectuée sur les informations vidéo ingérées.
  • Stockage des données : les deux versions du flux vidéo (le flux d'origine et le flux traité par le modèle d'IA) peuvent être stockées dans un entrepôt multimédia.

Dans la console Google Cloud , une application est représentée sous forme de graphique. De plus, dans Vertex AI Vision, un graphique d'application doit comporter au moins deux nœuds : un nœud de source vidéo (flux) et au moins un autre nœud (un modèle de traitement ou une destination de sortie).

Créer une application vide

Avant de pouvoir remplir le graphique de l'application, vous devez d'abord créer une application vide.

Console

Créez une application dans la console Google Cloud .

  1. Ouvrez l'onglet Applications du tableau de bord Vertex AI Vision.

    Accéder à l'onglet "Applications"

  2. Cliquez sur le bouton Créer.

  3. Saisissez person-blur-app comme nom d'application, puis choisissez votre région.

  4. Cliquez sur Créer.

    Boîte de dialogue "Créer une application" dans l'UI

Ajouter des nœuds de composant d'application

Une fois l'application vide créée, vous pouvez ajouter les trois nœuds au graphique de l'application :

  1. Nœud d'ingestion : ressource de flux qui ingère déjà des données.
  2. Nœud de traitement : modèle de floutage des personnes qui agit sur les données ingérées.
  3. Nœud de stockage : entrepôt multimédia qui stocke les vidéos traitées et sert également de magasin de métadonnées. L'entrepôt permet de générer des informations analytiques sur les données vidéo ingérées et de stocker les informations déduites sur les données par les modèles d'IA.

Console

Ajoutez des nœuds de composant à votre application dans la console.

  1. Ouvrez l'onglet Applications du tableau de bord Vertex AI Vision.

    Accéder à l'onglet "Applications"

  2. Sur la ligne person-blur-app, sélectionnez Afficher le graphique. Vous êtes alors redirigé vers la visualisation graphique du pipeline de traitement.

Ajouter un nœud d'ingestion de données

  1. Pour ajouter le nœud de flux d'entrée, sélectionnez l'option Flux dans la section Connecteurs du menu latéral.

  2. Dans la section Source du menu Flux qui s'affiche, sélectionnez Ajouter des flux.

  3. Dans le menu Ajouter des flux, sélectionnez Sélectionner des flux existants, puis person-blur-app dans la liste des ressources de flux.

    Menu "Ajouter des flux" dans l'UI

  4. Pour ajouter le flux au graphique de l'application, cliquez sur Ajouter des flux.

Ajouter un nœud de traitement des données

  1. Pour ajouter le nœud de modèle de floutage de personnes, sélectionnez l'option Floutage de personnes dans la section Processeurs généraux du menu latéral.

  2. Dans le menu d'options "Floutage de personnes" qui s'ouvre, laissez l'option Occlusion complète sélectionnée et activez l'option Flouter uniquement les visages.

    Ajouter un modèle de floutage des visages dans l'UI

Ajouter un nœud de stockage de données

  1. Pour ajouter le nœud de destination de sortie (stockage), sélectionnez l'option Entrepôt de contenus multimédias de Vertex AI Vision dans la section Connecteurs du menu latéral.

  2. Dans le menu Entrepôt de données multimédias de Vertex AI Vision, cliquez sur Connecter un entrepôt.

  3. Dans le menu Connecter un entrepôt, sélectionnez Créer un entrepôt. Nommez l'entrepôt person-blur-app et laissez la durée TTL à 14 jours.

  4. Pour ajouter l'entrepôt, cliquez sur Créer.

    Ajouter un nœud d'entrepôt dans l'UI

Déployer votre application

Une fois que vous avez créé votre application de bout en bout avec tous les composants nécessaires, la dernière étape pour l'utiliser consiste à la déployer.

Console

  1. Ouvrez l'onglet Applications du tableau de bord Vertex AI Vision.

    Accéder à l'onglet "Applications"

  2. Sélectionnez Afficher le graphique à côté de l'application person-blur-app dans la liste.

  3. Sur la page du générateur de graphiques d'application, cliquez sur le bouton Deploy (Déployer) .

  4. Dans la boîte de dialogue de confirmation suivante, sélectionnez Déployer.

    Le déploiement peut prendre plusieurs minutes. Une fois le déploiement terminé, des coches vertes s'affichent à côté des nœuds.

    Application déployée dans l'UI

Afficher les données de sortie traitées

Console

  1. Ouvrez l'onglet Entrepôts du tableau de bord Vertex AI Vision.

    Accéder à l'onglet "Entrepôts"

  2. Recherchez l'entrepôt person-blur-output-storage dans la liste, puis cliquez sur Afficher les composants.

    Afficher la sortie de l'application dans l'UI

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Supprimer le projet

  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.

Supprimer des ressources individuelles

Supprimer un entrepôt

  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.

Supprimer un flux

  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.

Supprimer une application

  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.

Étapes suivantes