Biblioteka rozpoznawania twarzy [zamknięta]


169

Szukam bezpłatnej biblioteki rozpoznawania twarzy do projektu uniwersyteckiego. Nie szukam funkcji wykrywania twarzy . Szukam prawdziwego uznania. Oznacza to znalezienie obrazów zawierających określone twarze lub biblioteki obliczające odległości między określonymi twarzami.

Obecnie używam OpenCV do wykrywania twarzy i szorstkiej twarzy własnej algorytmu do rozpoznawania. Ale pomyślałem, że powinno być coś o lepszej wydajności niż samodzielnie napisany algorytm Eigenface. Nie mówię o szybkości jako wydajności, szukam biblioteki z lepszymi wynikami niż proste podejście do Eigenface.

I przyjrzał się Faint , ale wydaje się, że biblioteka nie jest bardzo wielokrotnego użytku dla moich własnych aplikacji.

Jestem zadowolony z biblioteki w Pythonie, Javie, C ++, C lub czymś podobnym. Najlepiej byłoby, gdyby można go było uruchomić na komputerze z systemem Windows, ponieważ w tej chwili polegam na zewnętrznym kodzie tylko dla systemu Windows.


1
Czy musi być bezpłatny z powodów politycznych lub praktycznych? Jeśli jest to projekt badawczy, możesz uzyskać bezpłatną licencję akademicką od jednego z komercyjnych dostawców.
Christoffer,

2
Uzyskałem stosunkowo dobre wyniki tylko z podejściem eigenfaces, ale wydaje się, że dobrego API do wykrywania twarzy, którego można używać za darmo, w tej chwili brakuje
Janusz



4
Chociaż w 2009 roku było to całkowicie akceptowalne, pytanie to nie jest już rozpatrywane na temat: pytania, w których prosi się nas o rekomendację lub znalezienie narzędzia, biblioteki lub ulubionego zasobu zewnętrznego, są nie na temat dla przepełnienia stosu. Zobacz, jakie powinny być predefiniowane przyczyny nie na temat przepełnienia stosu?
JDB nadal pamięta Monikę,

Odpowiedzi:


85

Oto lista komercyjnych dostawców, którzy oferują gotowe pakiety do rozpoznawania twarzy, które działają w systemie Windows:

  1. Cybula - Informacje o ich SDK do rozpoznawania twarzy . Jest to firma założona przez profesora uniwersytetu i jako taka jej strona internetowa wygląda nieprofesjonalnie. Nie ma informacji o cenach ani wersji demonstracyjnej, które można pobrać. Aby uzyskać informacje o cenach, musisz się z nimi skontaktować .

  2. NeuroTechnology - informacje o ich SDK do rozpoznawania twarzy . Ta firma ma zarówno informacje o cenach z góry, jak i faktyczną 30-dniową wersję próbną swojego SDK .

  3. Pittsburgh Pattern Recognition - ( pozyskane przez Google ) Informacje o ich pakiecie Face Tracking and Recognition SDK . Prezentacje, które udostępniają, pomagają ocenić ich technologię, ale nie SDSK. Aby uzyskać informacje o cenach, musisz się z nimi skontaktować .

  4. Sensible Vision - informacje o ich SDK . Ich strona pozwala łatwo uzyskać wycenę, a także zamówić zestaw ewaluacyjny, który pomoże Ci ocenić ich technologię.


5
Dzięki za linki ale w tej chwili muszę znaleźć wolną bibliotekę
Janusz

1
To nie może być dla rozpoznawania twarzy per se , ale numenta.com może być interesujące dla ciebie.
RCIX,

7
możesz dodać face.com darmowe API REST do tej listy
Omry Yadan

@Omry, powinieneś dodać jako odpowiedź lub edytować to, aby dodać face.com
Scott


54

Aktualizacja

OpenCV 2.4.2 jest teraz dostarczany z bardzo nowym cv :: FaceRecognizer . Proszę zapoznać się z bardzo szczegółową dokumentacją pod adresem:

Oryginalny post

Wydałem libfacerec , nowoczesną bibliotekę do rozpoznawania twarzy dla OpenCV C ++ API (licencja BSD). libfacerec nie ma dodatkowych zależności i implementuje metodę Eigenfaces, metodę Fisherfaces i lokalne histogramy wzorców binarnych. Części biblioteki zostaną włączone do OpenCV 2.4.

Najnowsza wersja libfacerec jest dostępna pod adresem:

Biblioteka została napisana dla OpenCV 2.3.1 z myślą o nadchodzącym OpenCV 2.4, więc nie obsługuję wersji OpenCV wcześniejszych niż 2.3.1. Ten projekt jest projektem CMake z dobrze udokumentowanym interfejsem API, jest też samouczek dotyczący klasyfikacji płci. Możesz zobaczyć wersję HTML dokumentacji pod adresem:

Jeśli chcesz zrozumieć, jak działają te algorytmy, możesz przeczytać mój Przewodnik po rozpoznawaniu twarzy (zawiera przykłady Pythona i GNU Octave / MATLAB):

Istnieje również implementacja algorytmów w języku Python i GNU Octave / MATLAB w moim repozytorium github . Oba projekty w facerec obejmują również kilka metod walidacji krzyżowej do oceny algorytmów:

Odpowiednie publikacje to:

  • Turk, M. i Pentland, A. Eigenfaces do rozpoznania. . Journal of Cognitive Neuroscience 3 (1991), 71–86.
  • Belhumeur, PN, Hespanha, J. i Kriegman, D. Eigenfaces vs. Fisherfaces: Rozpoznawanie za pomocą klasowej projekcji liniowej. . IEEE Transactions on Pattern Analysis and Machine Intelligence 19, 7 (1997), 711–720.
  • Ahonen, T., Hadid, A. i Pietikainen, M. Face Recognition with Local Binary Patterns. . Computer Vision - ECCV 2004 (2004), 469–481.


19

pam-face-authentication moduł PAM do uwierzytelniania twarzy: ale uzyskanie tego, czego chcesz, wymagałoby trochę pracy. Szybki test wykazał, że wskaźniki rozpoznawania nie są tak dobre, jak VeriLook z NeuroTechnology.

Malic to kolejne oprogramowanie do rozpoznawania twarzy typu open source, które wykorzystuje deskryptory Gabor Wavelet. Ale ostatnia aktualizacja źródła ma 3 lata.

Ze strony internetowej: „ Malic to oprogramowanie do rozpoznawania twarzy typu open source, które wykorzystuje falkę gabor. Jest to system rozpoznawania twarzy w czasie rzeczywistym oparty na systemie Malib i CSU Face Identification Evaluation System (csuFaceIdEval). Wykorzystuje bibliotekę Malib do przetwarzania obrazu w czasie rzeczywistym i niektóre elementy csuFaceIdEval dla twarzy uznanie. ”.

Ponadto może to być interesujące:

gaborboosting : program naukowy stosowany do rozpoznawania twarzy z algorytmem Gabor Wavelet i AdaBoost

Biblioteka wyodrębniania cech - FELib odnosi się do „Adnotacji twarzy przez dyskryminujący rozróżniający Fishera jądra transdukcyjnego”,


13

Myślę, że Eigenface , który już robisz, jest właściwą drogą, jeśli chcesz obliczyć odległość między twarzami. Możesz wypróbować różne podejścia, takie jak Support Vector Machine lub Hidden Markov Model . Znalazłem stronę z listą głównych algorytmów, których można użyć do rozpoznawania twarzy: Strona główna Rozpoznawanie twarzy .

Ponadto, kiedy mówisz „lepsza wydajność”, masz na myśli szybkość czy dokładność? Jaki masz problem? Jak różne są dane? Czy są one głównie czołowe, czy zawierają profile?


5
Dzięki wydajności osiągnąłem dokładność wykrywania. Eigenfaces jest fajny, ale szukam gotowego gotowego pakietu do rozpoznawania twarzy, ponieważ nie chcę wymyślać koła na nowo i nie mam czasu
Janusz


7

Powinieneś spojrzeć na http://libccv.org/

Jest dość nowy, ale zapewnia bezpłatny interfejs API wysokiego poziomu typu open source do wykrywania twarzy.

(... i, śmiem twierdzić, jest cholernie niesamowity)

Edycja: Warto również zauważyć, że jest to jedna z niewielu bibliotek, które NIE zależą od opencv i tylko dla kopnięć, oto kopia kodu do wykrywania twarzy ze strony dokumentacji, aby dać ci wyobrażenie o tym, co się z tym wiąże:

#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

Wiem, że minęło trochę czasu, ale dla każdego, kto jest zainteresowany, istnieje projekt Faint , który zawiera wiele tych funkcji (wykrywanie, rozpoznawanie itp.) W ładnym pakiecie oprogramowania.


4

Używamy OpenCV . Zawiera również wiele rzeczy niezwiązanych z rozpoznawaniem twarzy, ale zapewniamy, że rozpoznaje twarze.


2
Myślę, że w OpenCV nie ma bezpośredniego algorytmu do rozpoznawania twarzy. Wykrywanie twarzy z biblioteki OpenCV działa dobrze
Janusz

3
Tak, masz rację. Pomyliłem rozpoznawanie twarzy i wykrywanie twarzy.
Paul J. Lucas,

Na marginesie, istnieje teraz cv :: FaceRecognizer, którego można użyć do rozpoznawania.
huesforalice

1

Możesz wypróbować otwartą bibliotekę MVG, może być również używana dla wielu interfejsów.


0

Następnym krokiem byłoby FisherFaces. Wypróbuj i sprawdź, czy Ci odpowiadają. Oto ładne porównanie.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.