Gesichtserkennungsbibliothek [geschlossen]


169

Ich suche eine kostenlose Gesichtserkennungsbibliothek für ein Universitätsprojekt. Ich suche keine Gesichtserkennung . Ich suche nach tatsächlicher Anerkennung. Das bedeutet, Bilder zu finden, die bestimmte Gesichter oder Bibliotheken enthalten, die Entfernungen zwischen bestimmten Gesichtern berechnen.

Ich verwende derzeit OpenCV zum Erkennen der Gesichter und einen groben Eigengesichtsalgorithmus für die Erkennung. Aber ich dachte, es sollte etwas mit besserer Leistung geben als einen selbstgeschriebenen Eigenface-Algorithmus. Ich spreche nicht von Geschwindigkeit als Leistung, sondern von einer Bibliothek mit besseren Ergebnissen als einem einfachen Eigenface-Ansatz.

Ich habe mir Faint angesehen , aber es scheint, dass die Bibliothek für meine eigenen Anwendungen nicht sehr wiederverwendbar ist.

Ich bin zufrieden mit einer Bibliothek in Python, Java, C ++, C oder so ähnlich. Das Beste wäre, wenn es auf einem Windows-Computer ausgeführt werden kann, da ich mich momentan auf externen Windows-Code verlasse.


1
Muss es aus politischen oder praktischen Gründen kostenlos sein? Wenn es sich um ein reines Forschungsprojekt handelt, können Sie möglicherweise eine kostenlose akademische Lizenz von einem der kommerziellen Anbieter erhalten.
Christoffer

2
Ich habe relativ gute Ergebnisse nur mit dem Eigengesichtsansatz erzielt, aber es scheint, dass eine gute Gesichtserkennungs-API, die kostenlos verwendet werden kann, im Moment fehlt
Janusz



4
Obwohl diese Frage im Jahr 2009 durchaus akzeptabel ist, wird sie nicht mehr als themenbezogen betrachtet: Fragen, bei denen wir gebeten werden, ein Tool, eine Bibliothek oder eine bevorzugte externe Ressource zu empfehlen oder zu finden, sind für Stack Overflow nicht thematisch. Siehe Was sollten die vordefinierten Off-Topic-Gründe für den Stapelüberlauf sein?
JDB erinnert sich noch an Monica

Antworten:


85

Hier ist eine Liste der kommerziellen Anbieter, die Standardpakete für die Gesichtserkennung anbieten, die unter Windows ausgeführt werden:

  1. Cybula - Informationen zu ihrem Gesichtserkennungs-SDK . Dies ist ein Unternehmen, das von einem Universitätsprofessor gegründet wurde und dessen Website daher unprofessionell aussieht. Es gibt keine Preisinformationen oder Demos, die Sie herunterladen können. Sie müssen sie kontaktieren, um Preisinformationen zu erhalten.

  2. NeuroTechnology - Informationen zu ihrem Gesichtserkennungs-SDK . Dieses Unternehmen verfügt sowohl über Preisinformationen im Voraus als auch über eine 30-Tage-Testversion seines SDK .

  3. Pittsburgh Pattern Recognition - ( von Google erworben ) Informationen zum SDK zur Gesichtsverfolgung und -erkennung . Die von ihnen bereitgestellten Demos helfen Ihnen bei der Bewertung ihrer Technologie, nicht jedoch ihres SDSK. Sie müssen sie kontaktieren, um Preisinformationen zu erhalten.

  4. Sensible Vision - Informationen zu ihrem SDK . Auf ihrer Website können Sie ganz einfach ein Preisangebot erhalten und ein Bewertungskit bestellen, mit dem Sie die Technologie bewerten können.


5
Vielen Dank für die Links, aber im Moment muss ich eine kostenlose Bibliothek finden
Janusz

1
Es ist möglicherweise nicht für die Gesichtserkennung an sich gedacht , aber numenta.com könnte für Sie von Interesse sein.
RCIX

7
Sie können face.com kostenlose REST-API zu dieser Liste
hinzufügen

@Omry, sollten Sie als Antwort hinzufügen, oder bearbeiten Sie diese, um face.com
Scott


54

Aktualisieren

OpenCV 2.4.2 wird jetzt mit dem sehr neuen cv :: FaceRecognizer geliefert . Bitte beachten Sie die sehr ausführliche Dokumentation unter:

Ursprünglicher Beitrag

Ich habe libfacerec veröffentlicht , eine moderne Gesichtserkennungsbibliothek für die OpenCV C ++ API (BSD-Lizenz). libfacerec hat keine zusätzlichen Abhängigkeiten und implementiert die Eigenfaces-Methode, die Fisherfaces-Methode und die Histogramme für lokale binäre Muster. Teile der Bibliothek werden in OpenCV 2.4 aufgenommen.

Die neueste Version von libfacerec ist verfügbar unter:

Die Bibliothek wurde für OpenCV 2.3.1 mit Blick auf das kommende OpenCV 2.4 geschrieben, daher unterstütze ich OpenCV-Versionen vor 2.3.1 nicht. Dieses Projekt wird als CMake-Projekt mit einer gut dokumentierten API geliefert. Außerdem gibt es ein Tutorial zur Geschlechtsklassifizierung. Eine HTML-Version der Dokumentation finden Sie unter:

Wenn Sie verstehen möchten, wie diese Algorithmen funktionieren, lesen Sie möglicherweise meinen Leitfaden zur Gesichtserkennung (einschließlich Python- und GNU Octave / MATLAB-Beispielen):

Es gibt auch eine Python- und GNU Octave / MATLAB-Implementierung der Algorithmen in meinem Github-Repository . Beide Projekte in facerec enthalten auch mehrere Kreuzvalidierungsmethoden zur Bewertung von Algorithmen:

Die relevanten Veröffentlichungen sind:

  • Turk, M. und Pentland, A. Eigengesichter zur Anerkennung. . Journal of Cognitive Neuroscience 3 (1991), 71–86.
  • Belhumeur, PN, Hespanha, J. und Kriegman, D. Eigengesichter vs. Fischergesichter: Erkennung mittels klassenspezifischer linearer Projektion. . IEEE Transactions on Pattern Analysis and Machine Intelligence 19, 7 (1997), 711–720.
  • Ahonen, T., Hadid, A. und Pietikainen, M. Gesichtserkennung mit lokalen binären Mustern . . Computer Vision - ECCV 2004 (2004), 469–481.


19

Pam-Face-Authentifizierung Ein PAM-Modul für die Gesichtsauthentifizierung: Es würde jedoch einige Arbeit erfordern, um das zu erhalten, was Sie möchten. Ein schneller Test zeigte, dass die Erkennungsrate nicht so gut ist wie die von VeriLook von NeuroTechnology.

Malic ist eine weitere Open-Source-Gesichtserkennungssoftware, die Gabor Wavelet-Deskriptoren verwendet. Das letzte Update der Quelle ist jedoch 3 Jahre alt.

Von der Website: " Malic ist eine Open-Source-Gesichtserkennungssoftware, die Gabor Wavelet verwendet. Es handelt sich um ein Echtzeit-Gesichtserkennungssystem, das auf Malib und dem CSU-System zur Bewertung der Gesichtsidentifikation (csuFaceIdEval) basiert. Verwendet die Malib-Bibliothek für die Echtzeit-Bildverarbeitung und einige von csuFaceIdEval für das Gesicht Anerkennung. "

Weiter könnte dies von Interesse sein:

gaborboosting : Ein wissenschaftliches Programm zur Gesichtserkennung mit Gabor Wavelet und AdaBoost-Algorithmus

Feature Extraction Library - FELib bezieht sich auf "Face Annotation by Transductive Kernel Fisher Discriminant".


13

Ich würde denken, Eigenface , was Sie bereits tun, ist der richtige Weg, wenn Sie den Abstand zwischen Gesichtern berechnen möchten. Sie können verschiedene Ansätze wie Support Vector Machine oder Hidden Markov Model ausprobieren . Ich habe eine Seite gefunden, auf der die wichtigsten Algorithmen aufgelistet sind, die für die Gesichtserkennung verwendet werden können: Homepage zur Gesichtserkennung .

Wenn Sie "bessere Leistung" sagen, meinen Sie damit Geschwindigkeit oder Genauigkeit? Was für ein Problem hast du? Wie unterschiedlich sind die Daten? Sind sie meistens frontal oder enthalten sie Profile?


5
Mit der Leistung habe ich die Erkennungsgenauigkeit erreicht. Eigengesichter sind nett, aber ich suche ein Standardpaket zum Erkennen von Gesichtern, weil ich das Rad nicht neu erfinden möchte und keine Zeit habe
Janusz


7

Sie sollten sich http://libccv.org/ ansehen.

Es ist ziemlich neu, bietet aber eine kostenlose Open-Source-API auf hoher Ebene für die Gesichtserkennung.

(... und ich wage zu sagen, ist verdammt erstaunlich)

Bearbeiten: Erwähnenswert ist auch, dass dies eine der wenigen Bibliotheken ist, die NICHT von opencv abhängen. Hier finden Sie eine Kopie des Codes für die Gesichtserkennung auf der Dokumentationsseite, um Ihnen eine Vorstellung davon zu geben, worum es geht:

#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

Ich weiß, dass es eine Weile her ist, aber für alle anderen Interessierten gibt es das Faint- Projekt, das viele dieser Funktionen (Erkennung, Erkennung usw.) in einem schönen Softwarepaket gebündelt hat.


4

Wir verwenden OpenCV . Es gibt dort auch viele Dinge ohne Gesichtserkennung, aber seien Sie versichert, es macht Gesichtserkennung.


2
Ich denke, es gibt in OpenCV keinen direkten Algorithmus für die Gesichtserkennung. Die Gesichtserkennung aus der OpenCV-Bibliothek funktioniert einwandfrei
Janusz

3
Ja, du hast Recht. Ich habe Gesichtserkennung und Gesichtserkennung verwechselt.
Paul J. Lucas

Nur als Randnotiz gibt es jetzt cv :: FaceRecognizer, der zur Erkennung verwendet werden kann.
Huesforalice

1

Sie können versuchen, die MVG-Bibliothek zu öffnen. Sie kann auch für mehrere Schnittstellen verwendet werden.


0

Der nächste Schritt wäre FisherFaces. Probieren Sie es aus und prüfen Sie, ob sie für Sie arbeiten. Hier ist ein schöner Vergleich.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.