Classificação de imagens no Azure

Armazenamento do Blobs do Azure
Pesquisa Visual Computacional do Azure
Azure Cosmos DB
Grade de Eventos do Azure
Funções do Azure

Ao usar os serviços do Azure, como a API de Pesquisa Visual Computacional e o Azure Functions, as empresas podem eliminar a necessidade de gerenciar servidores individuais, reduzindo custos e utilizando a experiência que a Microsoft já desenvolveu com o processamento de imagens com os Serviços Cognitivos. Esse cenário de exemplo trata especificamente de um caso de uso de processamento de imagem. Se você tiver necessidades diferentes para Inteligência Artificial, considere obter o conjunto completo dos Serviços Cognitivos.

Arquitetura

Architecture for image classification

Baixe um Arquivo Visio dessa arquitetura.

Workflow

Esse cenário aborda os componentes de back-end de um aplicativo Web ou móvel. O fluxo de dados deste cenário ocorre da seguinte forma:

  1. A adição de novos arquivos (uploads de imagens) no Armazenamento de Blobs dispara um evento na Grade de Eventos do Azure. O processo de upload pode ser orquestrado pela Web ou por um aplicativo móvel. Como alternativa, as imagens podem ser carregadas separadamente para o Armazenamento de Blobs do Azure.
  2. A Grade de Eventos envia uma notificação que dispara o Azure Functions.
  3. O Azure Functions cham a API de Pesquisa Visual Computacional do Azure para analisar a imagem recém-carregada. A Pesquisa Visual Computacional acessa a imagem por meio da URL do blob analisado pelo Azure Functions.
  4. O Azure Functions persiste a resposta da API de Pesquisa Visual Computacional no Azure Cosmos DB. Essa resposta inclui os resultados da análise, juntamente com os metadados da imagem.
  5. Os resultados podem ser consumidos e refletidos na Web ou no front-end móvel. Observe que essa abordagem recupera os resultados da classificação, mas não a imagem carregada.

Componentes

  • A API da Pesquisa Visual Computacional faz parte do conjunto dos Serviços Cognitivos e é usada para recuperar informações sobre cada imagem.
  • O Azure Functions fornece a API de back-end para o aplicativo Web. Essa plataforma também oferece processamento de eventos para imagens carregadas.
  • A Grade de Eventos do Azure dispara um evento quando uma nova imagem é carregada no armazenamento de blob. A imagem é processada com o Azure Functions.
  • O Armazenamento de Blobs do Azure armazena todos os arquivos de imagem que são carregados no aplicativo Web, bem como todos os arquivos estáticos que o aplicativo Web consome.
  • O Azure Cosmos DB armazena metadados sobre cada imagem que é carregada, incluindo os resultados do processamento da API de Pesquisa Visual Computacional.

Alternativas

  • Serviço de Visão Personalizada. A API da Pesquisa Visual Computacional retorna um conjunto de categorias baseadas em taxonomia. Se você precisar processar informações que não são retornadas pela API da Pesquisa Visual Computacional, considere o Serviço de Visão Personalizada, que permite a criação de classificadores de imagem personalizados.
  • Cognitive Search (anteriormente Azure Search). Se seu caso de uso envolve a consulta dos metadados para localizar imagens que atendem a critérios específicos, considere o uso do Cognitive Search. Atualmente em versão prévia, a Pesquisa Cognitiva integra esse fluxo de trabalho sem interrupções.
  • Aplicativos Lógicos. Se você não precisar reagir em tempo real em arquivos adicionados a um blob, é possível considerar o uso de Aplicativos Lógicos. Um aplicativo lógico que pode verificar se um arquivo foi adicionado pode ser iniciado pelo gatilho de recorrência ou pelo gatilho deslizante do Windows.

Detalhes do cenário

Esse cenário é relevante para empresas que precisam processar imagens.

Entre os possíveis usos estão a classificação de imagens para um site de moda, a análise de texto e imagens em acionamento de seguro ou a compreensão de dados de telemetria em capturas de tela de jogos. Tradicionalmente, as empresas precisariam desenvolver experiência em modelos de aprendizado de máquina, treinar os modelos e passar as imagens pelo processo personalizado para obter dados dessas imagens.

Possíveis casos de uso

Essa solução é ideal para os setores de varejo, jogos, finanças e seguros. Outros casos de uso relevantes incluem:

  • Classificar imagens em um site de moda. A classificação de imagens pode ser usada pelos vendedores ao carregarem imagens de produtos na plataforma de vendas. Eles podem, então, automatizar a consequente marcação manual envolvida. Os clientes também podem pesquisar por meio da impressão visual dos produtos.

  • Classificar dados de telemetria de capturas de tela de jogos. A classificação de videogames a partir de capturas de tela está evoluindo para um problema relevante nas mídia social, juntamente com a visão computacional. Por exemplo, quando os streamers da Twitch jogam diferentes jogos em sequência, eles podem deixar de atualizar manualmente de suas informações de streaming. A não atualização das informações de streaming pode resultar na classificação incorreta de streams nas pesquisas de usuários e pode levar à perda de visualizações em potencial tanto para os criadores de conteúdo e quanto para as plataformas de streaming. Ao introduzir novos jogos, uma rota de modelo personalizada poderia ser útil para introduzir a capacidade de detecção de novas imagens desses jogos.

  • Classificação de imagens no acionamento de um seguro. A classificação de imagens pode ajudar a reduzir o tempo e o custo do processamento e da subscrição de sinistros. Ela pode ajudar a analisar danos causados por desastres naturais, danos causados por veículos e identificar propriedades residenciais e comerciais.

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.

Considere estes pontos ao implementar essa solução:

Escalabilidade

A maioria dos componentes usados neste cenário de exemplo são serviços gerenciados que serão dimensionados automaticamente. Algumas exceções notáveis: o Azure Functions tem um limite de um máximo de 200 instâncias. Se você precisar dimensionar além desse limite, considere usar várias regiões ou planos do aplicativo.

Você pode provisionar o Azure Cosmos DB para dimensionamento automático no Azure Cosmos DB somente for NoSQL. Se você planeja usar outras APIs, consulte as orientações sobre como estimar suas necessidades em Unidades de solicitação. Para aproveitar totalmente o dimensionamento no Azure Cosmos DB, entenda como as chaves de partição funcionam no Azure Cosmos DB.

Os bancos de dados NoSQL costumam trocar consistência (no sentido do Teorema CAP) por disponibilidade, escalabilidade e particionamento. Neste cenário de exemplo, um modelo de dados de chave-valor é usado e a consistência de transação raramente é necessária, pois a maioria das operações é atômica por definição. Outras orientações em relação a Escolher o armazenamento de dados correto estão disponíveis no Centro de Arquitetura do Azure. Se a sua implementação exigir alta consistência, você poderá escolher o nível de consistência no Azure Cosmos DB.

Para obter diretrizes gerais sobre como criar soluções escalonáveis, confira a lista de verificação de eficiência de desempenho no Centro de Arquitetura do Azure.

Segurança

A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para saber mais, confira Visão geral do pilar de segurança.

As identidades de serviço gerenciadas para recursos do Azure são usadas para fornecer acesso a outros recursos internos para sua conta e, em seguida, atribuídas ao Azure Functions. Dê acesso apenas aos recursos necessários nessas identidades para fazer com que nada além seja exposto às funções (e, potencialmente, a seus clientes).

Confira orientações gerais sobre como criar soluções seguras na Documentação de Segurança do Azure.

Resiliência

Todos os componentes neste cenário são gerenciados e, portanto, em um nível regional, todos são resilientes automaticamente.

Para obter diretrizes gerais sobre como criar soluções resilientes, confira Projetando aplicativos resilientes para o Azure.

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.

Para explorar o custo de executar esse cenário, todos os serviços são pré-configurados na calculadora de custos. Para ver como o preço seria alterado em seu caso de uso específico, altere as variáveis apropriadas de acordo com o tráfego esperado.

Fornecemos três perfis de custo de exemplo com base na quantidade de tráfego (assumimos que todas as imagens têm 100 KB de tamanho):

  • Pequeno: esse exemplo de preço refere-se ao processamento de < 5 mil imagens por mês.
  • Médio: esse exemplo de preço refere-se ao processamento de 500 mil imagens por mês.
  • Grande: esse exemplo de preço refere-se ao processamento de 50 milhões de imagens por mês.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Principais autores:

Próximas etapas

Documentação do produto

Para obter um roteiro de aprendizagem guiada, consulte:

Antes de implantar este cenário de exemplo em um ambiente de produção, examine as práticas recomendadas para otimizar o desempenho e a confiabilidade do Azure Functions.

Enriquecimento de IA com processamento de imagem e linguagem natural no Azure Cognitive Search