Bibliothèque de reconnaissance faciale [fermée]


169

Je recherche une bibliothèque de reconnaissance faciale gratuite pour un projet universitaire. Je ne recherche pas de détection de visage . Je recherche une réelle reconnaissance. Cela signifie trouver des images contenant des faces spécifiées ou des bibliothèques qui calculent les distances entre des faces spécifiques.

J'utilise actuellement OpenCV pour détecter les visages et un algorithme Eigenface approximatif pour la reconnaissance. Mais je pensais qu'il devrait y avoir quelque chose avec de meilleures performances qu'un algorithme Eigenface auto-écrit. Je ne parle pas de vitesse comme performance, je recherche une bibliothèque avec de meilleurs résultats qu'une simple approche Eigenface.

J'ai jeté un coup d'œil à Faint , mais il semble que la bibliothèque n'est pas très réutilisable pour mes propres applications.

Je suis satisfait d'une bibliothèque en Python, Java, C ++, C ou quelque chose comme ça. La meilleure chose à faire serait de l'exécuter sur une machine Windows, car je compte pour le moment sur du code externe uniquement Windows.


1
Doit-il être gratuit pour des raisons politiques ou pratiques? S'il s'agit d'un projet de recherche pur, vous pourrez peut-être obtenir une licence académique gratuite auprès de l'un des fournisseurs commerciaux.
Christoffer

2
J'ai obtenu des résultats relativement bons uniquement avec l'approche des faces propres, mais il semble qu'une bonne api de détection de visage gratuite à utiliser soit quelque chose qui manque pour le moment
Janusz



4
Bien que parfaitement acceptable en 2009, cette question n'est plus considérée sur le sujet: les questions nous demandant de recommander ou de trouver un outil, une bibliothèque ou une ressource hors site préférée sont hors sujet pour Stack Overflow. Voir Quelles devraient être les raisons hors sujet prédéfinies pour Stack Overflow?
JDB se souvient encore de Monica le

Réponses:


85

Voici une liste de fournisseurs commerciaux qui fournissent des packages prêts à l'emploi pour la reconnaissance faciale qui fonctionnent sous Windows:

  1. 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, son site Web ne semble pas professionnel. Il n'y a pas d'informations sur les prix ou de démonstration que vous pouvez télécharger. Vous devrez les contacter pour obtenir des informations sur les prix.

  2. NeuroTechnology - Informations sur leur SDK de reconnaissance faciale . Cette société dispose à la fois d' informations sur les prix initiales et d'un essai réel de 30 jours de leur SDK .

  3. Pittsburgh Pattern Recognition - ( acquis par Google ) Informations sur leur SDK de suivi et de reconnaissance faciales . Les démos qu'ils fournissent vous aident à évaluer leur technologie mais pas leur SDSK. Vous devrez les contacter pour obtenir des informations sur les prix.

  4. Sensible Vision - 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.


5
Merci pour les liens mais pour le moment j'ai besoin de trouver une bibliothèque gratuite
Janusz

1
Ce n'est peut-être pas pour la reconnaissance faciale en soi , mais numenta.com pourrait vous intéresser.
RCIX

7
vous pouvez ajouter l'API REST gratuite face.com à cette liste
Omry Yadan

@Omry, vous devriez ajouter comme réponse, ou modifier ceci pour ajouter face.com
Scott


54

Mettre à jour

OpenCV 2.4.2 est maintenant livré avec le tout nouveau cv :: FaceRecognizer . Veuillez consulter la documentation très détaillée sur:

Message original

J'ai publié libfacerec , une bibliothèque moderne de reconnaissance faciale 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. Certaines parties de la bibliothèque seront incluses dans OpenCV 2.4.

La dernière révision de la libfacerec est disponible sur:

La bibliothèque a été écrite pour OpenCV 2.3.1 avec le prochain OpenCV 2.4 à l'esprit, donc je ne supporte pas les versions d'OpenCV antérieures à 2.3.1. Ce projet se présente comme 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 voulez comprendre comment ces algorithmes fonctionnent, vous voudrez peut-être lire mon Guide de reconnaissance faciale (comprend des exemples Python et GNU Octave / MATLAB):

Il y a aussi une implémentation Python et GNU Octave / MATLAB des algorithmes dans mon référentiel github . Les deux projets de facerec incluent également plusieurs méthodes de validation croisée pour l'évaluation des algorithmes:

Les publications pertinentes sont:

  • Turk, M. et Pentland, A. Eigenfaces pour la reconnaissance. . Journal of Cognitive Neuroscience 3 (1991), 71–86.
  • Belhumeur, PN, Hespanha, J., et Kriegman, D. Eigenfaces vs. Fisherfaces: Reconnaissance linéaire en utilisant projection spécifique de la classe. . IEEE Transactions on Pattern Analysis and Machine Intelligence 19, 7 (1997), 711–720.
  • Ahonen, T., Hadid, A. et Pietikainen, M. Reconnaissance de visage avec des modèles binaires locaux. . Computer Vision - ECCV 2004 (2004), 469–481.


19

pam-face-authentication un module PAM pour l'authentification faciale : 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 faciale open source, qui utilise des descripteurs Gabor Wavelet. Mais la dernière mise à jour de la source date de 3 ans.

À partir du site Web: " Malic est un logiciel de reconnaissance faciale open source qui utilise l'ondelette de Gabor. Il s'agit d'un système de reconnaissance faciale en temps réel basé sur Malib et le système d'évaluation d'identification des visages CSU (csuFaceIdEval) .Utilise la bibliothèque Malib pour le traitement d'image en temps réel et une partie de csuFaceIdEval pour le visage reconnaissance. "

En outre, cela pourrait être intéressant:

gaborboosting : un programme scientifique appliqué à la reconnaissance faciale avec Gabor Wavelet et Algorithme AdaBoost

Bibliothèque d'extraction de caractéristiques - FELib fait référence à «Annotation de visage par transductif Kernel Fisher Discriminant».


13

Je pense qu'Eigenface , ce que vous faites déjà, est la voie à suivre si vous voulez calculer la distance entre les faces. Vous pouvez essayer différentes approches comme Support Vector Machine ou Hidden Markov Model . J'ai trouvé une page qui répertorie les principaux algorithmes qui pourraient être utilisés pour la reconnaissance faciale: Face Recognition Homepage .

De plus, lorsque vous dites «meilleures performances», voulez-vous dire vitesse ou précision? Quel genre de problème rencontrez-vous? Dans quelle mesure les données varient-elles? Sont-ils principalement frontaux ou incluent-ils des profils?


5
Avec les performances, j'ai obtenu une précision de détection. Eigenfaces est sympa mais ce que je recherche, c'est un package prêt à l'emploi pour reconnaître les visages parce que je ne veux pas réinventer la roue et je n'ai pas le temps
Janusz


7

Vous devriez regarder http://libccv.org/

C'est assez nouveau, mais il fournit une API de haut niveau open source gratuite pour la détection des visages.

(... et, j'ose dire, c'est vraiment incroyable)

Edit: Il convient de noter également que c'est l'une des rares bibliothèques qui ne dépend PAS d'opencv, et juste pour les coups de pied, voici une copie du code de détection de visage sur 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;
} 

5

Je sais que cela fait un moment, mais pour tous ceux qui sont intéressés, il y a le projet Faint , qui a regroupé un grand nombre de ces fonctionnalités (détection, reconnaissance, etc.) dans un joli progiciel.


4

Nous utilisons OpenCV . Il contient également beaucoup de choses sans reconnaissance faciale, mais rassurez-vous, il fait de la reconnaissance faciale.


2
Je pense qu'il n'y a pas d'algorithme direct dans OpenCV pour la reconnaissance faciale. La détection de visage de la bibliothèque OpenCV fonctionne bien
Janusz

3
Oui tu as raison. J'ai confondu la reconnaissance faciale et la détection faciale.
Paul

Pour rappel, il existe maintenant cv :: FaceRecognizer, qui peut être utilisé pour la reconnaissance.
huesforalice

1

Vous pouvez essayer d'ouvrir la bibliothèque MVG, elle peut également être utilisée pour plusieurs interfaces.


0

La prochaine étape serait FisherFaces. Essayez-le et vérifiez s'ils fonctionnent pour vous. Voici une belle comparaison.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.