Como calcular o mAP para a tarefa de detecção do PASCAL VOC Challenge?

22

Como calcular o mAP (Precisão média média) para a tarefa de detecção das tabelas de classificação Pascal VOC? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4

Disse - na página 11 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf

Precisão Média (PA). Para o desafio VOC2007, a precisão média interpolada (Salton e Mcgill 1986) foi usada para avaliar a classificação e a detecção. Para uma determinada tarefa e classe, a curva precisão / recuperação é calculada a partir da saída classificada de um método. A rechamada é definida como a proporção de todos os exemplos positivos classificados acima de uma determinada classificação. Precisão é a proporção de todos os exemplos acima dessa classificação que são da classe positiva. O PA resume a forma da curva precisão / recuperação, e é definida como a precisão média em um conjunto de onze níveis de recuperação igualmente espaçados [0,0,1, ..., 1]: AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)

A precisão em cada nível de recuperação r é interpolada tomando a precisão máxima medida para um método para o qual a recuperação correspondente excede r pinterp(r) = max p(r˜):, onde p (r˜) é a precisão medida na recuperação 'r

Sobre o mAP: http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision


Então, isso significa que:

  1. Calculamos Precisão e Recuperação :

    • A) Para muitos diferentesIoU > {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1} , calculamos valores Verdadeiro / Falso Positivo / Negativo

    Onde True positive = Number_of_detection with IoU > {0, 0.1,..., 1}, como dito aqui: /datascience//a/16813/37736 e calculamos:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)


  • B) Ou para muitos limiares diferentes de algoritmos de detecção, calculamos:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)

    Onde, True positive = Number_of_detection with IoU > 0.5como dito aqui: /programming//a/43168882/1558037



  1. Em seguida, criamos a curva Precision-Recall , como mostrado aqui: insira a descrição da imagem aqui

  1. Então calculamos AP (precisão média) como média de 11 valoresPrecision nos pontos em que Recall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, ou seja,AP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)

(Em geral, para cada ponto, por exemplo, 0,3, obtemos MAX de precisão para rechamada <= 0,3, em vez do valor de precisão neste momento Rechamada = 0,3)


  1. E quando calculamos AP apenas para 1 classe de objeto em todas as imagens - obtemos AP (precisão média) para essa classe, por exemplo, apenas para air.

Portanto, o AP é uma integral (área sob a curva): /stats//a/157019/111998

Porém, quando calculamos o AP para todas as classes de objetos em todas as imagens - obtemos o mAP (precisão média média) para todos os conjuntos de dados de imagens, por exemplo, 88.6para R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4


Questões:

  1. Está certo e, se não estiver, como calcular o mAP para o Pascal VOC Challenge?
  2. E qual das três fórmulas (A, B ou C) está correta para o cálculo de Precisão e Recuperação, no parágrafo 1?

Resposta curta:

  • mAP = AVG (AP para cada classe de objeto)
  • AP = AVG (precisão para cada uma das 11 recuperações {precision = 0, 0,1, ..., 1})
  • Curva PR = Precisão e recuperação (para cada limite que está nas caixas de limite de previsões)
  • Precisão = TP / (TP + FP)
  • Rechamada = TP / (TP + FN)
  • TP = número de detecções com IoU> 0,5
  • FP = número de detecções com IoU <= 0,5 ou detectadas mais de uma vez
  • FN = número de objetos que não foram detectados ou detectados com IoU <= 0,5
Alex
fonte

Respostas:

15

Para responder suas perguntas:

  1. Sim, sua abordagem está certa
  2. De A, B e C, a resposta certa é B.

A explicação é a seguinte: Para calcular a Precisão Média Média (mAP) no contexto de Detecção de Objetos, você deve calcular a Precisão Média (AP) de cada classe e depois calcular a média em todas as classes. A chave aqui é calcular o AP para cada classe; em geral, para calcular Precision (P) e Recall (R), você deve definir o que são: Verdadeiros Positivos (TP), Falso Positivos (FP), Verdadeiro Negativo (TN) e Falso Negativo (FN). No cenário de detecção de objetos do Pascal VOC Challenge, são os seguintes:

  • TP: são as caixas delimitadoras (BB) em que a interseção sobre a união (IoU) com a verdade do solo (GT) está acima de 0,5
  • FP: BB que a IoU com GT está abaixo de 0,5 também o BB que tem IoU com uma GT que já foi detectada.
  • TN: não há negativo verdadeiro, espera-se que a imagem contenha pelo menos um objeto
  • FN: essas imagens foram o método que não produziu um BB

Agora, cada BB previsto tem um valor de confiança para a classe especificada. Portanto, o método de pontuação classifica as previsões por ordem decrescente de confiança e calcula P = TP / (TP + FP) e R = TP / (TP + FN) para cada classificação possível k = 1 até o número de previsões. Então agora você tem um (P, R) para cada classificação, esses P e R são a curva "bruta" de Precisão-Rechamada. Para calcular a curva PR interpolada para cada valor de R, selecione o P máximo que tem um R 'correspondente => R.

Existem duas maneiras diferentes de amostrar pontos da curva PR de acordo com o documento do voc devkit . Para o VOC Challenge antes de 2010, selecionamos o P máximo obtido para qualquer R '> = R, que R pertence a 0, 0,1, ..., 1 (onze pontos). O AP é então a precisão média em cada um dos limites de rechamada. Para o VOC Challenge 2010 e depois, ainda selecionamos o P máximo para qualquer R '> = R, enquanto R pertence a todos os valores de recall exclusivos (incluem 0 e 1). O AP é então o tamanho da área sob a curva PR. Observe que, no caso de você não ter um valor de P com Rechamada acima de alguns dos limites, o valor de Precisão é 0.

Por exemplo, considere a seguinte saída de um método, dada a classe "Avião":

BB  | confidence | GT
----------------------
BB1 |  0.9       | 1
----------------------
BB2 |  0.9       | 1
----------------------
BB3 |  0.7       | 0
----------------------
BB4 |  0.7       | 0
----------------------
BB5 |  0.7       | 1
----------------------
BB6 |  0.7       | 0
----------------------
BB7 |  0.7       | 0
----------------------
BB8 |  0.7       | 1
----------------------
BB9 |  0.7       | 1
----------------------

Além disso, não detectamos caixas delimitadoras em duas imagens, portanto temos FN = 2. A tabela anterior é a classificação ordenada pelo valor de confiança das previsões do método GT = 1 significa que é TP e GT = 0 FP. Então TP = 5 (BB1, BB2, BB5, BB8 e BB9), FP = 5. Para o caso de classificação = 3, a precisão cai porque o BB1 já foi detectado, portanto, mesmo que o objeto esteja realmente presente, ele conta como um FP. .

rank=1  precision=1.00 and recall=0.14
----------
rank=2  precision=1.00 and recall=0.29
----------
rank=3  precision=0.66 and recall=0.29
----------
rank=4  precision=0.50 and recall=0.29
----------
rank=5  precision=0.40 and recall=0.29
----------
rank=6  precision=0.50 and recall=0.43
----------
rank=7  precision=0.43 and recall=0.43
----------
rank=8  precision=0.38 and recall=0.43
----------
rank=9  precision=0.44 and recall=0.57
----------
rank=10 precision=0.50 and recall=0.71
----------

Dados os resultados anteriores: se usamos o caminho anterior ao voc2010, os valores de Precisão interpolados são 1, 1, 1, 0,5, 0,5, 0,5, 0,5, 0,5, 0, 0, 0. Então AP = 5,5 / 11 = 0,5 para o classe de "aviões". Caso contrário, se usamos o caminho desde o voc2010, os valores de precisão interpolados são 1, 1, 1, 0,5, 0,5, 0,5, 0 para sete recuperações únicas que são 0, 0,14, 0,29, 0,43, 0,57, 0,71, 1. Então AP = (0,14-0) * 1 + (0,29-0,14) * 1 + (0,43-0,29) * 0,5 + (0,57-0,43) * 0,5 + (0,71-0,57) * 0,5 + (1-0,71) * 0 = 0,5 para a classe de "aviões".

Repita para cada classe e, em seguida, você tem o (mAP).

Mais informações podem ser encontradas nos seguintes links 1 , 2 . Você também deve verificar o artigo: O Desafio das Classes de Objetos Visuais da PASCAL: Uma Retrospectiva para obter uma explicação mais detalhada.

feynman410
fonte
1
Seja bem-vindo! Sim, você deve calcular todas as imagens. E GT é 1 se IoU> 0,5. Última FN será de 3 para 3 objetos não detectados
feynman410
1
FN é o número de imagens onde nenhuma previsão foi feita, FP é o número de detecções com IoU <= 0,5 ou detectadas mais de uma vez. Veja este pseudocódigo stats.stackexchange.com/a/263758/140597
feynman410
1
Desculpe, seu direito é o número de objetos não detectados.
precisa saber é o seguinte
1
@ feynman410 fiquei confuso, você pode nos dizer onde coloca os objetos da tabela que não foram detectados, mas deveriam estar? no final da mesa? (causa não há nenhuma pontuação para eles)
Martin Brišiak
1
Portanto, "Precision" e "Recall" são calculados separadamente para cada classe - para calcular o AP por classe. Certo? Então, eles são calculados separadamente em cada imagem e, em seguida, calculados a média ou são calculados sobre o total de detecções em todas as imagens?
SomethingSomething