Darkflow: Como avalio a precisão do conjunto de teste?

Criado em 5 mar. 2018  ·  34Comentários  ·  Fonte: thtrieu/darkflow

Uma maneira é calcular a "Precisão média média: mAP".
Mas não estou ciente desse recurso implementado no darkflow.
Você tem alguma sugestão sobre qual repositório darknet ou pessoa escreveu um script para fazer isso?

Comentários muito úteis

Não há ninguém que tenha feito isso antes?
Ninguém testa sua precisão?
Não sei por que coisas tão importantes ainda não foram implementadas.
Se não houver nenhum, talvez eu precise implementar esse recurso sozinho e confirmá-lo para sempre.

Todos 34 comentários

https://github.com/thtrieu/darkflow/blob/master/darkflow/utils/box.py tem implementação básica necessária para avaliar ou calcular a sobreposição entre duas imagens. Você pode modificá-lo de acordo com sua necessidade e calcular a precisão média média como uma multiplicação da probabilidade de classe e box_iou

Não há ninguém que tenha feito isso antes?
Ninguém testa sua precisão?
Não sei por que coisas tão importantes ainda não foram implementadas.
Se não houver nenhum, talvez eu precise implementar esse recurso sozinho e confirmá-lo para sempre.

Eu também estaria interessado neste recurso.

@ off99555 , vi um cara trabalhando no placar da F1.

377

Olá @ off99555 , também estou procurando calcular o mAP de meus próprios dados de teste.
Acho que @sandeeprepakula tem uma boa resposta, você pode explicar passo a passo como calcular o mAP da caixa iou? eu sou muito novato em aprendizado profundo e detecção de objetos

Obrigado pela ajuda

@andikira Ainda não fiz. Eu também não tenho certeza.

Olá @ off99555 , você tem que ver este repo https://github.com/Cartucho/mAP então veja a pasta extra, você pode converter arquivos .xml e .json, esse repo funciona perfeitamente com darkflow.

@andikira @thtrieu Treinei a rede yolo2-voc no conjunto trainval PASCAL V0C 0712 e testei no conjunto de teste PASCAL VOC 2007, e o desempenho do mAP é de apenas cerca de 52% (após muitas épocas (200 ~) considerando que inicializei com pesos pré-treinados). Está bastante abaixo do desempenho oficial (76,8% mAP). Quero incluir resultados experimentais com minha ideia usando YOLO v2 em meu artigo. Alguém poderia saber o motivo?

Já vi esse problema antes, verifique outro problema @bareblackfoot

@andikira O mAP funciona maravilhosamente bem. Eu contribuí com um roteiro lá também. Obrigado!

Você pode

@andikira O mAP funciona maravilhosamente bem. Eu contribuí com um roteiro lá também. Obrigado!

Você poderia explicar mais especificamente? como funciona ? como você conseguiu os resultados?

@srhtyldz Vá para o site https://github.com/Cartucho/mAP e vá para a seção de início rápido.
A ideia é que você precise clonar o repo, prever suas imagens usando darkflow e, em seguida, copiar os arquivos de predição para a pasta mAP. Copie também os arquivos de informações terrestres.
E você faz tudo como o arquivo README de mAP repo sugerido e você deve ver mAP como uma saída de número único.

Além disso, você precisa converter seus arquivos do formato darkflow para o formato deles. Eles fornecem o script para converter o formato darkflow em seu formato aqui: https://github.com/Cartucho/mAP/tree/master/extra
Leia o README.

Além disso, você precisa converter seus arquivos do formato darkflow para o formato deles. Eles fornecem o script para converter o formato darkflow em seu formato aqui: https://github.com/Cartucho/mAP/tree/master/extra
Leia o README.

Eu descobri que darknet tem propriedade de mapa. Você tentou isso? Existe uma diferença entre eles ou qual é mais preciso?

@srhtyldz acho que o algoritmo é o mesmo. Exceto que mAP é um algoritmo que possui alguns parâmetros que você pode definir. Normalmente, isso é definido manualmente pelo redator do algoritmo. Portanto, a única vez que você vê que eles relatam números diferentes é quando têm parâmetros diferentes.
Eu sugiro que você leia a explicação de como mAP funciona para que você possa entender seu parâmetro oculto.
Eu tentei os dois. Eu escolhi darknet em minha tese porque darkflow não tem a opção de especificar a pasta de saída. É crítico para meu projeto sênior porque eu executo o código em FloydHub que é uma nuvem de aprendizado profundo que só permite o uso de certas pastas.

Primeiro eu uso darkflow com mAP e depois descobri que não posso especificar o caminho de saída, então mudei para darknet e uso seu cálculo interno de mAP .

E o mais importante, o proprietário do repo darknet (a versão fork com AlexeyAB como o proprietário) é muito útil. Ele responde a todas as questões que postei e que me fizeram terminar antes do prazo. Era muito estressante naquela época. Agradeço muito a ele, também escrevi seu nome na tese.

Primeiro eu uso darkflow com mAP e depois descobri que não posso especificar o caminho de saída, então mudei para darknet e uso seu cálculo interno de mAP .

Qual variável você deseja especificar?

Primeiro eu uso darkflow com mAP e depois descobri que não posso especificar o caminho de saída, então mudei para darknet e uso seu cálculo interno de mAP .

Minha opinião também é para darknet.Acho que você só pode alternar com limiar por cálculo mAP? direito ?

Qual variável você deseja especificar?

@srhtyldz Em darkflow cerca de meio ano atrás, quando comecei este tópico, não me permite especificar o caminho da pasta de saída. O caminho da pasta de saída é o caminho onde as imagens de previsão são gravadas.
Se bem me lembro, a pasta de saída está definida para out pasta dentro da pasta do seu conjunto de dados.
Por exemplo, se você tiver algumas imagens dentro de img/ , as previsões estarão dentro de img/out/ .
Em FloydHub , eles não permitem que você grave a saída na pasta do conjunto de dados. Portanto, se a pasta do conjunto de dados for img/ , você não pode criar uma nova pasta como img/out porque encontrará permissão negada.

Talvez ele permita que você especifique o caminho de saída agora, mas você precisa verificar. Não tenho certeza.

Minha opinião também é para darknet.Acho que você só pode alternar com limiar por cálculo mAP? direito ?

Se bem me lembro, mAP tem um parâmetro que o escritor precisa definir. É o limite de 0 a 1 que você decide se uma imagem foi prevista corretamente. Normalmente, isso é definido como 0,5. Portanto, se a proporção da área ficar acima de 0,5, significa que a imagem está correta.
E depois disso, você também deve definir Average Precision . Para refinar a média, você precisa descobrir quantas precisões existem. Acontece que você também pode definir o número de precisões. Normalmente, o número de precisões é definido como 11 para que você possa alinhá-las de 0, 0,1, 0,2, ..., 0,9, 1,0.

Não tenho certeza do que estou falando, no entanto. Porque já esqueci quase tudo. Você tem que aprender para ter certeza de que estou certo. Mas eu tenho certeza sobre o número 0.5 e 11 coisa. Só não sei como são chamados.

PS. Voltei para encontrar o slide da minha tese (quando sei o que significa mAP), aqui está como eu o descrevi naquela época:
image

image

Qual variável você deseja especificar?

@srhtyldz Em darkflow cerca de meio ano atrás, quando comecei este tópico, não me permite especificar o caminho da pasta de saída. O caminho da pasta de saída é o caminho onde as imagens de previsão são gravadas.
Se bem me lembro, a pasta de saída está definida para out pasta dentro da pasta do seu conjunto de dados.
Por exemplo, se você tiver algumas imagens dentro de img/ , as previsões estarão dentro de img/out/ .
Em FloydHub , eles não permitem que você grave a saída na pasta do conjunto de dados. Portanto, se a pasta do conjunto de dados for img/ , você não pode criar uma nova pasta como img/out porque encontrará permissão negada.

Talvez ele permita que você especifique o caminho de saída agora, mas você precisa verificar. Não tenho certeza.

Minha opinião também é para darknet.Acho que você só pode alternar com limiar por cálculo mAP? direito ?

Se bem me lembro, mAP tem um parâmetro que o escritor precisa definir. É o limite de 0 a 1 que você decide se uma imagem foi prevista corretamente. Normalmente, isso é definido como 0,5. Portanto, se a proporção da área ficar acima de 0,5, significa que a imagem está correta.
E depois disso, você também deve definir Average Precision . Para refinar a média, você precisa descobrir quantas precisões existem. Acontece que você também pode definir o número de precisões. Normalmente, o número de precisões é definido como 11 para que você possa alinhá-las de 0, 0,1, 0,2, ..., 0,9, 1,0.

Não tenho certeza do que estou falando, no entanto. Porque já esqueci quase tudo. Você tem que aprender para ter certeza de que estou certo. Mas eu tenho certeza sobre o número 0.5 e 11 coisa. Só não sei como são chamados.

PS. Voltei para encontrar o slide da minha tese (quando sei o que significa mAP), aqui está como eu o descrevi naquela época:
image

Muito obrigado . Vou pesquisar mAP e IoU. Obtive o resultado, mas não consegui interpretá-los. Posso fazer mais uma pergunta? você usou a função 'recall'? a função map e recall têm a mesma funcionalidade ou não? você tem alguma ideia_?

@srhtyldz mAP é calculado a partir da precisão como uma função de recuperação. Portanto, a precisão e a recuperação já estão incluídas. mAP é uma métrica de avaliação popular e convencional para tarefas de detecção de objetos. Portanto, você não precisa fazer recall ou precisão individualmente. Apenas calcule mAP e se for alto, significa que seu modelo tem um bom desempenho.

@srhtyldz mAP é calculado a partir da precisão como uma função de recuperação. Portanto, a precisão e a recuperação já estão incluídas. mAP é uma métrica de avaliação popular e convencional para tarefas de detecção de objetos. Portanto, você não precisa fazer recall ou precisão individualmente. Apenas calcule mAP e se for alto, significa que seu modelo tem um bom desempenho.

Recebi 90,4% do mAP.Acho que tem um bom desempenho.

@srhtyldz Isso é muito alto se você tiver muitas classes. (Modelos populares em grandes conjuntos de dados fazem apenas cerca de 50-60%) Mas mesmo que você tenha apenas duas classes, ainda é bom.
Certifique-se de verificar as imagens previstas usando olhos humanos para verificar se mAP é razoável.

@srhtyldz Isso é muito alto se você tiver muitas classes. (Modelos populares em grandes conjuntos de dados fazem apenas cerca de 50-60%) Mas mesmo que você tenha apenas duas classes, ainda é bom.
Certifique-se de verificar as imagens previstas usando olhos humanos para verificar se mAP é razoável.

Tenho apenas uma classe. Além disso, salvei todas as imagens com a caixa delimitadora.
Você desenhou o gráfico do mAP? No Alex repo, há um gráfico mAP e enquanto você está treinando seu modelo, você deve colocar '-map' para obter o gráfico. Não coloquei esta palavra. Mesmo que você tenha colocado isso, como poderia obter o gráfico mAP? tente você? também tentou a função 'válida'? você conhece as diferenças?
Eu sei que fiz muitas perguntas, mas suas respostas são muito importantes para minha tese :).

De darknet , eu apenas avalio mAP usando apenas seu terminal e tiro um instantâneo do console.
Não sei sobre a função válida.
Para o gráfico mAP, é possível se você usar darkflow e usar mAP repo acima. Existe um script que gera a animação e gráficos.
Acho que o repositório mAP também funciona com darknet, talvez.

De darknet , eu apenas avalio mAP usando apenas seu terminal e tiro um instantâneo do console.
Não sei sobre a função válida.
Para o gráfico mAP, é possível se você usar darkflow e usar mAP repo acima. Existe um script que gera a animação e gráficos.
Acho que o repositório mAP também funciona com darknet, talvez.

O problema é que não sei como a animação será executada. Tentei fazer isso durante o treinamento, mas não consegui obter a animação para o mapa. @alexeyAB talvez ajude sobre isso.

Recebi o mAP dos resultados do meu teste. De 56 imagens, obtive 48 imagens corretas para o meu teste. Eu tenho quatro classes. Como fazer uma matriz de confusão a partir disso. Alguém pode me ajudar .

@srhtyldz Usei a função / darknet detector map cfg / Aerial.data cfg / test_tiny.cfg backup \ my_yolov3_tiny_final.weights, mas não consegui obter nenhuma pontuação ou gráfico no final do treinamento. Como você conseguiu a pontuação do mAP no darknet

@mustafabuyuk Passe o argumento -map para ./darknet (darknet.exe). Ele aparecerá no gráfico em cerca de 1000 iterações. Não tenho certeza se é necessário, mas também tenho um conjunto de imagens de validação.

Alguém pode ter ideia? YOLOv5 calcula o mAP em relação ao conjunto de dados de validação durante o treinamento. Apesar de qual comando podemos calcular o conjunto de dados de teste invisível (mAP e mAP de classe inteligente)

@ off99555 O Tópico parece encerrado. Você obteve a resposta?
Tenho um conjunto de arquivos de Imagens e Yolo Annotation (em formato txt) para a validação.

Como usar o argumento -map na validação das imagens para obter a pontuação do mAP? Será possível derivar a matriz de confusão disso?

@sandeeprepakula Leia minha resposta diretamente antes de encerrar o problema. É assim que você pode calcular o mAP.
Mas eu sugeriria mais: não use mais este repositório. Eu não trabalho com detecção de objetos há alguns meses, então não tenho certeza sobre qual repo é o melhor, mas de uma olhada rápida no último commit deste repo, foi em fevereiro de 2020. Você acha que um repo que não foi atualizado por um ano vale a pena usar? Se você ficar preso em algo, ninguém o ajudará. Considere também a parte da comunidade ao escolher qual repo usar.

@ off99555 Obrigado pela sugestão

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

halt9 picture halt9  ·  3Comentários

jubjamie picture jubjamie  ·  4Comentários

bareblackfoot picture bareblackfoot  ·  5Comentários

LeeroyHannigan picture LeeroyHannigan  ·  4Comentários

Khobzer picture Khobzer  ·  5Comentários