Como processar conteúdo gerado pelo usuário com as Cloud Video Intelligence e Cloud Vision APIs

Nesta solução, descreveremos os serviços do Google Cloud Platform (GCP) usados para implantar um sistema escalonável a fim de filtrar envios de imagens e vídeos usando as APIs Cloud Video Intelligence e Cloud Vision.

Nas campanhas de marketing social, normalmente os consumidores são convidados a enviar imagens e vídeos gerados pelos usuários. Muitas vezes, os vídeos e as imagens são usados em concursos, em depoimentos sobre produtos ou como conteúdo gerado pelo usuário para sites de campanhas públicas. O processamento desses envios em escala requer recursos consideráveis. Com as Cloud Video Intelligence e Cloud Vision APIs, é possível implementar a filtragem inteligente de imagem e vídeo de modo escalonável e sem servidor, acelerando o processamento de envio. Se você usa o recurso de pesquisa segura na solução da Vision API e o recurso de detecção de conteúdo explícito na Video Intelligence API, é possível eliminar imagens e vídeos identificados como conteúdo não seguro ou indesejável antes do processamento.

Para saber mais sobre como implementar essa solução, você pode implantar o código seguindo este tutorial.

Conceitos

A criação de um aplicativo para processar imagens e vídeos gerados pelo usuário proporciona diversos desafios únicos:

  • Escalabilidade

    No início de uma campanha, o número de envios cresce rapidamente, mas à medida que a força da campanha diminui, os envios caem para quase zero. Se for incorporado a um serviço, esse processo precisará ser escalado em resposta à atividade do usuário.

  • Desempenho

    O processamento de cada imagem e vídeo requer um fluxo eficiente e inteligente. Em escala, o aplicativo precisa armazenar e processar de maneira eficiente cada vídeo e imagem enviados.

  • Inteligência

    A redução do número de imagens ou vídeos que precisam ser avaliados ou analisados antes do processamento aumenta muito a eficiência. O aplicativo precisa classificar cada envio e parar imediatamente o processamento de todos os resultados detectados como inadequados.

Arquitetura

Processamento escalável e inteligente usando o GCP

O GCP oferece uma plataforma escalável com os benefícios de modelos pré-treinados de aprendizado de máquina (ML, na sigla em inglês) disponíveis com o uso de chamadas diretas à API. A figura a seguir mostra a arquitetura de um sistema que classifica de maneira inteligente imagens e vídeos, além de filtrar resultados inapropriados.

Arquitetura do processamento de imagens e vídeos

Cloud Storage

Nesta arquitetura, você armazena todo o conteúdo no Cloud Storage, que oferece armazenamento durável e escalonável de objetos. Um recurso útil do Cloud Storage é a capacidade de gerar mensagens de notificação com base em eventos em um bucket do Cloud Storage. Com esse recurso, você pode especificar uma ação para cada arquivo enviado. À medida que o aplicativo faz upload de arquivos no Cloud Storage, as mensagens de notificação acionam o processamento.

A imagem a seguir mostra o payload JSON de uma mensagem de notificação do Cloud Storage.

Payload JSON de uma mensagem de notificação do Cloud Storage

Cloud Pub/Sub

O Cloud Pub/Sub oferece um serviço de mensagens escalonável e confiável. Nesta arquitetura, quando o conteúdo é enviado para um bucket do Cloud Storage, o sistema gera uma mensagem de notificação do Cloud Pub/Sub e o envia para o tópico do Cloud Pub/Sub configurado. Em seguida, o Cloud Pub/Sub entrega a mensagem de notificação do Cloud Storage. Separando a funcionalidade de upload da funcionalidade de processamento, o Cloud Pub/Sub isola efetivamente o aplicativo em uma arquitetura de back-end baseada em microsserviços.

Cloud Functions

O Cloud Functions oferece um ambiente de aplicativo leve e sem servidor, integrado a um intervalo de APIs avançadas, como a APIs Cloud Vision e Video Intelligence. Além disso, serviços de armazenamento como BigQuery, Cloud Storage, Cloud Spanner e Cloud Datastore são integrados ao Cloud Functions, facilitando o processamento de eventos sob demanda.

A figura a seguir mostra o tópico do Cloud Pub/Sub que aciona a função do Cloud GCStoPubSub para cada mensagem enviada ao tópico intelligentcontentfileupload.

Tópico do Cloud Pub/Sub que aciona o Cloud Function

Back-end

Um conjunto do Cloud Functions que ouve tópicos do Cloud Pub/Sub oferece o processamento de back-end.

  1. Sempre que o upload de um arquivo é feito no bucket do Cloud Storage, um tópico do Cloud Pub/Sub recebe uma mensagem.
  2. O aplicativo de back-end analisa o local do Cloud Storage em cada mensagem de notificação e determina se o conteúdo é uma imagem ou um vídeo.
  3. Em seguida, o aplicativo de back-end envia uma mensagem do Cloud Pub/Sub para algumas Cloud Functions, chamando a API Cloud Vision ou a API Cloud Video Intelligence, dependendo de o arquivo ser uma imagem ou um vídeo.
  4. Usando os resultados da chamada à API, o aplicativo de back-end classifica o conteúdo com base em logotipos, rótulos, textos e resultados de pesquisa seguros.

A figura a seguir mostra as etapas de processamento que cada Cloud Function realiza. Neste exemplo, os resultados são armazenados no BigQuery, mas é possível armazená-los em qualquer serviço de armazenamento de dados do GCP.

Etapas de processamento do Cloud Function

Front-end

Nesta arquitetura, você armazena os resultados do processamento de imagem e vídeo no BigQuery. Assim como acontece com o mecanismo de análise escalável do GCP, o BigQuery oferece acesso simples baseado em SQL a um banco de dados de tamanho petabyte. O BigQuery oferece ao aplicativo uma maneira simples e escalável de analisar os rótulos do conteúdo enviado.

O Data Studio oferece um painel visual em que você pode filtrar o conteúdo enviado usando tags geradas por APIs de aprendizado de máquina. As tags facilitam o filtro dinâmico de conteúdo no conjunto de painéis do Data Studio.

A imagem a seguir mostra um painel de dados simples do Data Studio controlado por dados em tempo real do BigQuery.

Painel simples do Data Studio

À medida que um novo conteúdo é processado e armazenado no BigQuery, o painel reflete as mudanças. Você pode filtrar o painel por conteúdo, rótulos ou contagem de conteúdo incorreto.

Próximas etapas