Criar um app de contagem de ocupação com entrada de streaming remoto


A Vertex AI Vision é uma plataforma com tecnologia de IA que pode ser usada para ingerir, analisar e armazenar dados de vídeo . Com a Vertex AI Vision, é possível criar e implantar aplicativos de IA. É possível criar soluções completas da Vertex AI Vision aproveitando a integração dela com outros componentes do produto.

Para começar a implementar soluções usando a plataforma Vertex AI Vision, revise os seguintes conceitos e componentes da Vertex AI Vision:

  • Streams: representam uma camada de streaming de vídeo da sua solução. A fonte de streaming pode ser um vídeo ao vivo (por exemplo, uma câmera IP) ou um arquivo de vídeo (por exemplo, um arquivo MP4).

  • Aplicativos: ative a conexão entre um stream e um processador de IA para realizar uma operação de aprendizado de máquina no vídeo. Por exemplo, você pode conectar um stream de câmera a um modelo de IA que conta as pessoas que passam na frente dela.

  • Warehouses de mídia: armazenam o vídeo ingerido por streams emGoogle Cloud storage. O armazenamento de dados nesse destino permite consultar a saída e os metadados da análise dos processadores de IA usados em dados dos fluxos ingeridos.

Objetivos

Este tutorial mostra como fazer o seguinte:

  • Crie um app de contagem de ocupação.
  • Implante o app para uso.
  • Configure uma máquina remota para fazer streaming de vídeo.
  • Ingira o vídeo de streaming em um nó de stream no seu app.
  • Pesquise vídeos no Media Warehouse da Vertex AI Vision.

Custos

Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.

Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.

Antes de começar

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine and Vision AI APIs.

    Enable the APIs

  5. 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 following roles to the service account: Vision AI > Vision AI Editor, Compute Engine > Compute Instance Admin (beta), Storage > Storage Object Viewer.

      To grant a role, find the Select a role list, then select the role.

      To grant additional roles, click Add another role and add each additional role.

    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.

  6. 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.
  7. Install the Google Cloud CLI.

  8. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  9. To initialize the gcloud CLI, run the following command:

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

    Go to project selector

  11. Make sure that billing is enabled for your Google Cloud project.

  12. Enable the Compute Engine and Vision AI APIs.

    Enable the APIs

  13. 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 following roles to the service account: Vision AI > Vision AI Editor, Compute Engine > Compute Instance Admin (beta), Storage > Storage Object Viewer.

      To grant a role, find the Select a role list, then select the role.

      To grant additional roles, click Add another role and add each additional role.

    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.

  14. 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.
  15. Install the Google Cloud CLI.

  16. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  17. To initialize the gcloud CLI, run the following command:

    gcloud init
  18. Função necessária apenas se você copiar um arquivo de vídeo de amostra de um bucket do Cloud Storage.

Criar um aplicativo de contagem de ocupação

Depois de configurar o ambiente, a primeira etapa é criar o app que processa seus dados. Um app pode ser considerado um pipeline automatizado que conecta o seguinte:

  • Ingestão de dados: um feed de vídeo é ingerido em um stream.
  • Análise de dados: um modelo de IA pode ser adicionado após a ingestão. Qualquer operação de visão computacional pode ser realizada nas informações de vídeo ingeridas.
  • Armazenamento de dados: as duas versões do feed de vídeo (o stream original e o stream processado pelo modelo de IA) podem ser armazenadas em um warehouse de mídia.

No console Google Cloud , um app é representado como um gráfico. Além disso, na Vertex AI Vision, um gráfico de app precisa 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).

Criar um app vazio

Antes de preencher o gráfico de apps, é necessário criar um app vazio.

Console

Crie um app no console Google Cloud .

  1. Abra a guia Aplicativos do painel da Vertex AI Vision.

    Acesse a guia "Aplicativos"

  2. Clique no botão Criar.

  3. Insira occupancy-count-app como o nome do app e escolha sua região.

  4. Clique em Criar.

Adicionar nós do componente do app

Depois de criar o aplicativo vazio, adicione os três nós ao gráfico do app:

  1. Nó de ingestão: o recurso de stream que ingere dados enviados de uma instância de VM do Compute Engine criada por você.
  2. Nó de processamento: o modelo de análise de ocupação que atua nos dados ingeridos.
  3. Nó de armazenamento: o warehouse de mídia que armazena vídeos processados e também serve como um repositório de metadados. O data warehouse permite gerar informações de análise sobre dados de vídeo ingeridos e armazena informações que os modelos de IA inferem sobre os dados.

Console

Adicione nós de componentes ao app no console.

  1. Abra a guia Aplicativos do painel da Vertex AI Vision.

    Acesse a guia "Aplicativos"

  2. Na linha occupancy-count-app, selecione Ver gráfico. Isso leva você à visualização gráfica do pipeline de processamento.

Adicionar um nó de ingestão de dados

  1. Para adicionar um nó de stream de entrada, selecione a opção Streams na seção Conectores do menu lateral.

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

  3. No menu Adicionar streams, escolha Registrar novos streams e adicione occupancy-count-stream como o nome do stream.

  4. Para adicionar o stream ao gráfico do app, clique em Adicionar streams.

Adicionar um nó de processamento de dados

  1. Para adicionar o nó do modelo de contagem de ocupação, selecione a opção análise de ocupação na seção Modelos especializados do menu lateral.

  2. Deixe as seleções padrão Pessoas e Veículos.

Adicionar um nó de armazenamento de dados

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

  2. No menu Media Warehouse da Vertex AI Vision, clique em Conectar warehouse.

  3. No menu Conectar warehouse, selecione Criar novo armazenamento. Nomeie o warehouse como occupancy-count-warehouse e deixe a duração do TTL em 14 dias.

  4. Clique no botão Criar para adicionar o warehouse.

Implantar o app para uso

Depois de criar o app completo com todos os componentes necessários, a última etapa para usar o app é implantá-lo.

Console

  1. Abra a guia Aplicativos do painel da Vertex AI Vision.

    Acesse a guia "Aplicativos"

  2. Selecione Ver gráfico ao lado do app occupancy-count-app na lista.

  3. Na página do criador de gráficos de aplicativos, clique no botão Implantar.

  4. Na caixa de diálogo de confirmação a seguir, selecione Implantar.

    A operação de implantação pode levar alguns minutos para ser concluída. Quando a implantação for concluída, marcas de seleção verdes vão aparecer ao lado dos nós.

    App implantado na UI

Configurar uma máquina remota para transmitir vídeo

Agora que você tem um app de contagem de ocupação implantado pronto para receber, processar e armazenar dados de streaming, é necessário transmitir dados de vídeo para o app.

Neste tutorial, você vai criar uma instância de VM do Compute Engine que hospeda um vídeo e enviar os dados de streaming desse vídeo da VM.

Criar uma VM do Linux

A primeira etapa para enviar vídeo de uma instância de VM do Compute Engine é criar a instância.

Console

  1. No console, acesse a página Instâncias de VM.

    Acessar instâncias de VM

  2. Selecione o projeto e clique em Continuar.

  3. Clique em Criar instância.

  4. Especifique um Nome para sua VM. Saiba mais em Convenção de nomenclatura de recursos.

  5. Opcional: altere a zona desta VM. O Compute Engine seleciona, aleatoriamente, a lista de zonas dentro de cada região para incentivar o uso em várias zonas.

  6. Aceite as opções padrão restantes. Para mais informações sobre essas opções, consulte Criar e iniciar uma VM.

  7. Para criar e iniciar a VM, clique em Criar.

Configurar o ambiente da VM

Depois que a VM for iniciada, use o console para estabelecer uma conexão SSH no navegador. Depois de estabelecer essa conexão, baixe a ferramenta de linha de comando vaictl para ingerir vídeo no seu app.

Console

Estabelecer uma conexão SSH com a VM

  1. No console, acesse a página Instâncias de VM.

    Acessar instâncias de VM

  2. Na seção Conectar da linha da instância criada, clique em SSH. Isso abre uma conexão SSH em uma nova janela do navegador.

    A opção SSH na UI

Baixe a ferramenta de linha de comando vaictl

  1. Na janela SSH no navegador, faça o download da ferramenta de linha de comando do Vertex AI Vision (vaictl) usando o seguinte comando:

    wget https://github.com/google/visionai/releases/download/v0.0.5/visionai_0.0-5_amd64.deb
    
  2. Instale a ferramenta de linha de comando executando o seguinte comando:

    sudo apt install ./visionai_0.0-5_amd64.deb
    
  3. Para testar a instalação, execute o seguinte comando:

    vaictl --help
    

Ingerir um arquivo de vídeo no app

Depois de configurar o ambiente de VM, copie um arquivo de vídeo de amostra e use vaictl para transmitir os dados de vídeo para o app de contagem de ocupação.

SSH no navegador

Copiar um vídeo de amostra para sua VM

  1. Na janela SSH no navegador da VM, copie um vídeo de amostra com o seguinte comando gcloud storage cp. Substitua a seguinte variável:
    • SOURCE: o local de um arquivo de vídeo a ser usado. Você pode usar sua própria fonte de arquivo de vídeo (por exemplo, gs://BUCKET_NAME/FILENAME.mp4) ou usar um dos vídeos de amostra:
      • gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4 (vídeo com pessoas e veículos, fonte)
      • gs://cloud-samples-data/vertex-ai-vision/highway_vehicles.mp4 (vídeo apenas com veículos, fonte)
    gcloud storage cp SOURCE .

Fazer streaming de vídeo da VM e ingerir dados no app

  1. Para enviar esse arquivo de vídeo local para o fluxo de entrada do app, use o comando a seguir. Faça as seguintes substituições de variáveis:
    • PROJECT_ID: o ID do projeto do Google Cloud .
    • LOCATION_ID: o ID do local. Exemplo, us-central1. Para mais informações, consulte Locais do Cloud.
    • LOCAL_FILE.EXT: o nome de um arquivo de vídeo local. Por exemplo, my-video.mp4.
    • Sinalização --loop: opcional. Faz um loop nos dados do arquivo para simular o streaming.

    Esse comando transmite um arquivo de vídeo para um stream. Se você usar a flag --loop, o vídeo será repetido no stream até que você interrompa o comando:

    vaictl -p PROJECT_ID \
        -l LOCATION_ID \
        -c application-cluster-0 \
        --service-endpoint visionai.googleapis.com \
    send video-file to streams 'occupancy-count-stream' --file-path LOCAL_FILE.EXT --loop

Pode levar cerca de 100 segundos entre o início da operação de ingestão vaictl e o vídeo aparecer no painel.

Depois que a ingestão de stream estiver disponível, você poderá conferir o feed de vídeo na guia Streams do painel da Vertex AI Vision selecionando o stream occupancy-count-stream.

Acessar a guia "Mural"

Visualização de vídeo ao vivo sendo transmitido na UI
Visualização em tempo real do vídeo sendo ingerido no stream no console Google Cloud . Crédito do vídeo: Elizabeth Mavor em Pixabay (pixelização adicionada).

Pesquisar conteúdo de vídeo no data warehouse

Depois de ingerir dados de vídeo no app de processamento, você pode conferir os dados analisados e pesquisar com base nas informações de análise de ocupação.

Console

  1. Abra a guia Armazéns do painel da Vertex AI Vision.

    Acesse a guia "Armazéns".

  2. Encontre o depósito occupancy-count-warehouse na lista e clique em Ver recursos.

  3. Na seção Contagem de pessoas ou Contagem de veículos, defina o valor Mín. como 1 e o valor Máx. como 5.

  4. Para filtrar os dados de vídeo processados armazenados no Media Warehouse da Vertex AI Vision, clique em Pesquisar.

    Visualização de dados armazenados facetados na UI
    Uma visualização dos dados de vídeo armazenados que correspondem aos critérios de pesquisa no console Google Cloud . Crédito do vídeo: Elizabeth Mavor no Pixabay (critérios de pesquisa aplicados).

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

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

Excluir recursos individuais

Excluir instância de VM do Compute Engine

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. Select the checkbox for the instance that you want to delete.
  3. To delete the instance, click More actions, click Delete, and then follow the instructions.

Excluir um warehouse

  1. In the Google Cloud console, go to the Warehouses page.

    Go to the Warehouses tab

  2. Locate your occupancy-count-warehouse warehouse.
  3. To delete the warehouse, click Actions, click Delete warehouse, and then follow the instructions.

Excluir um stream

  1. In the Google Cloud console, go to the Streams page.

    Go to the Streams tab

  2. Locate your occupancy-count-stream stream.
  3. To delete the stream, click Actions, click Delete stream, and then follow the instructions.

Excluir um app

  1. In the Google Cloud console, go to the Applications page.

    Go to the Applications tab

  2. Locate your occupancy-count-app app.
  3. To delete the app, click Actions, click Delete application, and then follow the instructions.

A seguir