2011-04-19 2 views
6

Depuis une semaine, je fais des recherches et j'expérimente la reconnaissance faciale. L'application prévue est pour une personne d'être capable de rechercher les informations d'une personne dans une base de données (SQL) en prenant simplement une photo de leur visage. L'attente initiale était de pouvoir compresser une face vers le bas pour une clé ou un hachage et l'utiliser comme lokup de base de données. Cela ne doit pas nécessairement être extrêmement précis, car la personne qui consulte l'information peut très probablement finir par faire une comparaison finale entre l'image originale du dossier et la personne qui se trouve devant elle. OpenCV/JavaCV semble être le point de départ évident, et la détection faciale qu'il fournit fonctionne bien, cependant l'implémentation d'Eigenfaces pour la reconnaissance faciale n'est pas idéale car l'apprentissage en ligne en recompilant des centaines de milliers de visages utilisateur à chaque fois un nouveau visage doit être ajouté à l'ensemble de formation ne fonctionnerait pas. J'expérimente l'utilisation de descripteurs SURF sur un visage extrait à l'aide des fonctions Haar Cascade d'OpenCV, ce qui semble me rapprocher du résultat escompté, mais je n'arrive pas à trouver un moyen efficace de rechercher et de comparer environ 30 descripteurs (qui sont des vecteurs 64 ou 128 dimensions) dans une base de données. J'ai fait quelques lectures sur les algorithmes LSH et Spectral Hashing, cependant il n'y a pas d'implémentations à trouver pour Java et mes maths ne sont pas assez solides pour les implémenter moi-même.Reconnaissance faciale "Quick and Dirty" et stockage/consultation de base de données en Java

Quelqu'un at-il des idées ou des idées sur la façon dont cela pourrait être accompli, ou si c'est même possible?

+0

Avez-vous déjà obtenu n'importe où avec ceci? Nous essayons de faire pratiquement la même chose. – Bernesto

Répondre

2

Hachage n'est pas compliqué, ni besoin d'un diplôme en mathématiques. En supposant que 2 images donneront un nombre de «descripteurs» assez similaire, il suffit d'obtenir une correspondance raisonnable avec suffisamment d'entre elles pour atteindre un facteur de confiance suffisamment élevé. La spécificité de ces descripteurs détermine le niveau de collision que vous pouvez accepter dans votre algorithme de hachage.

Comme vous avez plusieurs d'entre eux, je dirais que vous n'avez pas besoin de quelque chose de trop sophistiqué - après tout, vous voulez probablement un niveau de «flou» dans votre recherche?

Commencez par quelque chose de simple - expérimenter et affiner. Vous pourriez même constater que vous aurez besoin d'un hachage différent pour des descripteurs différents, c'est-à-dire que certains pourraient être plus spécifiques que d'autres.

Espérons que de la matière à réflexion.

Questions connexes