AI-For-Beginners/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/README.md

12 KiB
Raw Blame History

Detecção de Objetos

Os modelos de classificação de imagens que abordámos até agora tomavam 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 exata. Este é precisamente o objetivo da detecção de objetos.

Pre-lecture quiz

Detecção de Objetos

Imagem retirada do site YOLO v2

Uma Abordagem Ingénua para Detecção de Objetos

Supondo que quiséssemos encontrar um gato numa imagem, uma abordagem muito ingénua para detecção de objetos seria a seguinte:

  1. Dividir a imagem em vários blocos.
  2. Executar a classificação de imagem em cada bloco.
  3. Os blocos que resultarem numa ativação suficientemente alta podem ser considerados como contendo o objeto em questão.

Detecção Ingénua de Objetos

Imagem retirada do Caderno de Exercícios

No entanto, esta abordagem está longe de ser ideal, pois só permite que o algoritmo localize 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 à detecçã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

COCO

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 inferida da caixa delimitadora. 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.

IoU

Figura 2 retirada deste 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 separadas 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:

  1. 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).
  2. Dependendo do limiar, obteremos mais ou menos objetos detetados na imagem e diferentes valores de precisão e recall.
  3. A curva terá este aspeto:

Imagem retirada do 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 a média de 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 retirada do 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 a média entre todas as classes de objetos e, por 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 destes 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). Nestas 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

RCNN

Imagem retirada de van de Sande et al. ICCV11

RCNN-1

Imagens retiradas deste 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.

FRCNN

Imagem retirada do Artigo Oficial, arXiv, 2015

Faster R-CNN

A ideia principal desta abordagem é utilizar uma rede neural para prever ROIs - a chamada Rede de Proposta de Região. Artigo, 2016

FasterRCNN

Imagem retirada do Artigo Oficial

R-FCN: Rede Totalmente Convolucional Baseada em Região

Este algoritmo é ainda mais rápido do que o Faster R-CNN. A ideia principal é a seguinte:

  1. Extraímos características utilizando ResNet-101.
  2. As características são processadas por Position-Sensitive Score Map. Cada objeto de C classes é dividido em k\times k regiões, e treinamos para prever partes dos objetos.
  3. Para cada parte das k\times k regiões, todas as redes votam pelas classes de objetos, e a classe de objeto com o maior número de votos é selecionada.

r-fcn image

Imagem retirada 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 S\times S regiões.
  • Para cada região, CNN prevê n objetos possíveis, coordenadas da caixa delimitadora e confiança=probabilidade * IoU.

YOLO

Imagem retirada do Artigo Oficial

Outros Algoritmos

✍️ Exercícios: Detecção de Objetos

Continue a sua aprendizagem no seguinte caderno:

ObjectDetection.ipynb

Conclusão

Nesta lição, explorou rapidamente as várias formas de realizar detecção de objetos!

🚀 Desafio

Leia estes artigos e cadernos sobre YOLO e experimente por si mesmo:

Post-lecture quiz

Revisão & Autoestudo

Assignment: Object Detection

Aviso Legal:
Este documento foi traduzido utilizando o serviço de tradução por IA Co-op Translator. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.