Em Janeiro deste ano o Facebook AI Research (FAIR), o ramo de pesquisas do Facebook, lançou a biblioteca de detecção de objetos Detectron de código aberto. Este lançamento ocorreu poucas semanas após o Google atualizar a API de reconhecimento de imagem do Tensorflow. Ambas as bibliotecas implementam os mais recentes algoritmos de aprendizagem profunda para detecção de objetos.
O Detectron está disponível como biblioteca Python sob a licença Apache 2.0 e é baseado no Caffe2, uma estrutura de aprendizagem profunda apoiada 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 do Tensorflow do Google foi lançada pela primeira vez em junho de 2017 e faz parte de um repositório muito maior da TensorFlow Research, com quase 40 diferentes projetos de aprendizagem profunda.
Os modelos pré-treinados incluídos nas duas bibliotecas foram treinados no COCO dataset, um conjunto de dados de detecção, segmentação e indicação de objetos em grande escala que inclui 80 categorias de objetos, mais de 200.000 imagens rotuladas e 1,5 milhão de instâncias de objetos. Tanto o Detectron, do Facebook, quanto a API de reconhecimento de imagem do Tensorflow, do Google, são destinados principalmente a pesquisa e ainda não estão prontos para produção.
A detecção de objetos continua sendo um ramo desafiador da visão computacional, mas tem aplicações em diversas áreas, desde a simples detecção de face em câmeras digitais até a recuperação de imagens e a vigilância por vídeo. Carros autônomos dependem da detecção de pedestres em tempo real, enquanto a contagem automática de pessoas ou carros é valiosa no planejamento urbano.
O problema se resume em identificar um número desconhecido de objetos, com diferentes naturezas e que podem variar no tamanho e estão espalhados por uma imagem. A restrição para fornecer velocidade suficiente e alta precisão aumenta a dificuldade inerente da tarefa.
Em termos de aprendizado de máquina, a detecção de objetos a partir de imagens estáticas requer a solução de 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 convolucionais (CNN), uma arquitetura específica de redes neurais. As CNNs 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 lidam com a detecção de objetos de todos os tamanhos usando múltiplas janelas deslizantes também de tamanhos variados. O YOLO (You Only Look Once) um tipo de algoritmo de detecção de objeto que aplica uma única grade sobre a imagem e usa as diferentes características para extração e decisão de arquitetura. Enquanto os algoritmos anteriores forem capazes de desenhar um limite de caixa por meio dos objetos detectados, as recentes evoluções (Mask R-CNN e RetinaNet) desenham um limite apertado em torno da borda dos objetos. Essa inovação importante é chamada de segmentação de instância e vem da classificação de cada pixel como pertencente ou não ao objeto inferido.
As análises sugerem que a API TensorFlow Object Detection é 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 aprendizado de transferência. Atualmente, mais tutoriais estão disponíveis on-line para a biblioteca de detecção de objetos do Google.