12 KiB
Detecção de Objetos
Os modelos de classificação de imagens que abordámos até agora recebiam uma imagem e produziam um resultado categórico, como a classe 'número' num problema MNIST. No entanto, em muitos casos, não queremos apenas saber que uma imagem retrata objetos - queremos determinar a sua localização precisa. Este é exatamente o objetivo da detecção de objetos.
Questionário pré-aula
Imagem do site YOLO v2
Uma Abordagem Ingénua para Detecção de Objetos
Supondo que queremos encontrar um gato numa imagem, uma abordagem muito ingénua para detecção de objetos seria a seguinte:
- Dividir a imagem em vários blocos.
- Executar a classificação de imagem em cada bloco.
- Os blocos que resultarem numa ativação suficientemente alta podem ser considerados como contendo o objeto em questão.
Imagem do Caderno de Exercícios
No entanto, esta abordagem está longe de ser ideal, pois só permite ao algoritmo localizar a caixa delimitadora do objeto de forma muito imprecisa. Para uma localização mais precisa, precisamos de executar algum tipo de regressão para prever as coordenadas das caixas delimitadoras - e, para isso, necessitamos de conjuntos de dados específicos.
Regressão para Detecção de Objetos
Este artigo oferece uma excelente introdução à deteção de formas.
Conjuntos de Dados para Detecção de Objetos
Poderá encontrar os seguintes conjuntos de dados para esta tarefa:
- PASCAL VOC - 20 classes
- COCO - Objetos Comuns em Contexto. 80 classes, caixas delimitadoras e máscaras de segmentação
Métricas de Detecção de Objetos
Interseção sobre União
Enquanto na classificação de imagens é fácil medir o desempenho do algoritmo, na detecção de objetos precisamos de medir tanto a correção da classe como a precisão da localização da caixa delimitadora inferida. Para esta última, utilizamos a chamada Interseção sobre União (IoU), que mede o quão bem duas caixas (ou duas áreas arbitrárias) se sobrepõem.
Figura 2 de este excelente artigo sobre IoU
A ideia é simples - dividimos a área de interseção entre duas figuras pela área da sua união. Para duas áreas idênticas, o IoU seria 1, enquanto para áreas completamente disjuntas será 0. Caso contrário, variará entre 0 e 1. Normalmente, consideramos apenas as caixas delimitadoras para as quais o IoU está acima de um determinado valor.
Precisão Média
Suponha que queremos medir o quão bem uma determinada classe de objetos C é reconhecida. Para medir isso, utilizamos a métrica de Precisão Média, que é calculada da seguinte forma:
- Consideramos a curva de Precisão-Recall que mostra a precisão dependendo de um valor de limiar de deteção (de 0 a 1).
- Dependendo do limiar, obteremos mais ou menos objetos detetados na imagem e diferentes valores de precisão e recall.
- A curva terá este aspeto:
Imagem de NeuroWorkshop
A Precisão Média para uma classe C é a área sob esta curva. Mais precisamente, o eixo Recall é normalmente dividido em 10 partes, e a Precisão é calculada como média em todos esses pontos:
AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})
AP e IoU
Consideramos apenas as deteções para as quais o IoU está acima de um determinado valor. Por exemplo, no conjunto de dados PASCAL VOC, normalmente \mbox{IoU Threshold} = 0.5 é assumido, enquanto no COCO o AP é medido para diferentes valores de \mbox{IoU Threshold}.
Imagem de NeuroWorkshop
Precisão Média Global - mAP
A principal métrica para Detecção de Objetos é chamada de Precisão Média Global, ou mAP. É o valor da Precisão Média, calculado como média entre todas as classes de objetos, e às vezes também sobre \mbox{IoU Threshold}. O processo de cálculo do mAP é descrito em mais detalhe
neste artigo), e também aqui com exemplos de código.
Diferentes Abordagens para Detecção de Objetos
Existem duas grandes classes de algoritmos de detecção de objetos:
- Redes de Proposta de Região (R-CNN, Fast R-CNN, Faster R-CNN). A ideia principal é gerar Regiões de Interesse (ROI) e executar CNN sobre elas, procurando a ativação máxima. É um pouco semelhante à abordagem ingénua, com a exceção de que as ROIs são geradas de forma mais inteligente. Uma das principais desvantagens desses métodos é que são lentos, pois necessitam de várias passagens do classificador CNN sobre a imagem.
- Métodos de uma única passagem (YOLO, SSD, RetinaNet). Nessas arquiteturas, projetamos a rede para prever tanto as classes como as ROIs numa única passagem.
R-CNN: CNN Baseada em Região
R-CNN utiliza Selective Search para gerar uma estrutura hierárquica de regiões ROI, que são então passadas por extratores de características CNN e classificadores SVM para determinar a classe do objeto, e regressão linear para determinar as coordenadas da caixa delimitadora. Artigo Oficial
Imagem de van de Sande et al. ICCV’11
Imagens de este artigo
F-RCNN - Fast R-CNN
Esta abordagem é semelhante à R-CNN, mas as regiões são definidas após as camadas de convolução terem sido aplicadas.
Imagem do Artigo Oficial, arXiv, 2015
Faster R-CNN
A ideia principal desta abordagem é usar uma rede neural para prever ROIs - a chamada Rede de Proposta de Região. Artigo, 2016
Imagem do artigo oficial
R-FCN: Rede Totalmente Convolucional Baseada em Região
Este algoritmo é ainda mais rápido que o Faster R-CNN. A ideia principal é a seguinte:
- Extraímos características usando ResNet-101.
- As características são processadas por Position-Sensitive Score Map. Cada objeto das classes
Cé dividido em regiõesk\times k, e treinamos para prever partes dos objetos. - Para cada parte das regiões
k\times k, todas as redes votam pelas classes de objetos, e a classe de objeto com o voto máximo é selecionada.
Imagem do artigo oficial
YOLO - You Only Look Once
YOLO é um algoritmo de uma única passagem em tempo real. A ideia principal é a seguinte:
- A imagem é dividida em regiões
S\times S. - Para cada região, CNN prevê
nobjetos possíveis, coordenadas da caixa delimitadora e confiança=probabilidade * IoU.
Imagem do artigo oficial
Outros Algoritmos
- RetinaNet: artigo oficial
- SSD (Single Shot Detector): artigo oficial
✍️ Exercícios: Detecção de Objetos
Continue a sua aprendizagem no seguinte caderno:
Conclusão
Nesta lição, fez uma rápida exploração de todas as várias formas de realizar detecção de objetos!
🚀 Desafio
Leia estes artigos e cadernos sobre YOLO e experimente por si mesmo:
- Bom artigo descrevendo YOLO
- Site oficial
- YOLO: Implementação Keras, caderno passo-a-passo
- YOLO v2: Implementação Keras, caderno passo-a-passo
Questionário pós-aula
Revisão e Autoestudo
- Detecção de Objetos por Nikhil Sardana
- Uma boa comparação de algoritmos de detecção de objetos
- Revisão de Algoritmos de Aprendizagem Profunda para Detecção de Objetos
- Uma Introdução Passo-a-Passo aos Algoritmos Básicos de Detecção de Objetos
- Implementação de Faster R-CNN em Python para Detecção de Objetos









