Contents
Parametros em 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.
- 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.
Recall: capacidade de um modelo de encontrar todos os casos relevantes dentro de um conjunto de dados.
Calculando a precisão média (Average Precision – AP)

- 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).
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
- 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
- https://manalelaidouni.github.io/manalelaidouni.github.io/Evaluating-Object-Detection-Models-Guide-to-Performance-Metrics.html
- https://en.wikipedia.org/wiki/Precision_and_recall
- https://towardsdatascience.com/beyond-accuracy-precision-and-recall-3da06bea9f6c
- https://forums.fast.ai/t/mean-average-precision-map/14345/14
- https://medium.com/@jonathan_hui/map-mean-average-precision-for-object-detection-45c121a31173
- https://github.com/rafaelpadilla/Object-Detection-Metrics#average-precision