Biblioteca di riconoscimento dei volti

Sto cercando una libreria di riconoscimento facciale gratuita per un progetto universitario. Non sto cercando il rilevamento del volto . Sto cercando un vero riconoscimento. Ciò significa trovare immagini che contengono volti o librerie specifiche che calcolano le distanze tra volti specifici.

Attualmente sto usando OpenCV per rilevare i volti e un algoritmo Eigenface per il riconoscimento. Ma ho pensato che ci dovrebbe essere qualcosa là fuori con prestazioni migliori di un algoritmo Eigenface autodidatta. Non sto parlando di velocità come prestazioni, sto cercando una libreria con risultati migliori di un semplice approccio Eigenface.

Ho dato un’occhiata a Faint , ma sembra che la libreria non sia molto riutilizzabile per le mie applicazioni.

Sono felice con una libreria in Python, Java, C ++, C o qualcosa del genere. La cosa migliore sarebbe se potesse essere eseguito su un computer Windows perché al momento sto facendo affidamento su un codice solo per Windows esterno.

Ecco una lista di venditori commerciali che offrono pacchetti pronti per il riconoscimento facciale che girano su Windows:

  1. Cybula – Informazioni sul loro SDK per il riconoscimento del viso . Questa è una società fondata da un professore universitario e come tale il loro sito Web sembra poco professionale. Non ci sono informazioni sui prezzi o demo che puoi scaricare. Dovrai contattarli per informazioni sui prezzi.

  2. NeuroTechnology – Informazioni sul loro SDK per il riconoscimento del viso . Questa azienda ha sia informazioni di prezzo anticipate sia una prova effettiva di 30 giorni del loro SDK .

  3. Riconoscimento del modello di Pittsburgh – ( acquisito da Google ) Informazioni sul loro SDK per il monitoraggio e il riconoscimento del viso . Le dimostrazioni che forniscono aiutano a valutare la loro tecnologia ma non la loro SDSK. Dovrai contattarli per informazioni sui prezzi.

  4. Visione sensibile : informazioni sul loro SDK . Il loro sito ti consente di ottenere facilmente un preventivo e puoi anche ordinare un kit di valutazione che ti aiuterà a valutare la loro tecnologia.

Aggiornare

OpenCV 2.4.2 ora viene fornito con il nuovissimo cv :: FaceRecognizer . Si prega di consultare la documentazione molto dettagliata a:

Post originale

Ho rilasciato libfacerec , una moderna libreria di riconoscimento del volto per OpenCV C ++ API (licenza BSD). libfacerec non ha dipendenze aggiuntive e implementa il metodo Eigenfaces, il metodo Fisherfaces e gli istogrammi di pattern binari locali. Parti della biblioteca saranno incluse in OpenCV 2.4.

L’ultima revisione di libfacerec è disponibile all’indirizzo:

La libreria è stata scritta per OpenCV 2.3.1 tenendo presente l’imminente OpenCV 2.4, quindi non supporto le versioni OpenCV precedenti alla 2.3.1. Questo progetto si presenta come un progetto CMake con un’API ben documentata, c’è anche un tutorial sulla classificazione di genere. Puoi vedere una versione HTML della documentazione a:

Se vuoi capire come funzionano questi algoritmi, potresti voler leggere il mio Guide to Face Recognition (include gli esempi Python e GNU Octave / MATLAB):

C’è anche un’implementazione Python e GNU Octave / MATLAB degli algoritmi nel mio repository github . Entrambi i progetti in facerec includono anche diversi metodi di convalida incrociati per la valutazione degli algoritmi:

Le pubblicazioni pertinenti sono:

  • Turk, M. e Pentland, A. Eigenfaces per il riconoscimento. . Journal of Cognitive Neuroscience 3 (1991), 71-86.
  • Belhumeur, PN, Hespanha, J. e Kriegman, D. Eigenfaces vs. Fisherfaces: Riconoscimento mediante proiezione lineare specifica di class. . Transazioni IEEE su Pattern Analysis e Machine Intelligence 19, 7 (1997), 711-720.
  • Ahonen, T., Hadid, A. e Pietikainen, M. Face Recognition con modelli binari locali. . Computer Vision – ECCV 2004 (2004), 469-481.

pam-face-authentication un modulo PAM per l’autenticazione Face: ma richiederebbe del lavoro per ottenere ciò che si desidera. Un rapido test ha dimostrato che il tasso di riconoscimento non è buono come quelli di VeriLook di NeuroTechnology.

Malic è un altro software di riconoscimento facciale open source, che utilizza i descrittori Wavelet di Gabor. Ma l’ultimo aggiornamento alla fonte è di 3 anni.

Dal sito Web: ” Malic è un software di riconoscimento facciale opensource che utilizza gabor wavelet.È un sistema di riconoscimento facciale in tempo reale basato su Malib e CSU Face Identification Evaluation System (csuFaceIdEval) .Utilizzo libreria Malib per l’elaborazione delle immagini in tempo reale e alcuni di csuFaceIdEval per il viso riconoscimento.

Inoltre questo potrebbe essere di interesse:

gaborboosting : un programma scientifico applicato su Face Recognition con Gabor Wavelet e AdaBoost Algorithm

Libreria Feature Extraction: FELib fa riferimento a “Face Annotation by Transductive Kernel Fisher Discriminant”,

Penserei che Eigenface , che stai già facendo, sia la strada da percorrere se vuoi calcolare la distanza tra le facce. Potresti provare diversi approcci come Support Vector Machine o Hidden Markov Model . Ho trovato una pagina che elenca i principali algoritmi che potrebbero essere utilizzati per il riconoscimento facciale: Face Recognition Homepage .

Inoltre, quando dici “prestazioni migliori” intendi velocità o accuratezza? Che tipo di problema stai avendo? Quanto sono diversi i dati? Sono per lo più frontali o includono profili?

Se il tuo progetto è su un film o una TV, o qualsiasi cosa abbia una sceneggiatura, sembra che tu voglia assolutamente guardare il lavoro di Mark Everingham e altri. . Il software è disponibile , così come i risultati su un episodio di Buffy .

Dovresti dare un’occhiata a http://libccv.org/

È abbastanza nuovo, ma fornisce un’API di alto livello open source gratuita per il rilevamento dei volti.

(… e, oserei dire, è dannatamente incredibile)

Modifica: Vale anche la pena notare che questa è una delle poche librerie che NON dipende da opencv, e solo per i calci, ecco una copia del codice per il rilevamento del volto dalla pagina di documentazione, per darti un’idea di cosa è coinvolto:

#include  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; } 

So che è passato un po ‘di tempo, ma per chiunque sia interessato, c’è il progetto Faint , che ha raggruppato molte di queste funzionalità (rilevamento, riconoscimento, ecc.) In un bel pacchetto software.

Stiamo usando OpenCV . Ci sono anche molte cose che non riconoscono il volto, ma, è assicurato, fa il riconoscimento facciale.

Puoi provare ad aprire la libreria MVG, può essere utilizzata anche per più interfacce.

Il prossimo passo sarebbe FisherFaces. Provalo e verifica se funzionano per te. Ecco un bel confronto.

Non è proprio quello che stai cercando, ma potrebbe esserti utile. Algoritmi di Rilevazione visi / Computer Vision in MATLAB.