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 de données 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.

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 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 direct, 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. Exemple : us-central1. Pour en savoir plus, consultez 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. 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, ainsi que 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 parmi les 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 des personnes, sélectionnez l'option Floutage des personnes dans la section Processeurs généraux du menu latéral.

  2. Dans le menu d'options "Floutage des 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.

    L'opération de 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