Estou bastante confuso sobre como posso calcular os valores de AP ou mAP, pois parece haver alguns métodos diferentes. Eu quero especificamente obter os valores de AP / mAP para detecção de objetos.
Tudo o que tenho certeza é:
Rechamada = TP / (TP + FN), Precisão = TP / (TP + FP)
Por exemplo, se eu tiver apenas 1 turma para avaliar e digitar 500 imagens de teste. Cada imagem de teste pode ter um número diferente de previsões (propostas de caixa delimitadora), mas cada imagem possui apenas uma caixa delimitadora de base.
Imagem 1: [classe, probabilidade, x1, y1, x2, y2], [classe, probabilidade, x3, y3, x4, y4], [classe, probabilidade, x5, y5, x6, y6], [classe, probabilidade, x7, y7, x8, y8], ...
Imagem 2: [classe, probabilidade, x1, y1, x2, y2], [classe, probabilidade, x3, y3, x4, y4], ...
. . . (e assim por diante)
* apenas um exemplo, eu inventei isso
Eu sei que para obter TP, teríamos que encontrar as IOUs de cada previsão e contar as acima de um limite selecionado como 0,5 (se tivermos várias previsões com IOUs acima do limite, contamos apenas uma vez e tratamos as outras como FP?).
É aqui que me intriga:
O TP + FP = número de previsões feitas para cada imagem?
Como todas as imagens de teste não têm negativos, TP + FN = 500?
É calculado por imagem ou por classe?
Alguém poderia me informar um guia passo a passo para obter o AP / mAP com base no meu exemplo? Acho que a parte mais ambígua é se fazemos por imagem ou por classe (ou seja, 500 imagens de uma só vez).
A maioria dos guias / documentos que encontrei são muito direcionados à recuperação de informações. Gostaria de receber alguma ajuda nisso.
* Nota: estou testando-o em alguns conjuntos de dados personalizados. Sei que o PASCAL VOC tem algum código para fazê-lo, mas quero escrever o código pessoalmente, personalizado para meus próprios dados.
fonte
Respostas:
Eu acho que a resposta aceita direciona o caminho errado para calcular o mAP. Porque, mesmo para cada classe, o AP é o produto médio. Na minha resposta, ainda incluirei a interpretação de IOU, para que os iniciantes não tenham dureza de entendê-la.
Índice de Objeto, Confiança, verdade fundamental
Caixa delimitadora 1, 0,8, 1
Caixa delimitadora 1, 0,7, 1
Caixa delimitadora 2, 0,1, 0
Caixa delimitadora 3, 0,9, 1
E então, você precisa classificá-los pela confiança de alto a baixo. Depois, você só precisa calcular a curva PR como de costume e descobrir 11 resultados de precisão interpolados nesses 11 pontos de recuperação iguais a [0, 0,1, ..., 1]. (Os métodos calculados detalhados estão aqui ) para múltiplas detecções de uma única caixa delimitadora, por exemplo, a caixa delimitadora 1 no meu exemplo, nós o contaremos no máximo como correto uma vez e todos os outros como Falso. Em seguida, você percorre 20 classes e calcula a média delas. Então você obtém seu mapa.
E também, por enquanto, torcemos um pouco esse método para encontrar nosso mAP. Em vez de usar 10 pontos de interrupção de recall, usaremos o número verdadeiro K de classe específica e calcularemos o precisão interpolado. ou seja [0,1 / K, 2 / K ...]
fonte
É assim que o PASCOL-VOC 2012 e o MS-COCO calculam o mAP, pseudo-código, conforme a seguir:
Para obter AP, primeiro suavize a curva PR e depois calcule a área sob a curva. Para obter o mAP, repita as etapas acima para todas as classes e faça a média delas.
Referência:
Versão em Python da Métrica de Avaliação PASCOL VOC 2012: https://github.com/Cartucho/mAP
Kit de ferramentas original do PASCOL VOC 2012 (em MATLAB): https://github.com/Cartucho/mAP
MSCOCO original: http://cocodataset.org/#detection-eval
fonte
AP = TP/(TP+FP)
está incorreto. Em vez dissoPrecision = TP/(TP+FP)
.A palestra "Avaliação 12: precisão média média" de Victor Lavrenko contém um slide que explica muito claramente o que é Precisão Média (AP) e Precisão Média Média (mAP) para o caso de recuperação de documentos:
Para aplicar o slide à detecção de objeto: documento relevante = caixa delimitadora prevista cuja IoU é igual ou acima de algum limite (normalmente 0,5).
IoU = Intersecção sobre União, veja a imagem abaixo para uma definição visual:
Exemplo de cálculo de IoU em uma imagem real:
( fonte da imagem )
FYI: Precisão Média Média vs Classificação Recíproca Média
fonte
Embora o @ User1915 tenha encontrado a resposta sozinho, gostaria de deixar algo para os interessados.
Aqui está a minha resposta para as perguntas acima:
Sim. ( Como o número de TP é limitado, quanto mais previsões você fizer, menor será a precisão. )
Sim. ( Uma vez que existe apenas uma caixa verificada de base por imagem )
Por turma.
Veja a publicação de @ User1915 acima.
fonte