Je suis assez confus quant à la façon de calculer les valeurs AP ou mAP car il semble y avoir plusieurs méthodes différentes. Je veux spécifiquement obtenir les valeurs AP / mAP pour la détection d'objets.
Tout ce que je sais, c'est:
Rappel = TP / (TP + FN), précision = TP / (TP + FP)
Par exemple, si je n'ai qu'une seule classe à évaluer et disons 500 images de test. Chaque image de test peut avoir un nombre différent de prédictions (propositions de boîte englobante) mais chaque image n'a qu'une seule boîte englobante de vérité au sol.
Image 1: [classe, probabilité, x1, y1, x2, y2], [classe, probabilité, x3, y3, x4, y4], [classe, probabilité, x5, y5, x6, y6], [classe, probabilité, x7, y7, x8, y8], ...
Image 2: [classe, probabilité, x1, y1, x2, y2], [classe, probabilité, x3, y3, x4, y4], ...
. . . (etc)
* juste un exemple, j'ai inventé ça
Je sais que pour obtenir TP, nous devons trouver les IOU de chaque prédiction et compter celles au-dessus d'un seuil sélectionné tel que 0,5 (si nous avons plusieurs prédictions avec des IOU au-dessus du seuil, ne comptons-nous qu'une seule fois et traitons les autres comme FP?).
C'est là que ça me laisse perplexe:
Le TP + FP = # de prédictions serait-il fait pour chaque image?
Étant donné que toutes les images de test n'ont pas de négatifs, TP + FN = 500?
Est-il calculé par image ou par classe?
Quelqu'un pourrait-il me faire savoir un guide étape par étape pour obtenir l'AP / mAP basé sur mon exemple? Je trouve que la partie la plus ambiguë est de savoir si nous le faisons par image ou par classe (c'est-à-dire 500 images à la fois).
La plupart des guides / articles que j'ai trouvés sont très ciblés sur la recherche d'informations. J'apprécierais un peu d'aide à ce sujet.
* Remarque: je le teste sur un ensemble de données personnalisé. Je sais que PASCAL VOC a du code pour le faire, mais je veux écrire le code moi-même, personnalisé selon mes propres données.