Crie uma app de esbatimento de caras com armazenamento em armazém


O Vertex AI Vision é uma plataforma com tecnologia de IA que pode usar para carregar, analisar e armazenar dados de vídeo . O Vertex AI Vision permite-lhe criar e implementar aplicações de IA. Pode criar soluções de Vertex AI Vision ponto a ponto tirando partido da integração do Vertex AI Vision com outros componentes do produto.

Para começar a implementar soluções com a plataforma Vertex AI Vision, reveja os seguintes conceitos e componentes do Vertex AI Vision:

  • Streams: representam uma camada de streaming de vídeo da sua solução. A origem da stream pode ser um vídeo em direto (por exemplo, uma câmara IP) ou um ficheiro de vídeo (por exemplo, um ficheiro MP4).

  • Aplicações: ative a ligação entre uma stream e um processador de IA para realizar uma operação de aprendizagem automática no vídeo. Por exemplo, pode associar um stream de vídeo a um modelo de IA que conta as pessoas que passam em frente ao mesmo.

  • Armazéns de conteúdo multimédia: armazenam o vídeo carregado por streams para o Google Cloud armazenamento. O armazenamento de dados neste destino permite-lhe consultar a saída da análise e os metadados dos processadores de IA usados em dados dos streams carregados.

Objetivos

Este tutorial mostra como fazer o seguinte:

  • Crie um recurso de stream de entrada de dados.
  • Comece a transmitir dados de vídeo para este recurso de stream.
  • Crie uma aplicação vazia.
  • Adicione nós à sua aplicação para transmitir dados, modificar dados e armazenar dados.
  • Implemente a sua app para a usar.
  • Veja a saída de dados processados na Google Cloud consola.

Antes de começar este tutorial, tem de ter um recurso de vídeo em streaming para enviar dados para a sua app Vertex AI Vision. Este recurso pode ser um vídeo local ou um feed RTSP. Estes dados de vídeo têm de conter rostos humanos que a app de exemplo pode, em seguida, desfocar.

Custos

Neste documento, usa os seguintes componentes faturáveis do Google Cloud:

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

Para gerar uma estimativa de custos com base na sua utilização projetada, use a calculadora de preços.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.

Antes de começar

  1. Obtenha a localização da sua origem de vídeo em streaming, localmente (por exemplo, ./sample_video.mp4) ou o endereço IP do feed RTSP em direto (por exemplo, rtsp://192.168.1.180:540). Precisa destas informações para começar a carregar dados para uma stream depois de criar o recurso de 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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Vision AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  6. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. 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.

    5. Click Create and continue.
    6. 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.

    7. Click Continue.
    8. 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. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  11. Para inicializar a CLI gcloud, execute o seguinte comando:

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  13. Verify that billing is enabled for your Google Cloud project.

  14. Enable the Vision AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  15. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. 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.

    5. Click Create and continue.
    6. 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.

    7. Click Continue.
    8. 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. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  20. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  21. Instalar a ferramenta vaictl para carregar dados para uma stream (SO: Debian GNU/Linux, arquitetura da CPU: x86_64):
    1. Transfira o pacote necessário:
      wget https://github.com/google/visionai/releases/download/v0.0.5/visionai_0.0-5_amd64.deb
    2. Depois de transferir o pacote, execute o seguinte comando no diretório onde transferiu o ficheiro:
      sudo apt install ./visionai_0.0-5_amd64.deb
    3. Valide a instalação:
      vaictl --help
  22. Crie uma stream

    Para criar uma app de análise de vídeo em streaming, primeiro tem de criar e registar um recurso de stream. Como o recurso que recebe os dados de vídeo dos utilizadores, a stream é necessária em qualquer cenário que criar com o Vertex AI Vision.

    Consola

    Para criar uma nova stream na Google Cloud consola, siga estes passos.

    1. Abra o separador Streams do painel de controlo do Vertex AI Vision.

      Aceda ao separador Streams

    2. Clique em Registar.

    3. Introduza input-stream como o nome da stream e selecione a região onde quer criar a stream.

    4. Clique em Registar para criar uma ou mais streams.

      Registe opções de streams na IU

    Carregue vídeo para a stream

    Depois de criar um recurso de stream, pode usar a vaictl ferramenta de linha de comandos para enviar dados de vídeo para a stream.

    Câmara IP

    Se estiver a testar com uma câmara IP em direto, tem de obter o endereço IP da câmara. Tem de fornecer estas informações com o pedido, juntamente com outras substituições de variáveis:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • LOCATION_ID: o ID da sua localização. Por exemplo, us-central1. Para mais informações, consulte o artigo Localizações na nuvem.
    • RTSP_ADDRESS: o endereço do seu feed do protocolo de streaming em tempo real (RTSP). Por exemplo, rtsp://192.168.1.180:540.

    Este comando envia um feed RTSP para a stream. Tem de executar este comando na rede que tem acesso direto ao 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 o comando for executado com êxito, recebe a seguinte saída:

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

    Ficheiro de vídeo local

    Também pode enviar dados de ficheiros de vídeo para uma stream em vez de um feed de vídeo em direto. Esta opção pode ser útil se não tiver acesso a uma câmara IP.

    A única diferença nesta opção são os parâmetros do comando vaictl. Em vez de transmitir as informações da câmara IP, transmita o caminho do ficheiro de vídeo local. Faça as seguintes substituições de variáveis:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • LOCATION_ID: o ID da sua localização. Por exemplo, us-central1. Mais informações.
    • LOCAL_FILE.EXT: o nome do ficheiro de um ficheiro de vídeo local. Por exemplo, my-video.mp4.
    • Sinalizador --loop: opcional. Faz um ciclo dos dados de ficheiros para simular o streaming.

    Este comando envia um ficheiro de vídeo para uma stream. Se usar a flag --loop, o vídeo é repetido no stream até parar o 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
    

    Pode demorar cerca de 100 segundos entre o início da operação de carregamento vaictl e a apresentação do vídeo no painel de controlo.

    Depois de a ingestão de streams estar disponível, pode ver o feed de vídeo no separador Streams do painel de controlo do Vertex AI Vision selecionando a stream input-stream.

    Aceda ao separador Streams

    Vista do vídeo em direto em streaming na IU
    Vista em direto do vídeo que está a ser carregado na stream na Google Cloud consola. Créditos do vídeo: Tima Miroshnichenko no Pexels (pixelização adicionada).

    Crie uma aplicação de efeito esbatido a rostos

    Depois de criar uma stream e carregar dados para a stream, é altura de criar uma app Vertex AI Vision para processar os dados. Pode considerar uma app como um pipeline automatizado que liga o seguinte:

    • Carregamento de dados: um feed de vídeo é carregado numa stream.
    • Análise de dados: pode adicionar um modelo de IA após a ingestão. Qualquer operação de visão por computador pode ser realizada nas informações de vídeo carregadas.
    • Armazenamento de dados: as duas versões do feed de vídeo (a stream original e a stream processada pelo modelo de IA) podem ser armazenadas num armazém de multimédia.

    Na Google Cloud consola, uma app é representada como um gráfico. Além disso, no Vertex AI Vision, um gráfico de apps tem de ter, pelo menos, dois nós: um nó de origem de vídeo (stream) e , pelo menos, mais um nó (um modelo de processamento ou um destino de saída).

    Crie uma aplicação vazia

    Antes de poder preencher o gráfico de apps, tem de criar uma app vazia.

    Consola

    Crie uma app na Google Cloud consola.

    1. Abra o separador Aplicações do painel de controlo do Vertex AI Vision.

      Aceda ao separador Aplicações

    2. Clique no botão Criar.

    3. Introduza person-blur-app como o nome da app e escolha a sua região.

    4. Clique em Criar.

      Caixa de diálogo Criar uma nova app na IU

    Adicione nós de componentes de apps

    Depois de criar a aplicação vazia, pode adicionar os três nós ao gráfico da app:

    1. Nó de carregamento: o recurso de stream que já está a carregar dados.
    2. Nó de processamento: o modelo de esbatimento de pessoas que atua sobre os dados carregados.
    3. Nó de armazenamento: o armazém de multimédia que armazena vídeos processados e também funciona como um armazém de metadados. O armazém de dados permite gerar informações de estatísticas sobre os dados de vídeo carregados, bem como armazenar informações inferidas sobre os dados pelos modelos de IA.

    Consola

    Adicione nós de componentes à sua app na consola.

    1. Abra o separador Aplicações do painel de controlo do Vertex AI Vision.

      Aceda ao separador Aplicações

    2. Na linha person-blur-app, selecione Ver gráfico. Isto permite aceder à visualização do gráfico do pipeline de processamento.

    Adicione um nó de carregamento de dados

    1. Para adicionar o nó de fluxo de entrada, selecione a opção Streams na secção Connectors do menu lateral.

    2. Na secção Origem do menu Stream que é aberto, selecione Adicionar streams.

    3. No menu Adicionar streams, escolha Selecionar a partir de streams existentes e selecione person-blur-app na lista de recursos de streams.

      Adicione o menu de streams na IU

    4. Para adicionar a stream ao gráfico de apps, clique em Adicionar streams.

    Adicione um nó de tratamento de dados

    1. Para adicionar o nó do modelo de efeito esbatido de pessoas, selecione a opção Efeito esbatido de pessoas na secção Processadores gerais do menu lateral.

    2. No menu de opções "Desfocar pessoas" apresentado, deixe a opção Oclusão total selecionada e ative a opção Desfocar apenas rostos.

      Adicione o modelo de efeito esbatido a rostos na IU

    Adicione um nó de armazenamento de dados

    1. Para adicionar o nó de destino de saída (armazenamento), selecione a opção Media Warehouse do Vertex AI Vision na secção Conetores do menu lateral.

    2. No menu Media Warehouse da Vertex AI Vision, clique em Associar armazém.

    3. No menu Associar armazém, selecione Criar novo armazém. Dê o nome person-blur-app ao armazém e deixe a duração do TTL em 14 dias.

    4. Para adicionar o armazém, clique em Criar.

      Adicione um nó de armazém na IU

    Implemente a sua aplicação

    Depois de criar a sua app integral com todos os componentes necessários, o último passo para usar a app é implementá-la.

    Consola

    1. Abra o separador Aplicações do painel de controlo do Vertex AI Vision.

      Aceda ao separador Aplicações

    2. Selecione Ver gráfico junto à app person-blur-app na lista.

    3. Na página do criador de gráficos de aplicações, clique no botão Implementar.

    4. Na caixa de diálogo de confirmação seguinte, selecione Implementar.

      A operação de implementação pode demorar vários minutos a ser concluída. Após a conclusão da implementação, aparecem marcas de verificação verdes junto aos nós.

      App implementada na IU

    Veja os dados de saída processados

    Consola

    1. Abra o separador Armazéns do painel de controlo do Vertex AI Vision.

      Aceda ao separador Armazéns

    2. Encontre o armazém person-blur-output-storage na lista e clique em Ver recursos.

      Veja a saída da app na IU

    Limpar

    Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.

    Elimine o projeto

    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.

    Elimine recursos individuais

    Elimine um armazém

    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.

    Elimine uma stream

    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.

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

    O que se segue?