Azure Computer Vision e .NET

Análise de imagens com Azure Computer Vision e .NET

A análise de imagens tem se tornado uma ferramenta crucial em diversas aplicações, impulsionando a inovação e aprimorando a experiência do usuário. Neste contexto, a integração da API de Visão Computacional do Azure com o ecossistema .NET oferece uma abordagem poderosa e acessível para desenvolvedores que buscam enriquecer suas aplicações com recursos avançados de inteligência artificial. 

O que é Computer Vision

O Computer Vision é um componente dos Serviços Cognitivos da Microsoft, especificamente projetado para executar tarefas avançadas de visão computacional. Este serviço oferece uma API baseada na nuvem que permite aos desenvolvedores integrar funcionalidades de análise de imagem em suas aplicações, utilizando tecnologias de ponta em aprendizado de máquina e inteligência artificial. Entre suas capacidades estão o reconhecimento de objetos, extração de texto, detecção de rostos, categorização de cenas e muito mais, proporcionando insights valiosos a partir de imagens.

Como Funciona o Computer Vision

O serviço funciona enviando imagens para a API no Azure, que então processa as imagens utilizando modelos de aprendizado de máquina treinados para diversas tarefas de visão computacional. Os resultados são retornados em formato JSON, contendo informações detalhadas sobre o conteúdo das imagens, como tags, descrições, categorias e objetos detectados.

Aplicações Comuns

O Computer Vision é versátil e pode ser aplicado em diversas indústrias e casos de uso. Abaixo destacamos alguns: 

Detecção de Objetos Suspeitos ou Intrusos em Sistemas de Vigilância: com o serviço de visão computacional, câmeras de segurança podem ser configuradas para identificar automaticamente objetos suspeitos, como armas, bolsas abandonadas, ou comportamentos anômalos em áreas monitoradas. Também é possível verificar identidades através da detecção e reconhecimento facial, comparando com uma base de dados de indivíduos conhecidos.

Análise de Imagens Médicas para Auxiliar no Diagnóstico:  Acompanhar a progressão de doenças ao longo do tempo através da comparação de imagens médicas em diferentes estágios do tratamento. Auxiliar médicos na interpretação de imagens complexas, destacando áreas de interesse e fornecendo segundas opiniões baseadas em modelos treinados.

Detecção de Obstáculos e Análise de Cenas em Veículos Autônomos: Identificar e classificar obstáculos na estrada, como outros veículos, pedestres, animais e objetos estáticos. Compreender o contexto de uma cena, como o reconhecimento de sinais de trânsito, marcações rodoviárias e semáforos. Ativar sistemas de frenagem automática, desvio de obstáculos e outras ações corretivas em resposta a perigos iminentes identificados.

Benefícios

Entre os benefícios do serviço Computer Vision, podemos destacar:

Precisão e Eficiência: a utilização de algoritmos avançados garante análises precisas e eficientes das imagens.

Escalabilidade: o serviço é altamente escalável, permitindo o processamento de grandes volumes de imagens sem comprometer a performance.

Facilidade de Integração: APIs RESTful bem documentadas facilitam a integração com diversas aplicações e plataformas.

Manutenção e Atualizações: a Microsoft continuamente atualiza e melhora seus modelos, garantindo que as análises sejam sempre baseadas nos algoritmos mais recentes e eficazes.

Criando o Serviço de Computer vision

Para utilizar o serviço de visão computacional, é necessário que você possua uma assinatura ativa do Azure. Então, acesse o portal do Azure  e clique em Criar um novo recurso. Procure por “Computer Vision”. 

Clique no item “Computer vision” e, em seguida, aparecerá uma tela semelhante à imagem abaixo. Clique em “Criar computer vision”.

 

Preencha as seguintes informações:

  • Assinatura

  • Grupo de Recursos

  • Região do grupo de recursos (se estiver criando um novo Grupo de Recursos)

  • Região

  • Nome

  • Tipo de preço

Na imagem abaixo, vemos as configurações utilizadas neste exemplo:

Após preencher todas as informações, clique em Examinar + criar e, em seguida, em Criar.

Depois, aparecerá a tela da sua aplicação, na qual você encontrará as duas chaves de acesso, a localização/região e o endpoint da aplicação. Estas três informações serão importantes quando precisarmos configurar a nossa API.

Criando o projeto de exemplo

Para nossa demonstração, vamos integrar a API de Visão Computacional do Azure em um aplicativo ASP.NET Core. O código demonstrará como configurar um endpoint que recebe uma imagem e utiliza os serviços cognitivos do Azure para analisá-la. A análise incluirá descrições, tags, categorias, detecção de objetos, marcas, rostos, tipos de imagem, conteúdo adulto e cores.

Para começar, crie um novo projeto ASP.NET Web API utilizando o seguinte comando:

				
					dotnet new webapi --name VisionAPI --use-controllers
				
			

Com o projeto ASP.NET Core Web API criado, instale o seguinte pacote:

				
					dotnet add package Microsoft.Azure.CognitiveServices.Vision.ComputerVision
				
			

Crie um controller chamado “VisionController”, com uma action “AnalyzeImage” que será responsável por receber a imagem a ser analisada. A estrutura inicial deste controller pode ser vista abaixo:

				
					using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;

namespace VisionAPI.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class VisionController : ControllerBase
    {
        [HttpPost]
        public async Task<IActionResult> AnalyzeImage(IFormFile imageFile)
        {
            try
            {
                // Código de análise aqui
            }
            catch (Exception ex)
            {
                return StatusCode(500, $"Erro ao analisar a imagem: {ex.Message}");
            }
        }
    }
}
				
			

Agora, dentro de nosso bloco “try”, vamos adicionar os dados e configurações necessários para nos conectarmos com a API de Visão Computacional. É importante lembrar que o endpoint inclui o nome que você atribuiu à sua aplicação ao criá-la.

				
					const string SubscriptionKey = "SUA_CHAVE_DE_ASSINATURA";
const string Endpoint = "https://NOME_DA_SUA_APLICAÇÃO.cognitiveservices.azure.com/";

				
			

Em seguida, vamos realizar a criação do cliente, instanciando a classe ComputerVisionClient e fornecendo as credenciais de serviço necessárias. As credenciais são fornecidas usando a classe ApiKeyServiceClientCredentials, que recebe nossa chave de assinatura.

				
					var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(SubscriptionKey))
{
    Endpoint = Endpoint
};

				
			

Na sequência, vamos instanciar a variável “imageStream”, que abre um fluxo de leitura para o arquivo de imagem. Este fluxo (imageStream) contém os dados binários da imagem que foi enviada pelo usuário.

				
					using (var imageStream = imageFile.OpenReadStream())
{
    // Código de análise da imagem aqui
}
				
			

Dentro do código acima, vamos definir as características visuais que queremos que a API extraia da imagem. Isso é feito utilizando uma lista de “VisualFeatureTypes”.

				
					var visualFeatures = new List<VisualFeatureTypes?>
{
    VisualFeatureTypes.Description,
    VisualFeatureTypes.Tags,
    VisualFeatureTypes.Categories,
    VisualFeatureTypes.Objects,
    VisualFeatureTypes.Brands,
    VisualFeatureTypes.Faces,
    VisualFeatureTypes.ImageType,
    VisualFeatureTypes.Adult,
    VisualFeatureTypes.Color,
};

				
			

Cada item na lista representa um tipo de análise que será realizada na imagem:

  • Description: gera uma descrição textual da imagem. Inclui legendas e tags que resumem o conteúdo da imagem.
  • Tags: produz uma lista de palavras-chave que descrevem os elementos visuais na imagem.
  • Categories: classifica a imagem em uma ou mais categorias predefinidas, que ajudam a agrupar imagens semelhantes.
  • Objects: detecta e identifica objetos específicos dentro da imagem, fornecendo suas localizações e tipos.
  • Brands: reconhece logotipos e marcas comerciais presentes na imagem.
  • Faces: identifica rostos humanos na imagem e fornece informações como idade, gênero e coordenadas dos rostos.
  • ImageType: determina o tipo da imagem, como uma foto, desenho, clipart, etc.
  • Adult: avalia a imagem para detectar conteúdo adulto, explícito ou impróprio.
  • Color: analisa as cores predominantes na imagem, identificando cores de fundo e as principais cores presentes.

Após definir as características visuais, o próximo passo é executar a análise. Isso é feito chamando o método “AnalyzeImageInStreamAsync” da Azure Computer Vision API.

				
					var analysis = await client.AnalyzeImageInStreamAsync(imageStream, visualFeatures: visualFeatures, language: "pt");
				
			

Neste código,” imageStream” é o fluxo de dados da imagem que será analisada. Neste caso, a imagem é obtida a partir do arquivo enviado pelo usuário “imageFile.OpenReadStream()”. O “visualFeatures” é a lista de características visuais que definimos anteriormente. O parâmetro “language” especifica o idioma dos resultados retornados pela API, que aqui está definido como “pt” (português).

Após isso, retornaremos o resultado em um formato JSON:

				
					return Ok(analysis);
				
			

Para testar nossa implementação, vamos analisar a seguinte imagem:

O JSON retornado conterá as características visuais que adicionamos na variável “visualFeatures” com o resultado da análise. Podemos destacar algumas como:
Description:

Tags:

Categories:

Acelere a sua carreira conosco!

Se você é Desenvolvedor .NET Júnior e quer acelerar sua carreira até nível Pleno com salário de R$7k+, ou mesmo busca a primeira vaga, conheça a Mentoria .NET Start: Clique aqui

Se é Desenvolvedor .NET Pleno ou Sênior e quer virar referência técnica em sua equipe e mercado, com salário de R$10k+, conheça a Mentoria .NET Expert: Clique aqui

Conclusão

Neste artigo, exploramos como integrar a API de Visão Computacional do Azure em um aplicativo ASP.NET Core. Através de exemplos de código, vimos como configurar um endpoint para receber uma imagem e utilizar os serviços cognitivos do Azure para realizar uma análise detalhada, incluindo descrições, tags, detecção de objetos, reconhecimento de rostos, entre outros.

Ao seguir os passos descritos aqui, os desenvolvedores podem potencializar seus aplicativos com recursos avançados de visão computacional, oferecendo aos usuários uma experiência mais rica e inteligente. Além disso, a flexibilidade e facilidade de integração do Azure Cognitive Services permitem que esses recursos sejam implementados de forma eficiente e escalável em uma ampla variedade de cenários de aplicativos.

Portanto, ao aproveitar os recursos poderosos da API de Visão Computacional do Azure, os desenvolvedores podem abrir novas possibilidades criativas e fornecer soluções inovadoras que atendam às demandas em constante evolução do mercado.