Crea una app para desenfocar rostros con almacenamiento en almacén


Vertex AI Vision es una plataforma potenciada por IA que puedes usar para ingerir, analizar y almacenar datos de video. Vertex AI Vision te permite compilar e implementar aplicaciones basadas en IA. Puedes compilar soluciones de Vertex AI Vision de extremo a extremo aprovechando la integración de Vertex AI Vision con otros componentes del producto.

Para comenzar a implementar soluciones con la plataforma de Vertex AI Vision, revisa los siguientes conceptos y componentes de Vertex AI Vision:

  • Streams: Representan una capa de transmisión de video de tu solución. La fuente de transmisión puede ser un video en vivo (por ejemplo, una cámara IP) o un archivo de video (por ejemplo, un archivo MP4).

  • Aplicaciones: Habilitan la conexión entre una transmisión y un procesador de IA para realizar una operación de aprendizaje automático en el video. Por ejemplo, puedes conectar una transmisión de cámara a un modelo de IA que cuente a las personas que pasan frente a ella.

  • Almacenes de contenido multimedia: Almacenan el video que se transfiere desde las transmisiones aGoogle Cloud storage. Almacenar datos en este destino te permite consultar el resultado del análisis y los metadatos de los procesadores de IA que se usan en los datos de las transmisiones ingeridas.

Objetivos

En este instructivo, se muestra cómo realizar lo siguiente:

  • Crea un recurso de flujo de entrada de datos.
  • Comienza a transmitir datos de video en este recurso de transmisión.
  • Crea una aplicación vacía.
  • Agrega nodos a tu aplicación para transmitir, modificar y almacenar datos.
  • Implementar tu app para que la uses
  • Visualiza el resultado de los datos procesados en la consola de Google Cloud .

Antes de comenzar este instructivo, debes tener un recurso de video de transmisión para enviar datos a tu app de Vertex AI Vision. Este recurso puede ser un video local o un feed de RTSP. Estos datos de video deben contener rostros humanos que la app de ejemplo pueda desenfocar.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

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

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.

Es posible que los usuarios Google Cloud nuevos cumplan con los requisitos para obtener una prueba gratuita.

Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  1. Obtén la ubicación de la fuente de video de transmisión, ya sea localmente (por ejemplo, ./sample_video.mp4) o la dirección IP de la transmisión RTSP en vivo (por ejemplo, rtsp://192.168.1.180:540). Necesitas esta información para comenzar a transferir datos a una transmisión después de crear el recurso de transmisión.
  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. Instala la herramienta vaictl para transferir datos a una transmisión. (SO: Debian GNU/Linux, arquitectura de CPU: x86_64):
    1. Descarga el paquete requerido:
      wget https://github.com/google/visionai/releases/download/v0.0.5/visionai_0.0-5_amd64.deb
    2. Después de descargar el paquete, ejecuta el siguiente comando en el directorio en el que descargaste el archivo:
      sudo apt install ./visionai_0.0-5_amd64.deb
    3. Verifica la instalación:
      vaictl --help

Crea una transmisión

Para crear una app de análisis de video en streaming, primero debes crear y registrar un recurso de transmisión. Como recurso que recibe los datos de video de los usuarios, la transmisión es obligatoria en cualquier situación que crees con Vertex AI Vision.

Console

Para crear un flujo nuevo en la consola de Google Cloud , sigue estos pasos.

  1. Abre la pestaña Streams del panel de Vertex AI Vision.

    Ir a la pestaña Flujos

  2. Haz clic en Registrar.

  3. Ingresa input-stream como el nombre de la transmisión y selecciona la región en la que deseas crearla.

  4. Haz clic en Registrarse para crear una o más transmisiones.

    Opciones de registro de transmisiones en la IU

Transfiere el video a la transmisión

Después de crear un recurso de transmisión, puedes usar la herramienta de línea de comandos de vaictl para enviar datos de video a la transmisión.

Cámara IP

Si realizas pruebas con una cámara IP activa, debes obtener la dirección IP de la cámara. Debes proporcionar esta información con la solicitud, junto con otras sustituciones de variables:

  • PROJECT_ID: El ID de tu proyecto de Google Cloud .
  • LOCATION_ID: Es el ID de tu ubicación. Por ejemplo: us-central1. Para obtener más información, consulta Ubicaciones de Cloud.
  • RTSP_ADDRESS: Es la dirección de tu feed del protocolo de transmisión en tiempo real (RTSP). Por ejemplo: rtsp://192.168.1.180:540.

Este comando envía una transmisión RTSP al flujo. Debes ejecutar este comando en la red que tiene acceso directo al feed de 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 el comando se ejecuta correctamente, obtendrás el siguiente resultado:

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

Archivo de video local

También puedes enviar datos de archivos de video a una transmisión en lugar de a un feed de video en vivo. Esta opción puede ser útil si no tienes acceso a una cámara IP.

La única diferencia en esta opción son los parámetros del comando vaictl. En lugar de pasar la información de la cámara IP, pasa la ruta de acceso al archivo de video local. Realiza las siguientes sustituciones de variables:

  • PROJECT_ID: El ID de tu proyecto de Google Cloud .
  • LOCATION_ID: Es el ID de tu ubicación. Por ejemplo: us-central1. Más información.
  • LOCAL_FILE.EXT: Es el nombre de un archivo de video local. Por ejemplo, my-video.mp4
  • Marca --loop: Opcional. Repite los datos del archivo para simular la transmisión.

Este comando transmite un archivo de video a una transmisión. Si usas la marca --loop, el video se repetirá en el flujo hasta que detengas el 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

Es posible que transcurran alrededor de 100 segundos entre el inicio de la operación de transferencia de vaictl y la aparición del video en el panel.

Una vez que la transferencia de la transmisión esté disponible, podrás ver el feed de video en la pestaña Transmisiones del panel de Vertex AI Vision. Para ello, selecciona la transmisión input-stream.

Ir a la pestaña Flujos

Vista del video en vivo que se transmite en la IU
Vista en vivo del video que se ingiere en la transmisión en la consola de Google Cloud . Crédito del video: Tima Miroshnichenko en Pexels (se agregó pixelación).

Crea una aplicación de desenfoque de rostros

Después de crear una transmisión y transferir datos a ella, es hora de crear una app de Vertex AI Vision para procesar los datos. Una app se puede considerar como una canalización automatizada que conecta los siguientes elementos:

  • Transferencia de datos: Se transfiere un feed de video a una transmisión.
  • Análisis de datos: Se puede agregar un modelo de IA después de la transferencia. Se puede realizar cualquier operación de visión por computadora en la información de video que se ingiere.
  • Almacenamiento de datos: Las dos versiones del feed de video (la transmisión original y la transmisión procesada por el modelo de IA) se pueden almacenar en un almacén de medios.

En la consola de Google Cloud , una app se representa como un gráfico. Además, en Vertex AI Vision, un gráfico de la app debe tener al menos dos nodos: un nodo de fuente de video (transmisión) y al menos un nodo más (un modelo de procesamiento o un destino de salida).

Crea una aplicación vacía

Antes de completar el gráfico de la app, primero debes crear una app vacía.

Console

Crea una app en la consola de Google Cloud .

  1. Abre la pestaña Aplicaciones del panel de Vertex AI Vision.

    Ir a la pestaña Aplicaciones

  2. Haz clic en el botón Crear.

  3. Ingresa person-blur-app como el nombre de la app y elige tu región.

  4. Haz clic en Crear.

    Diálogo de creación de una app nueva en la IU

Agrega nodos componentes de la app

Después de crear la aplicación vacía, puedes agregar los tres nodos al gráfico de la app:

  1. Nodo de transferencia: Es el recurso de transmisión que ya está transfiriendo datos.
  2. Nodo de procesamiento: Es el modelo de desenfoque de personas que actúa sobre los datos ingeridos.
  3. Nodo de almacenamiento: Es el almacén de contenido multimedia que almacena los videos procesados y que también funciona como almacén de metadatos. El almacén permite generar información de análisis sobre los datos de video ingeridos, además de almacenar la información que infieren los modelos de IA sobre los datos.

Console

Agrega nodos de componentes a tu app en la consola.

  1. Abre la pestaña Aplicaciones del panel de Vertex AI Vision.

    Ir a la pestaña Aplicaciones

  2. En la línea person-blur-app, selecciona Ver gráfico. Esta acción te llevará a la visualización del gráfico de la canalización de procesamiento.

Agrega un nodo de transferencia de datos

  1. Para agregar el nodo de flujo de entrada, selecciona la opción Flujos en la sección Conectores del menú lateral.

  2. En la sección Fuente del menú Transmisión que se abre, selecciona Agregar transmisiones.

  3. En el menú Agregar transmisiones, elige Seleccionar entre transmisiones existentes y selecciona person-blur-app en la lista de recursos de transmisión.

    Menú Agregar transmisiones en la IU

  4. Para agregar el flujo al gráfico de la app, haz clic en Agregar flujos.

Agrega un nodo de procesamiento de datos

  1. Para agregar el nodo del modelo de desenfoque de personas, selecciona la opción Desenfoque de personas en la sección Procesadores generales del menú lateral.

  2. En el menú de opciones "Desenfoque de personas" que se abre, deja seleccionada la opción Oclusión completa y habilita la opción Desenfoque solo de rostros.

    Se agregó el modelo de desenfoque de rostros en la IU

Cómo agregar un nodo de almacenamiento de datos

  1. Para agregar el nodo de destino de salida (almacenamiento), selecciona la opción Almacén de contenido multimedia de Vertex AI Vision en la sección Conectores del menú lateral.

  2. En el menú Almacén de medios de Vertex AI Vision, haz clic en Conectar almacén.

  3. En el menú Conectar almacén, selecciona Crear almacén nuevo. Asigna el nombre person-blur-app al almacén y deja la duración del TTL en 14 días.

  4. Para agregar el almacén, haz clic en Crear.

    Agrega un nodo de almacén en la IU

Implementa tu aplicación

Después de compilar tu app integral con todos los componentes necesarios, el último paso para usarla es implementarla.

Console

  1. Abre la pestaña Aplicaciones del panel de Vertex AI Vision.

    Ir a la pestaña Aplicaciones

  2. Selecciona Ver gráfico junto a la app de person-blur-app en la lista.

  3. En la página del compilador de gráficos de la aplicación, haz clic en el botón Implementar.

  4. En el siguiente diálogo de confirmación, selecciona Implementar.

    La operación de implementación puede tardar varios minutos en completarse. Cuando finalice la implementación, aparecerán marcas de verificación verdes junto a los nodos.

    App implementada en la IU

Cómo ver los datos de salida procesados

Console

  1. Abre la pestaña Almacenes del panel de Vertex AI Vision.

    Ir a la pestaña Almacenes

  2. Busca el almacén person-blur-output-storage en la lista y haz clic en Ver recursos.

    Cómo ver el resultado de la app en la IU

Realiza una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

  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.

Borra los recursos individuales

Borra un almacén

  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.

Borrar una transmisión

  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.

Borra una aplicación

  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.

¿Qué sigue?