2016-05-25 2 views
2

dans mon projet pour la détection d'objets dans les images que j'utilise la fonction TrainCascadeObjectDetector de Matlab vous pouvez voir aussi here, cette utilisation de la fonction cascade de train OpenCV et est pour la formation d'un ensemble d'images (positifs et négatifs):Comment tracer une courbe ROC d'un détecteur généré par TrainCascadeObjectDetector?

positifs: les images contiennent l'objet d'intérêt. Négatifs: les images ne contiennent pas l'objet d'intérêt mais doivent contenir le fond des positifs pour plus de précision après l'entraînement.

Cette fonction Requier également certains paramètres:

-nombre des étapes en cascade.

-Tarif positif.

-faux Taux d'alarme.

-Facteur d'échantillons négatifs.

-Taille d'entraînement de l'objet.

-type caractéristique (HOG, LBP, Haar).

J'utilise le HOG (histogramme des gradients orientés), et le résultat de cette fonction est un fichier XML:

trainCascadeObjectDetector(outputXMLFilename,positiveInstances,negativeImages) 

j'utiliser la sortie pour localiser l'objet d'intérêt dans les images en utilisant:

detector = vision.CascadeObjectDetector(XMLFILE) 

so i ont en conséquence un détecteur de wich i utiliser pour dessiner des boîtes englobantes:

BBOX = step(detector) 

Je veux évaluer la performance de mes résultats, j'ai trouvé qu'il est possible de dessiner une courbe ROC, here ma question. Le ROC est une courbe de taux de faux positifs VS vrai taux positif, donc c'est la valeur requise de TPR et FPR. Le calcule global TPR et de cette façon TFP:

TruePositiveRate^numberOfStages and FalseAlarmRate^numberOfStages 

Mais ils ne sont que 2 valeurs et non unalf pour tracer la courbe. J'ai essayé aussi d'avoir TPR et FPR en faisant une comparaison binaire de ce topic, je l'ai fait en comparant mes images de vérité au sol et les images de résultats et a pris le maximum FPR et TPR, Maintenant j'ai 1 TPR et 1 FPR pour les images entières de la dernière étape. Comment obtenir les autres des étapes précédentes?

Mon GUI: enter image description here

+0

vous pouvez modifier le seuil de détection pour obtenir différentes valeurs de sensibilité pour le même classificateur – Micka

+1

si vous souhaitez évaluer différents classificateurs, vous pouvez tracer la "courbe learnimg" qui est "précision sur le nombre d'échantillons d'entraînement utilisés" – Micka

+0

Il y a 1 seuil pour chaque étape du fichier final .xml, est-ce que vous parlez de ces seuils? – matlab22

Répondre

1

A ROC est définie pour les classificateurs paramétrées, où chaque paramètre continu qui influence TFP/TPR a sa propre courbe. Vous pouvez approximer cette courbe en choisissant de manière répétée différentes valeurs du paramètre, puis en exécutant votre jeu de validation dans votre classificateur.

+0

Voulez-vous exécuter TrainCascadeObjectDetector plusieurs fois avec numberOfstages différent, puis appliquer les fichiers .xml sur les images, puis faire la comparaison avec la vérité terrain? @MSalters – matlab22

+0

C'est ainsi que vous calculez le ROC pour le paramètre NumberOfStages; si ce ROC spécifique a du sens pour vous, je ne peux pas le dire. – MSalters

+0

C'est beaucoup de travail de former le classificateur plusieurs fois, même si c'est plus facile, donc si mon entrainement dure 5 heures (GLAD JE N'AI PAS CHOISI LBP OU HAAR :)) pour avoir 5 valeurs par exemple de TPR et FPR cela prendra 15 heures. Est-ce le seul pourquoi? @MSalters – matlab22