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 stream 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: permite 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.

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, é preciso 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ídeos 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 "Streams"

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