Uma pequena nota sobre reconhecimento de imagens do Google e do Facebook

image_pdfimage_print

No janeiro passado, o Facebook AI Research (FAIR), o braço de pesquisa do Facebook, Detectron de código aberto, sua biblioteca de detecção de objetos. Este lançamento foi seguido algumas semanas depois pelo Google com uma atualização de sua Tensorflow Image Recognition API. Ambas as bibliotecas implementam os algoritmos de aprendizagem profunda mais recentes para a detecção de objetos.

Detectron aparece como uma biblioteca Python disponível sob a licença Apache 2.0 e é construída no Caffe2, um framework de aprendizado profundo apoiado pelo Facebook. A biblioteca Detectron está disponível no GitHub e inclui scripts, modelos pré-treinados e uma imagem Docker para facilitar a instalação. A API de Reconhecimento de Imagem Tensorflow do Google foi lançada pela primeira vez em junho de 2017 e faz parte de um repositório de pesquisa TensorFlow mais grande de quase 40 projetos diferentes de aprendizagem profunda.

Os modelos pré-treinados incluídos em ambas as bibliotecas foram treinados no conjunto de dados COCO, um conjunto de dados de detecção, segmentação e legenda de objetos em larga escala que inclui 80 categorias de objetos, mais de 200.000 imagens e 1,5 milhões de casos.

Tanto o Detectron do Facebook quanto o Google Tensorflow Image Recognition API são destinados principalmente à pesquisa e ainda não estão prontos para a produção.

A detecção de objetos continua sendo um ramo desafiador da visão por computador, mas tem aplicações em muitas áreas de visão computacional, desde a detecção de rosto simples em câmeras digitais até a recuperação de imagens e vigilância por vídeo. Os carros de auto-condução dependem da detecção de pedestres em tempo real, enquanto a contagem automática de pessoas ou carros é valiosa no planejamento urbano.

O problema passa a identificar um número desconhecido de objetos de natureza desconhecida que podem variar em tamanho e espalhados por uma imagem. A restrição para fornecer velocidade suficiente, bem como alta precisão, aumenta a dificuldade inerente à tarefa.

Em termos de aprendizagem em máquina, a detecção de objetos a partir de imagens estáticas requer resolver dois problemas ao mesmo tempo. Decidir se uma determinada região da imagem é um objeto e descobrir qual objeto pode ser. Os modelos atuais de detecção de objetos são construídos em redes neurais convolutivas (CNN), uma arquitetura específica de redes neurais. As CNN usam janelas retangulares deslizantes na imagem original para extração de recursos.

Existem duas famílias principais de algoritmos de detecção de objetos. Os algoritmos baseados em R-CNN manipulam objetos de detecção de todos os tamanhos, usando múltiplas janelas deslizantes também de tamanhos variados. Os algoritmos de algoritmo de algoritmos de detecção de objetos YOLO (You Only Look Once) aplicam uma grade de uma vez sobre a imagem e usam uma extração de recurso diferente e arquitetura de decisão. Enquanto os algoritmos anteriores conseguiram desenhar um limite de caixa nos objetos detectados, as evoluções recentes (Máscara R-CNN e RetinaNet) desenham um limite apertado ao redor da borda dos objetos. Esta inovação importante é chamada de segmentação de instância e vem classificar cada pixel como pertencente ou não ao objeto inferido.

Os comentários sugerem que a API de detecção de objetos TensorFlow é mais fácil de usar para treinar modelos proprietários. Seu repositório GitHub inclui vários Notebooks Jupyter para instalação, treinamento de modelo e transferência de aprendizagem. Mais tutoriais também estão atualmente disponíveis on-line para a biblioteca de detecção de objetos do Google.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!