Editar

Classificação de imagens no Azure

Azure Blob Storage
Azure Computer Vision
Azure Cosmos DB
Azure Event Grid
Azure Functions

Ao usar os serviços do Azure, como a API de Visão 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 serviços de IA do Azure. Este cenário de exemplo aborda especificamente um caso de uso de processamento de imagem. Se você tiver necessidades de IA diferentes, considere o conjunto completo de serviços de IA do Azure.

Arquitetura

Arquitetura para classificação de imagens

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de Trabalho

Este cenário abrange os componentes de back-end de um aplicativo Web ou móvel. Os dados fluem através do cenário da seguinte maneira:

  1. Adicionar novos arquivos (carregamentos de imagem) no armazenamento de Blob dispara um evento na Grade de Eventos do Azure. O processo de upload pode ser orquestrado através da web ou de uma aplicação móvel. Como alternativa, as imagens podem ser carregadas separadamente no armazenamento de Blob do Azure.
  2. A Grade de Eventos envia uma notificação que aciona as funções do Azure.
  3. O Azure Functions chama a API de Visão de Computador do Azure para analisar a imagem recém-carregada. O Computer Vision acessa a imagem por meio da URL de blob analisada pelo Azure Functions.
  4. O Azure Functions persiste a resposta da API de Visão Computacional no Azure Cosmos DB. Esta 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 de Visão Computacional faz parte do pacote de serviços de IA do Azure e é usada para recuperar informações sobre cada imagem.
  • O Azure Functions fornece a API de back-end para o aplicativo Web. Esta plataforma também fornece processamento de eventos para imagens carregadas.
  • A Grade de Eventos do Azure dispara um evento quando uma nova imagem é carregada no armazenamento de blobs. Em seguida, 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 carregada, incluindo os resultados do processamento da API de Visão Computacional.

Alternativas

  • Serviço de Visão Personalizado. A API de Visão Computacional retorna um conjunto de categorias baseadas em taxonomia. Se você precisar processar informações que não são retornadas pela API de Visão Computacional, considere o Serviço de Visão Personalizada, que permite criar classificadores de imagem personalizados.
  • Pesquisa Cognitiva (anteriormente Azure Search). Se o seu caso de uso envolver a consulta aos metadados para encontrar imagens que atendam a critérios específicos, considere usar a Pesquisa Cognitiva. Atualmente em pré-visualização, a pesquisa cognitiva integra perfeitamente este fluxo de trabalho.
  • Logic Apps. Se você não precisar reagir em tempo real em arquivos adicionados a um blob, considere usar 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 de janelas deslizantes.

Detalhes do cenário

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

As aplicações potenciais incluem a classificação de imagens para um site de moda, a análise de texto e imagens para reclamações de seguros ou a compreensão de dados de telemetria a partir de capturas de tela de jogos. Tradicionalmente, as empresas precisariam desenvolver experiência em modelos de aprendizado de máquina, treinar os modelos e, finalmente, executar as imagens através de seu processo personalizado para obter os dados das imagens.

Potenciais casos de utilização

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

  • Classificação de imagens em um site de moda. A classificação de imagens pode ser usada pelos vendedores durante o upload de fotos de produtos na plataforma para venda. Eles podem, então, automatizar a consequente marcação manual envolvida. Os clientes também podem pesquisar através da impressão visual dos produtos.

  • Classificação de dados de telemetria a partir de capturas de tela de jogos. A classificação dos videojogos a partir de capturas de ecrã está a evoluir para um problema relevante nas redes sociais, aliado à visão computacional. Por exemplo, quando os streamers do Twitch jogam jogos diferentes em sequência, eles podem pular a atualização manual de suas informações de streaming. A não atualização das informações de fluxo pode resultar na classificação incorreta de fluxos nas pesquisas dos usuários e pode levar à perda de audiência potencial tanto para os criadores de conteúdo quanto para as plataformas de streaming. Ao introduzir novos jogos, uma rota de modelo personalizada pode ser útil para introduzir a capacidade de detetar novas imagens desses jogos.

  • Classificação de imagens para sinistros de seguros. A classificação de imagens pode ajudar a reduzir o tempo e o custo do processamento e subscrição de sinistros. Poderia ajudar a analisar danos causados por desastres naturais, danos em 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 orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.

Considere estes pontos ao implementar esta 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 máximo de 200 instâncias. Se você precisar escalar além desse limite, considere várias regiões ou planos de aplicativos.

Você pode provisionar o Azure Cosmos DB para dimensionamento automático no Azure Cosmos DB somente para NoSQL. Se você planeja usar outras APIs, consulte as orientações sobre como estimar seus requisitos 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 frequentemente negociam consistência (no sentido do teorema da PAC) para disponibilidade, escalabilidade e particionamento. Neste cenário de exemplo, um modelo de dados chave-valor é usado e a consistência da transação raramente é necessária, pois a maioria das operações é, por definição, atômica. Orientações adicionais para escolher o armazenamento de dados certo estão disponíveis no Centro de Arquitetura do Azure. Se sua implementação exigir alta consistência, você poderá escolher seu nível de consistência no Azure Cosmos DB.

Para obter orientações gerais sobre como projetar soluções escaláveis, consulte a lista de verificação de eficiência de desempenho no Centro de Arquitetura do Azure.

Segurança

A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar de segurança.

As identidades gerenciadas para recursos do Azure são usadas para fornecer acesso a outros recursos internos à sua conta e, em seguida, atribuídas às suas funções do Azure. Permita apenas o acesso aos recursos necessários nessas identidades para garantir que nada extra seja exposto às suas funções (e, potencialmente, aos seus clientes).

Para obter orientações gerais sobre como criar soluções seguras, consulte a Documentação de Segurança do Azure.

Resiliência

Todos os componentes neste cenário são geridos, pelo que, a nível regional, são todos resilientes automaticamente.

Para obter orientações gerais sobre como projetar soluções resilientes, consulte Projetando aplicativos resilientes para o Azure.

Otimização de custos

A otimização de custos consiste em procurar formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custos.

Para explorar o custo de execução desse cenário, todos os serviços são pré-configurados na calculadora de custos. Para ver como o preço mudaria para seu caso de uso específico, altere as variáveis apropriadas para corresponder ao tráfego esperado.

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

  • Pequeno: este exemplo de definição de preço está correlacionado com o processamento de < 5000 imagens por mês.
  • Média: este exemplo de definição de preço está correlacionado ao processamento de 500.000 imagens por mês.
  • Grande: este exemplo de definição de preço está correlacionado ao processamento de 50 milhões de imagens por mês.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Principais autores:

Próximos passos

Documentação do produto

Para um percurso de aprendizagem orientado, consulte:

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

Enriquecimento da IA com processamento de imagem e linguagem natural na Pesquisa Cognitiva do Azure