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.