Je recherche une bibliothèque gratuite de reconnaissance faciale pour un projet universitaire. Je ne cherche pas la détection de visage . Je cherche une reconnaissance réelle. Cela signifie rechercher des images contenant des visages spécifiés ou des bibliothèques calculant les distances entre des visages spécifiques.
J'utilise actuellement OpenCV pour détecter les faces et un algorithme approximatif Eigenface pour la reconnaissance. Mais je pensais qu'il devrait exister quelque chose de plus performant qu'un algorithme Eigenface auto-écrit. Je ne parle pas de vitesse comme de performance, je cherche une bibliothèque avec de meilleurs résultats qu'une simple approche Eigenface.
J'ai jeté un œil à Faint , mais il semble que la bibliothèque ne soit pas très réutilisable pour mes propres applications.
Je suis heureux avec une bibliothèque en Python, Java, C++, C ou quelque chose comme ça. La meilleure chose à faire serait que le logiciel puisse être exécuté sur une machine Windows, car je m'appuie pour le moment sur un code externe uniquement composé de Windows.
Voici une liste de fournisseurs commerciaux proposant des packages standard pour la reconnaissance faciale fonctionnant sous Windows:
Cybula - Informations sur leur SDK de reconnaissance faciale . Il s'agit d'une entreprise fondée par un professeur d'université et, en tant que tel, leur site Web semble peu professionnel. Vous ne pouvez télécharger aucune information de prix ou démo. Vous aurez besoin de contactez-les pour obtenir des informations sur les prix.
NeuroTechnology - Informations sur leur SDK de reconnaissance faciale . Cette société a à la fois informations de tarification initiales ainsi qu'un période d'essai réelle de 30 jours de leur SDK .
Pittsburgh Pattern Recognition acquis par Google ) Informations sur leurs --- (SDK de suivi et de reconnaissance du visage . Les démonstrations qu’ils fournissent vous aident à évaluer leur technologie mais pas leur SDSK. Vous aurez besoin de contactez-les pour obtenir des informations sur les prix.
Vision sensible - Informations sur leur SDK . Leur site vous permet d'obtenir facilement un devis et vous pouvez également commander un kit d'évaluation qui vous aidera à évaluer leur technologie.
OpenCV 2.4.2 est maintenant livré avec le tout nouveau cv :: FaceRecognizer . Veuillez consulter la documentation très détaillée sur:
J'ai publié libfacerec , une bibliothèque moderne de reconnaissance des visages pour l'API OpenCV C++ (licence BSD). libfacerec n'a pas de dépendances supplémentaires et implémente la méthode Eigenfaces, la méthode Fisherfaces et les histogrammes de modèles binaires locaux. Des parties de la bibliothèque vont être incluses dans OpenCV 2.4.
La dernière révision de libfacerec est disponible sur:
La bibliothèque a été écrite pour OpenCV 2.3.1 en gardant à l’esprit le prochain OpenCV 2.4, je ne supporte donc pas les versions d’OpenCV antérieures à 2.3.1. Ce projet est un projet CMake avec une API bien documentée. Il existe également un tutoriel sur la classification par sexe. Vous pouvez voir une version HTML de la documentation sur:
Si vous souhaitez comprendre le fonctionnement de ces algorithmes, vous pouvez consulter mes exemples de Guide de reconnaissance de visage (inclut Python et GNU Octave/MATLAB)):
Il existe également une implémentation de Python et GNU Octave/MATLAB) des algorithmes dans mon référentiel github =. Les deux projets dans facerec inclut également plusieurs méthodes de validation croisée pour évaluer les algorithmes:
Les publications pertinentes sont:
pam-face-authentication un module PAM pour l’authentification des visages: mais il faudrait un peu de travail pour obtenir ce que vous voulez. Un test rapide a montré que les taux de reconnaissance ne sont pas aussi bons que ceux de VeriLook de NeuroTechnology.
Malic est un autre logiciel de reconnaissance de visage open source, qui utilise les descripteurs de Gabor Wavelet. Mais la dernière mise à jour de la source date de 3 ans.
Sur le site Web: " Malic est un logiciel de reconnaissance faciale opensource qui utilise des ondelettes de gabor. Il s’agit d’un système de reconnaissance faciale en temps réel reposant sur le système d’évaluation d’identification faciale de Malib et de la CSU (csuFaceIdEval). Il utilise la bibliothèque Malib pour le traitement de csuFaceIdEval pour la reconnaissance faciale. "
De plus cela pourrait être intéressant:
gaborboosting : Programme scientifique appliqué à la reconnaissance faciale avec Gabor Wavelet et l'algorithme AdaBoost
Bibliothèque d'extraction de caractéristiques - FELib fait référence à "Annotation de visage par un noyau transductif discriminant,"
Je pense que Eigenface , ce que vous faites déjà, est la voie à suivre si vous souhaitez calculer la distance entre les visages. Vous pouvez essayer différentes approches telles que Support Vector Machine ou Modèle de Markov caché . J'ai trouvé une page qui répertorie les principaux algorithmes pouvant être utilisés pour la reconnaissance faciale: Page de reconnaissance de visage .
De plus, lorsque vous parlez de "meilleures performances", voulez-vous dire rapidité ou précision? Quel genre de problème rencontrez-vous? Quelle est la variation des données? Sont-ils principalement frontaux ou comportent-ils des profils?
Si votre projet concerne un film ou une télévision, ou tout ce qui a un script, il semble que vous souhaitiez vraiment regarder le travail de Mark Everinghametal. . Le logiciel est disponible , de même que les résultats d'un épisode de Buffy .
Vous devriez regarder http://libccv.org/
C'est assez nouveau, mais il fournit une API de haut niveau gratuite et open source pour la détection des visages.
(... et, j'ose le dire, c'est sacrément incroyable)
Edit: Il est à noter également que c’est l’une des rares bibliothèques qui ne dépend PAS d’openv, et juste pour commencer, voici une copie du code de détection de visage de la page de documentation, pour vous donner une idée de ce qui est impliqué:
#include <ccv.h>
int main(int argc, char** argv)
{
ccv_dense_matrix_t* image = 0;
ccv_read(argv[1], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE);
ccv_bbf_classifier_cascade_t* cascade = ccv_load_bbf_classifier_cascade(argv[2]); ccv_bbf_params_t params = { .interval = 8, .min_neighbors = 2, .accurate = 1, .flags = 0, .size = ccv_size(24, 24) };
ccv_array_t* faces = ccv_bbf_detect_objects(image, &cascade, 1, params);
int i;
for (i = 0; i < faces->rnum; i++)
{
ccv_comp_t* face = (ccv_comp_t*)ccv_array_get(faces, i);
printf("%d %d %d %d\n", face->rect.x, face->rect.y, face->rect.width, face->rect.y);
}
ccv_array_free(faces);
ccv_bbf_classifier_cascade_free(cascade);
ccv_matrix_free(image);
return 0;
}
Je sais que cela fait longtemps, mais pour tous les autres intéressés, il existe le projet Faint , qui regroupe beaucoup de ces fonctionnalités (détection, reconnaissance, etc.) dans un progiciel Nice.
Nous utilisons OpenCV . Il contient beaucoup d'éléments de non-reconnaissance de visage également, mais, rassurez-vous, il le fait.
Vous pouvez essayer d'ouvrir la bibliothèque MVG. Elle peut également être utilisée pour plusieurs interfaces.
Ce n'est pas vraiment ce que vous cherchez, mais cela peut vous être utile. Détection des visages/vision par ordinateur algorithmes dans MATLAB.
La prochaine étape serait FisherFaces. Essayez-le et vérifiez si cela fonctionne pour vous. Ici est une belle comparaison.