Libreria di riconoscimento facciale [chiuso]


169

Sto cercando una biblioteca 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 facce o librerie specifiche che calcolano le distanze tra facce specifiche.

Attualmente sto usando OpenCV per rilevare i volti e un algoritmo Eigenface approssimativo per il riconoscimento. Ma ho pensato che ci dovrebbe essere qualcosa là fuori con prestazioni migliori rispetto a un algoritmo Eigenface scritto da solo. Non sto parlando di velocità come prestazione, 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 contento di 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 esterno solo per Windows.


1
Deve essere libero per motivi politici o pratici? Se si tratta di un puro progetto di ricerca, potresti essere in grado di ottenere una licenza accademica gratuita da uno dei fornitori commerciali.
Christoffer,

2
Ho ottenuto risultati relativamente buoni solo con l'approccio alle autovetture, ma sembra che una buona API di rilevamento del volto che è libera di usare sia qualcosa che al momento manca
Janusz,



4
Sebbene perfettamente accettabile nel 2009, questa domanda non è più considerata in tema: le domande che ci chiedono di raccomandare o trovare uno strumento, una biblioteca o una risorsa fuori sede preferita sono fuori tema per StackTranslate.it. Vedi Quali dovrebbero essere i motivi fuori tema predefiniti per Stack Overflow?
JDB ricorda ancora Monica il

Risposte:


85

Ecco un elenco di fornitori commerciali che forniscono pacchetti standardizzati per il riconoscimento facciale che funzionano su Windows:

  1. Cybula : informazioni sull'SDK di riconoscimento facciale . 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 è possibile scaricare. Dovrai contattarli per informazioni sui prezzi.

  2. NeuroTechnology - Informazioni sul loro SDK di riconoscimento facciale . Questa azienda dispone sia di informazioni anticipate sui prezzi sia di una versione di prova effettiva di 30 giorni del loro SDK .

  3. Pittsburgh Pattern Recognition - ( acquisito da Google ) Informazioni sull'SDK di tracciamento e riconoscimento facciale . Le demo che forniscono ti aiutano a valutare la loro tecnologia ma non il 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.


5
Grazie per i collegamenti, ma al momento ho bisogno di trovare una biblioteca gratuita
Janusz,

1
Potrebbe non essere per il riconoscimento facciale di per sé , ma numenta.com potrebbe essere di tuo interesse.
RCIX,

7
puoi aggiungere l'API REST gratuita di face.com a
quell'elenco

@Omry, dovresti aggiungere una risposta o modificarlo per aggiungere face.com
Scott


54

Aggiornare

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

Posta originale

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

L'ultima revisione di libfacerec è disponibile su:

La libreria è stata scritta per OpenCV 2.3.1 pensando all'imminente OpenCV 2.4, quindi non supporto 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 su:

Se vuoi capire come funzionano questi algoritmi, potresti leggere la mia Guida al riconoscimento facciale (include 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 validazione incrociata per la valutazione di 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 della classe. . 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.


19

pam-face-authentication un modulo PAM per Face Authentication: ma richiederebbe un po 'di lavoro per ottenere ciò che desideri. Un rapido test ha dimostrato che il tasso di riconoscimento non è buono come quello di VeriLook di NeuroTechnology.

Malic è un altro software di riconoscimento facciale open source, che utilizza i descrittori Gabor Wavelet. Ma l'ultimo aggiornamento alla fonte ha 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). Utilizza la libreria Malib per l'elaborazione delle immagini in tempo reale e alcuni csuFaceIdEval per il viso riconoscimento. "

Inoltre questo potrebbe essere di interesse:

gaborboosting : un programma scientifico applicato sul riconoscimento facciale con Gabor Wavelet e l'algoritmo AdaBoost

Libreria di estrazione funzioni - FELib fa riferimento a "Annotazione facciale da parte del pescatore transduttivo Fisher Discriminant"


13

Penso che Eigenface , che stai già facendo, sia la strada da percorrere se vuoi calcolare la distanza tra le facce. Puoi 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 precisione? Che tipo di problema stai riscontrando? Quanto variano i dati? Sono per lo più faccia frontale o includono profili?


5
Con le prestazioni ho incontrato l'accuratezza del rilevamento. Eigenfaces è carino, ma quello che sto cercando è un pacchetto pronto all'uso per riconoscere i volti perché non voglio reinventare la ruota e non ho tempo
Janusz,


7

Dovresti guardare http://libccv.org/

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

(... e, oserei dire, è dannatamente sorprendente)

Modifica: Vale la pena notare anche 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 della documentazione, per darti un'idea di ciò che è coinvolto:

#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

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.


4

Stiamo usando OpenCV . Ha anche un sacco di cose che non riconoscono il volto, ma, certo, fa il riconoscimento facciale.


2
Penso che non ci sia un algoritmo diretto in OpenCV per il riconoscimento facciale. Face Detection dalla libreria OpenCV funziona bene
Janusz,

3
Sì hai ragione. Ho confuso il riconoscimento facciale e il rilevamento facciale.
Paul J. Lucas,

Proprio come una nota a margine, ora c'è cv :: FaceRecognizer, che può essere usato per il riconoscimento.
huesforalice,

1

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


0

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


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.