Visão Computacional::Métricas::Mean Average Precision

A primeira coisa que deve ser explicada é os parametros (TP, TN, FP E FN) que são diferentes daqueles utilizados para o calculo do IoU. Pois a AP é uma metrica utilizada na detecção de objetos.
  • TP – é contabilizado como TP quando o objeto esta presente no ground truth e o modelo foi capaz de encontralo
    •  Normalmente é considerado como TP quando o IoU entre o objeto predito e o ground truth é superior a um limiar (normalmente 0.5)
  • TN – Não existe em detecção de objetos, pois normalmente não faz sentido treinar um modelo com um objeto “background”
  • FP – Quando o modelo não identifica um objeto que encontra-se no ground true são aqueles que possuem IoU inferior a um limiar (normalmente 0.5), ou quando não há objetos na imagem e o modelo encontrou algum.
  • FN – Quando o objeto encontra-se no ground truth e o modelo não detecta ele, ou seja quando o modelo não gera um nenhuma predição para esta marcação.
Algumas considerações importantes:
  • Quando várias predições detectam o mesmo objeto, a predição com a IoU mais alta é considerada TP, enquanto as predições restantes são consideradas FP.
  • Se o objeto estiver presente e a predição tiver um limiar de IoU < com o ground truth, a previsão é considerada FP. Mais importante, se nenhuma predição detectou corretamente, o objeto de classe recebe FN.
  • Se o objeto não estiver na imagem, e o modelo detecta um, então a previsão é considerada FP.
  • O recall e a precisão (precision) são então calculadas para cada classe aplicando as fórmulas para cada imagem

Precision e Recall

Precision: mede a precisão das predições, ou seja, é a porcentagem de predições correta.

precision_eq

Recall: capacidade de um modelo de encontrar todos os casos relevantes dentro de um conjunto de dados.

recall_eq


Calculando a precisão média (Average Precision – AP)

A precisão média (average precision – AP) é a área debaixo da curva de precision X recall, também chamada de curva AP.
Os valores de recall aumentam à medida que diminue os valores de FN. Entretanto, precision tem um padrão em zigue-zage- ela desce com o aumento de FP e sobe com o aumento de TP. Abaixo podemos ver que ocorre (o zigue-zage) quando plotamos precision x recall.
Por causa desse zigue-zage torna-se dificil a comparação entre diferentes modelos em cima de um dataset. É por isso que a AP, uma métrica numérica, nos ajuda a comparar diferentes modelos. Na prática, AP é a precisão média em todos os valores de recall entre 0 e 1. Para computar isto, há duas abordagens explicadas a baixo.
 
<h3>Interpolação em 11 pontos</h3>
  • tenta resumir a forma da curva AP, calculando a precision em um conjunto de onze valores de recall igualmente espaçados re={0,0.1,0.2,...,1}
  • Em vez de utilizar a precision observada em cada ponto, o AP é obtido pela interpolação da precision apenas nos 11 níveis re, tomando a precision máxima cujo valor de recall é maior do que re.
  • Sendo max(precision(re)) a precision máxima a partir do valor atual de recall (para evitar o zigue-zague).

ap_11pontos_eq

Um exemplo desta abordagem plotada pode ser vista abaixo.

<h3>Interpolação em todos os pontos</h3>

  • pode ser interpretado como uma AUC aproximada da curva AP. A intenção é reduzir o impacto dos wiggles na curva.
  • Em vez de interpolar apenas nos 11 pontos igualmente espaçados, você poderia interpolar através de todos os pontos

ap_todospontos_eq

  • Onde n seria o indice do vetor/lista de recall r. Então se calcularia o AP interpolando a precision em cada valor de recall. Utilizando área de retangulos, ou seja, base vezes altura, sendo:
    • “base”: a diferença entre o valor de recall atual e o próximo de maior precision (r_{n+1} r_{n})
    • “altura”: o valor máximo de precision (max(precision(r_{n+1}))) a partir do próximo valor de recall (r_{n+1}).

 Um exemplo desta abordagem plotada pode ser vista abaixo.


Pontos a ser reforçados

  • Os valores de precision e recall são para cada classe de cada imagem do dataset.
    • Cada classe possui um valor de AP em um dataset.
  • Os parametros (TP, FP, TN e FN) utilizados para o calculo do IoU são diferentes dos utilizados na detecção de objetos.
  • A mAP (mean average precision) é a média da AP entre as classes.

Código

Está explicação, juntamente com a explicação do calculo da métrica Intersection over Union – IoU pode ser encontrada em um jupyter notebook juntamente com o código (totalmente em portugues e comentado) no link: https://gist.github.com/johnnv1/fdbd901428daebe2be0402f7ab75fb17


Fontes

  1. https://manalelaidouni.github.io/manalelaidouni.github.io/Evaluating-Object-Detection-Models-Guide-to-Performance-Metrics.html
  2. https://en.wikipedia.org/wiki/Precision_and_recall
  3. https://towardsdatascience.com/beyond-accuracy-precision-and-recall-3da06bea9f6c
  4. https://forums.fast.ai/t/mean-average-precision-map/14345/14
    1. https://github.com/sgugger/Deep-Learning/blob/master/mAP/Computing%20the%20mAP%20metric.ipynb
    2. https://manalelaidouni.github.io/manalelaidouni.github.io/Evaluating-Object-Detection-Models-Guide-to-Performance-Metrics.html#average-precision
  5. https://medium.com/@jonathan_hui/map-mean-average-precision-for-object-detection-45c121a31173
  6. https://github.com/rafaelpadilla/Object-Detection-Metrics#average-precision
    1. https://zenodo.org/badge/latestdoi/134606465

About the Author

Sou formado em Engenharia da Computação pela Universidade Estadual do Rio Grande do Sul - UERGS e atualmente estou fazendo Mestrado em Ciência da Computação na Universidade Federal de Santa Catarina - UFSC. Tenho bolsa de pesquisa através da Fundação de Amparo à Pesquisa e Inovação de Santa Catarina - FAPESC, onde trabalho no LAPIX em pesquisas sobre o uso de técnicas de Visão Computacional e Deep Learning em análises imagens de citologia.