Classificando imagens com o Custom Vision da Microsoft

Identificando determinados personagens do filme Star Wars

Murillo Grübler
aibrasil
6 min readJan 31, 2018

--

Nos últimos anos, com a explosão dos dados e o aprimoramento de técnicas como Deep Learning, empresas como IBM, Google, Microsoft, Facebook, Amazon, Clarifai, entre outras, evoluíram seus modelos de predição a um determinado ponto que podem oferecê-los como serviços a outras companhias, apresentando alto grau de confiança em suas classificações. A jornada para alcançar tal nível levou muitos anos de pesquisa, podendo ser observado no documentário sobre o Watson, inteligência artificial da IBM.

Esse artigo é o primeiro de uma série que abordará como integrar e utilizar os serviços inteligentes, disponibilizados pelas empresas citadas anteriormente, com outras aplicações. Inicialmente, o modelo abordado nesse texto é uma das ferramentas para predições de imagens da Microsoft, o Custom Vision.

Custom Vision da Microsoft

Custom Vision é uma ferramenta da Microsoft para classificação de imagens. Diferente do Computer Vision API, uma plataforma que detecta “coisas” nas imagens como pessoas, carros, animais, entre outros diversos objetos, o Custom Vision permite o usuário customizar o modelo através de imagens selecionadas pelo mesmo. A plataforma oferece uma interface web para o desenvolvimento do modelo e integração com outras aplicações através de REST API.

A utilização da ferramenta é intuitiva, e em poucos passos o usuário já possui um modelo para classificação de imagens. A primeira etapa desse processo é acessar a plataforma web e realizar o cadastro (com uma conta Microsoft).

Página inicial da ferramenta Custom Vision.

Após o registro, a plataforma o redireciona para um painel de projetos, onde o usuário poderá criar ou acessar projetos já desenvolvidos. Caso o usuário deseje criar um novo projeto, além do nome e da descrição, ele pode selecionar o domínio que se adeque melhor ao seu projeto, aproveitando o conhecimento do classificador para otimizar as predições. Esses domínios são:

General: Classificador otimizado para diferentes áreas do conhecimento;

Food: Classificador otimizado para imagens que representam comida, semelhantes a menu de restaurantes;

Landmarks: Classificador otimizado para identificar marcos em paisagens e cidades, como o Cristo Redentor no Rio de Janeiro e a Estátua da Liberdade em Nova York;

Retail: Classificador otimizado para o varejo. Ele auxilia na predição de imagens que representam produtos;

Adult: Classificador otimizado para conteúdo adulto.

Criando um novo projeto na plataforma Custom Vision.

A página inicial do projeto oferece uma visualização rápida das imagens adicionadas pelo usuário, os rótulos utilizados, além de um menu superior com links para a realização do treinamento, visualização da performance do modelo e predições realizadas até o momento.

Visão geral do projeto, sendo possível visualizar as imagens, os rótulos utilizados e os links para treinar, avaliar a performance e classificar novas imagens.

Para iniciar o treinamento do modelo ou aprimoramento do mesmo, é necessário adicionar imagens e seus rótulos e, para isso, há um link na página inicial denominada de “Add images”, que irá abrir uma modal lateral. Essa modal, visualizada na imagem abaixo, apresenta uma “timeline” no topo, indicando os quatro passos necessários para acrescentar as imagens na ferramenta, que são:

Select Images: Abre uma janela no navegador para que o usuário selecione as figuras que estão armazenadas no seu computador;

Add Tags: Permite a adição de rótulos nas imagens selecionadas imagens;

Uploading: Carrega as imagens para a ferramenta;

Summary: Exibe uma informação final sobre o processo, indicando se as imagens foram carregadas ou não para a ferramenta de classificação de imagens.

Modal utilizada para carregar as imagens e rotulá-las.

O processo de treinamento ocorrerá quando o usuário clicar no botão “Train” que está localizado ao lado do “Quick Test”, que será abordado logo mais. O algoritmo do Custom Vision utiliza redes pré-treinadas (ResNet, AlexNet) para ensinar e classificar as imagens. Após o treinamento, a ferramenta executa um processo chamado de k-fold cross validation para determinar a acurácia do algoritmo, indicando para o usuário se há necessidade de aprimoramento do modelo com mais imagens.

Botão de treinamento esverdeado, destacado dos demais links da página.

Os indicadores de qualidade do modelo exibidos para o usuário são:

Precision: Indica qual a probabilidade de o modelo predizer corretamente uma nova imagem.

Recall: Indica a capacidade de lembrança do modelo em classificar corretamente as imagens que foram utilizadas no treinamento do mesmo.

Avaliação automática do modelo após o treinamento.

A integração com outras aplicações, como mencionado anteriormente, pode ser realizada através do REST API, enviando alguns parâmetros no cabeçalho e no corpo da requisição HTTP. Na mesma página de performance, apresentada na imagem acima, é possível encontrar o link “Prediction URL”. Esse botão abrirá uma modal lateral que apresentará as informações necessárias para realizar a integração, visualizado na imagem abaixo.

A ferramenta permite duas possibilidades de integração. A primeira permite ao usuário enviar apenas a URL da imagem no corpo da requisição {"Url": "<imagem_url>"} junto com o tipo do conteúdo Content-Type : application/json e o token do modelo Prediction-Key : <SEU_TOKEN> no cabeçalho. A outra, possibilita o usuário enviar no corpo da requisição a própria imagem, alterando apenas o tipo de conteúdo no cabeçalho para Content-Type : application/octet-stream em relação a outra integração. É importante salientar que cada integração possui uma URL única.

Abaixo segue vídeo de apresentação da ferramenta pela Microsoft no canal Microsoft Developer.

Exemplo de utilização da ferramenta Custom Vision

A fim de viabilizar o uso da ferramenta, foi desenvolvido um novo projeto na plataforma Custom Vision e uma aplicação web para permitir que o usuário anônimo possa enviar imagens e receber os resultados das classificações, sendo seu objetivo predizer se o personagem da imagem é o Darth Vader ou Kylo Ren. Primeiramente, foi necessário criar um novo projeto, nomeando de Star Wars e selecionando o domínio General. O segundo passo foi selecionar 50 imagens de cada personagem, Darth Vader e Kylo Ren, no Google (A Microsoft sugere no mínimo 30 imagens por classe) e rotulá-las em seguida. O passo seguinte foi treinar o modelo e validar se os indicadores Precision e Recall possuem um bom valor.

A aplicação web, visualizada na imagem abaixo, foi construída utilizando ASP.NET Core 2.0. Contudo, o Custom Vision disponibiliza REST API que integra a ferramenta com qualquer linguagem que o suporte. Com essa premissa, o site desenvolvido possui um campo de entrada para o usuário colocar a URL da imagem e um botão que processará uma requisição REST.

Página inicial do site Predicting Images, cujo objetivo é classificar se a imagem é o Darth Vader ou Kylo Ren.

É possível acessar o site desenvolvido e testar a integração com a ferramenta de reconhecimento de imagens da Microsoft através desse link e realizar o download do código fonte no github. A imagem abaixo demonstra como predizer o personagem na aplicação desenvolvida.

Exemplo da utilização

Conclusão

Com o avanço dos estudos do aprendizado de máquina, grandes players do mercado estão disponibilizando soluções para a predição de imagens, vídeos, áudios e textos, através de serviços que integram seus modelos de IA (Inteligência Artificial) com aplicações externas, permitindo que qualquer empresa possa utilizá-los, sem ser necessário desenvolver um novo modelo. Nesse contexto de serviços inteligentes, Custom Vision da Microsoft é uma ferramenta robusta para a classificação de imagens, permitindo integração com qualquer tipo de aplicação que suporte REST API. Através do mesmo, é possível customizar um novo modelo em poucos passos e integrar facilmente com qualquer aplicação, web ou mobile.

Referências

--

--

Murillo Grübler
aibrasil

Software Engineer passionate about Data Science and Deep Learning