2012-06-13 1 views
3

Il pourrait être une question facile mais je suis un peu confus alors espérons que quelqu'un me guider correctement. J'utilise la bibliothèque de reconnaissance faciale de openCV libfacerec, elle donne un bon résultat mais j'ai besoin d'estimer le pourcentage de similarité. Si j'utilise l'image inconnue en tant qu'entrée alors encore prédire comme si la personne existe dans le système sur la base de la dernière valeur de la distancecomment obtenir le pourcentage de similitude en utilisant libfacerec bibliothèque Opencv

  if(dist < minDist) { 
     minDist = dist; 
     minClass = _labels[sampleIdx]; 
    } 

je dois définir un certain seuil, puis valider/invalider l'image utilisateur en fonction ce seuil contre un pourcentage ou une valeur de distance, est-ce que quelqu'un sait comment faire cela en utilisant la librairie libfacerec parce que dans cette bibliothèque il n'y a pas de variable publique pour voir la distance ou la valeur en pourcentage? Sinon ai-je besoin de coder à l'intérieur de la bibliothèque pour cela parce que d'après ce que je comprends, il ne contient pas cette fonctionnalité ???

+2

Salut. J'ai cherché dans le document, mais je ne pouvais pas trouver un moyen simple de l'obtenir sans creuser dans le code non plus. Vous pouvez directement publier un problème sur Gituh, où le projet est hébergé: https://github.com/bytefish/libfacerec/issues. Je suis sûr que le dev reviendra vite à vous! – jlengrand

Répondre

5

Veuillez vous assurer que vous travaillez sur la dernière révision! La dernière révision de libfacerec vous permet d'obtenir une prédiction ET une valeur de confiance pour la prédiction. Vous pouvez voir la signature des méthodes ici:

Il est montré dans l'application de démonstration J'expédier avec la bibliothèque, s'il vous plaît voir:

C'est aussi simple que d'appeler:

FaceRecognizer::predict(InputArray src, int &label, double &confidence); 

sur un modèle calculé. Donc, dans votre application que vous écrivez simplement:

Mat testSample; // of course this is set somewhere in your application 
int predictedLabel = -1; 
double confidence = 0.0; 
model.predict(testSample, predictedLabel, confidence); 

Ensuite, vous avez l'étiquette prévue dans predictedLabel et la valeur de confiance pour cette prédiction en confiance. Deuxièmement, et cela correspond probablement à votre question encore plus, vous avez maintenant la possibilité de définir un seuil, en dessous duquel une image d'entrée est considérée comme inconnue. Vous pouvez fixer le seuil dans le constructeur d'un modèle ou d'un setter/getter:

Il apparaît également dans l'application de démonstration I navire avec la bibliothèque:

+0

Merci octet! ça marche comme un charme une chose de plus GIT ne met pas à jour tout le répertoire du trunk source. J'ai dû mettre à jour tout le tronc à travers les archives zip de la librairie libfacerec. Aussi merci pour l'offre je vais sûrement en contact avec vous pour la contribution. – wolvorinePk

+0

Cool!J'ai préparé une version mise à jour et je la téléchargerai d'ici dimanche. Ce serait génial si vous pouviez lire et me dire, où vous voyez des améliorations/ce qui est confus. – bytefish

+0

Bonjour mr. bytefish. J'ai aussi utilisé la dernière révision de libfacerec, mais en python. Existe-t-il un moyen d'utiliser également cette valeur de confiance dans la prédiction en python? Il serait utile que ma demande puisse dire si une personne est inconnue. –

Questions connexes