0

Introdução ao Microsoft Azure Cognitive Services com Xamarin.Forms

A Microsoft lançou a algum tempo atras a sua API para computação cognitiva, o Microsoft Azure Cognitive Services ,  permitindo a qualquer desenvolvedor de software, independente da linguagem, possa implementar inteligência artificial em seus projetos.

Para tentar desenhar alguns cenários de aplicações possíveis desses recursos imagine uma instituição financeira que possui um serviço de empréstimo de alto valores para empresas e que depende dos seus funcionários para manualmente verificar cada documento recebido, sua autenticidade, se possui ou não alguma restrição para poder liberar o empréstimo. Só esse processo gira em media 4 a 7 dias a depender da fila de solicitações. Agora imaginem utilizar uma API de computação cognitiva que pode através da imagem de cada documento ler, extrair e usar esses dados como parâmetro para validar esses documentos, essa fila seria reduzida para horas. Esse foi um exemplo minimo de como poderíamos usar por exemplo uma das APIs do cognitiva Services.

No Cognitive services temos tres possibilidades: Criar uma maquina virtual onde posso criar e subir a camada de inteligência , como por exemplo com o R Server ,  onde eu teria controle total sobre a infraestrutura da maquina e em toda sua inteligência desenvolvida, mas para isso você teria um trabalho a mais que é toda a configuração e gereciamento. 

Uma outra possibilidade é o Azure Machine Learning onde você pode rodar alguns scripts prontos mas ainda sim você precisa de um conhecimento de analise de dados para poder tirar melhor proveito.

 E por ultimo e com maior abstração tem as APIs do Cognitive services, onde a equipe de Data Science da Microsoft Research criou os serviços REST onde você só precisa implementar o consumo na sua aplicação.

Algumas delas tem a necessidade de “treinar” o serviço antes, mas você sempre será guiado e não precisará ir muito baixo nível, como por exemplo tem um conhecimento avançado de estatística ou matemática para isso.

APIs do Cognitive Services

Como podemos observar na imagem acima nós temos cinco conjuntos de APIs prontas para serem consumidas por nossas aplicações:

  • Vision: Onde você pode contar com os mais avançados algoritmos de processamento de imagem , que podem te ajudar a moderar o conteúdo automaticamente e extrair dados importantes a partir do mapeamento das imagens, faces, expressões e etc.
  • Speech: Processamento da língua falada em seus aplicativos vai te ajudar a converter o que ele processa de audio para texto e até mesmo separar trechos de fala onde existem mais de um locutor.
  • Language: Vai possibilitar que seus aplicativos processem a linguagem natural, avaliem ate o sentido das expressões,  tópicos e aprendam a reconhecer o que os usuários de fato querem.
  • Knowledge: Seus aplicativos poderão mapear dados e informações complexas para resolver tarefas como recomendações inteligentes, pesquisa semântica, prever o que os usuários querem encontrar e utilizar o rico conteúdo do Microsoft Academic Graph para melhores resultados.
  • Search: poderia incluir nos seus aplicativos, suas páginas da Web uma experiência de busca mais inteligentes e melhor com as APIs de Pesquisa do Bing.

Mapeado acima as APIs que temos para consumo REST, então chegou a hora de acessar o portal do Cognitive Services e gerar as nossas chaves.

Pagina Inicial do Microsoft Azure Cognitive Services

Através do site acima você pode ir em “ Get started for free” para gerar as suas chaves gratuitamente para para testar o Cognitive Services. Você poderá criar uma conta utilizando a sua conta Microsoft, LinkedIn ou Github. Após realizar o login você irá identificar uma serie de APIs que você pode contratar na versão trial e algumas em preview , todas com um limite bastante razoável para os seus primeiros testes.

Para essa primeira demo irei utilizar a Visão Computacional, para pode identificar alguns elementos que estão na imagem.

Tela para gerar as chaves

Ao clicar em Show, ele irá te exibir a chave que você poderá usar na sua aplicação. Guarde essa chave pois iremos utiliza la mais a frente.

Tendo como base que já sabemos o basico de Xamarin.Forms e sabemos como criar um projeto, irei pular essa parte e solicito que você crie um projeto do tipo Xamarin.Forms e ao invés de PCL, utilize o tipo do projeto Shared, pois o pacote que iremos usar ainda não está disponível para uso em PCL do Xamarin.forms.

Voce irá adicionar nos projetos iOS e Android os pacotes do nuget: “Xam.Plugin.Media” e “Microsoft.ProjectOxford.Vision”. 

Plugin Vision Cognitive

Plugin Media Picker

E então a nosso projeto deverá ficar assim, com esses pacotes adicionados em cada um deles:

Estrutura da Demo

Ao criar o projeto Xamarin.Forms ele cria uma page XAML onde eu irei inserir um botão, um componente Image e uma Label, dentro de um StackPanel e de um scrollview caso o conteúdo gerado ultrapasse a tela do meu device e então deverá ficar assim:

Código XAML

Como podem observar ficou um código de uma tela bem simples. Agora iremos consumir o serviço da API Vision do Cognitive no codebehind da minha Page, utilizando C# de forma bem simples, conforme a imagem abaixo:

Código C#

Como podem ver apenas fiz a chamada do pacote media picker do Xamarin.Forms para poder ter acesso a minha câmera ou a minha biblioteca de imagens no método SelectPicture. Utilizei o Stream da imagem para poder exibir ela no meu controle Image para saber qual imagem eu estou usando para analizar e logo após envio esse mesmo stream para um Task sync que eu criei abaixo para poder fazer a analise de todo o conteúdo da imagem utilizando o NameSpace do ProjectOxford.Vision da Microsoft.

Para que funcione corretamente é necessário lembrar de adicionar a sua Key gerada no momento em que você clicou em “Show” lá na sua conta no site das APIs do Cognitive Services, lembra?

Vamos agora executar o nosso projeto e ver o resultado em execução:

Projeto demo

Projeto demo

Logo quando após a aplicação carregar, você deverá clicar no botão onde o mesmo irá abrir a sua galeria de imagens para escolher uma foto ( Lembre – se de declarar todas as permissões no arquivo info,plist do iOS e AndroidManifest do seu Android para que funcione corretamente o plugin de Media do Xamarin.forms , essas instruções aparecem em um arquivo readme.txt apos adicionar nos projetos).

Resultado após inserir a imagem

Eu Selecionei como exemplo uma imagem minha com minha filha e observem que após enviar o stream da imagem para o namespace VisioServiceClient ele analisou e mapeou todos os itens que continham na minha imagem, bem como o possível ambiente, situações e emoções. Logo abaixo da imagem tem uma label que ele carrega um tema da imagem, a própria API dá um titulo a foto de acordo com os elementos contidos no cenário, e uma label que carregou todas as tags, categorias e descrições possíveis que a API de computação cognitiva pode encontrar na minha fotografia.

Viram como é sensacional esse mundo de inteligência artificial , que a Microsoft está literalmente “mastigando” com o Cognitive Services API, para nós desenvolvedores ? Nos próximos artigos irei detalhar como podemos aproveitar ao máximo a Computer Vision API. Caso queiram conferir podem clicar aqui para acessar o código fonte da demo.

Abraços e até a próxima \\//_

Projeto GitHub:

https://github.com/rogeriorrodrigues/cognitiveservices/demovisionbasic

Links de referencia:

https://www.microsoft.com/cognitive-services

https://www.microsoft.com/cognitive-services/en-us/computer-vision-api

https://www.microsoft.com/cognitive-services/en-us/documentation

https://www.microsoft.com/cognitive-services/en-us/SDK-Sample

Post publicando também no Microsoft Developer:

https://www.facebook.com/MicrosoftDeveloper.Brasil

Rogério Rodrigues

Desenvolvedor .net , MSP – Microsoft Student Partner , Xamarin Student Ambassador.