2009-10-20 21 views

Odpowiedz

6

Zapoznaj się z OpenCV. Została zaimplementowana dobrze udokumentowana i uznana technika wykrywania twarzy Violi & Jones, znana jako kaskada Haara.

Pełny samouczek - od szkolenia po eksperymentowanie - is available here. Zwróć uwagę, że nie musisz ćwiczyć; OpenCV jest dostarczany z kilkoma kaskadami cech, w tym kilkoma do wykrywania twarzy.

+1

Papier Viola & Jones, szybkie wykrywanie obiektów za pomocą ulepszonej kaskady prostych funkcji, można znaleźć w Google Scholar: http://scholar.google.com/scholar?cluster= 6119571473300502765 –

+1

Dziękuję za odpowiedź. Mogę go użyć do stworzenia systemu obsługi klienta. Moim pomysłem jest stworzenie systemu obecności, w którym ludzie są automatycznie oznaczani jako obecni, kiedy przechodzą przez przejście zawierające kamery. – user189352

+1

Cóż, technicznie, można uruchomić algorytm na zdjęciu, porównać liczbę wykrytych twarzy i przyjąć jako odpowiedź. Realistycznie byłoby jednak bardzo nieprzewidywalne i podatne na błędy. Po pierwsze, nie wykrywa określonej twarzy. Oznacza to, że nie rozróżnia twarzy ani mojej. Z tego powodu ustalenie, czy dana osoba jest obecna, wymagałoby czegoś bardziej rozróżniającego. –

17

Istnieje kilka open-source systemy rozpoznawania twarzy Java można spróbować, ale nie oczekuj zbyt wiele, bo szukam tego samego, ale ciągle szukam na lepszą opcją!

Należy pamiętać, że znalezienie dowolnej twarzy na obrazie nazywa się "Wykrywanie twarzy", po tym jak każda twarz nazywa się "Śledzenie twarzy", a określenie tożsamości wykrytej twarzy nazywa się "Rozpoznawanie twarzy". Mówię ci to, ponieważ prawdopodobnie musisz użyć innego oprogramowania i algorytmów, aby zrobić każdy! Odpowiedź Paula mówi, że OpenCV może łatwo wykrywać twarze (Haar Cascade Detector), ale nie rozpoznać twarzy tak łatwo (tak naprawdę ma sposób na rozpoznawanie twarzy), co brzmi tak, jakbyś potrzebował rozpoznawania twarzy, więc OpenCV nie jest niekoniecznie najlepszą opcją, ponieważ korzystasz z Javy.

Możesz spróbować FAINT, który wykonuje zarówno wykrywanie twarzy, jak i rozpoznawanie twarzy w Javie, ale jest to prawie nieudokumentowane. Istnieje również "http://darnok.org/programming/face-recognition/", ale nie mogę uzyskać dobrych wyników. Istnieje również "http://uni.johnsto.co.uk/faces/" do rozpoznawania twarzy i "Neuroph" do rozpoznawania twarzy/wykrywania.

Jeśli znajdziesz dobre rozwiązanie, proszę powiedz mi na "[email protected]" Powodzenia! Shervin Emami

+1

update: OpenCV v2.4.1 jest teraz wyposażony w nową klasę FaceRecognizer, która jest dość łatwa do rozpoznawania twarzy przy użyciu kilku możliwych algorytmów (Eigenfaces, Fisherfaces i Histogramy LBP). Więc powinieneś poszukać sposobu na użycie go z Javy, na przykład OpenCV na Androida (obsługuje Javę) lub może JavaCV (może jeszcze nie mieć FaceRecognizer). –

+0

Nie używaj sprężyn własnych dla dokładności. Jest to bezpośrednie porównanie pikseli na podstawie średnich. Porównywanie deskryptorów twarzy po skalowaniu, obracaniu i przycinaniu znalezionych twarzy jest lepsze. Potrzeba głębokiego uczenia się, aby wyszkolić model, aby znaleźć te deskryptory. –

1

Dokładne rozpoznawanie twarzy jest zadaniem, które można podzielić na kilka etapów:

  1. wykrywanie twarzy
  2. twarzy punkt orientacyjny odkrycie
  3. obrotów, kadrowanie, wyrównanie i skalowanie wykorzystujące punkty orientacyjne
  4. Wykrywanie punktów deskryptorów twarzy (nie są one czytelne dla człowieka)
  5. Porównanie znanych twarzy w celu znalezienia najbliższego dopasowania

Można to zrobić z kilku bibliotek, ale wymaga bytedeco obwoluty dla OpenCV i Caffe, jak również biblioteki takie jak ND4j dla porównania matrycy.

OpenCV ma kaskady HAAR do wykrywania twarzy i może używać znaku flandmark do rozpoznawania twarzy. Umożliwi to wykonanie kroków 1-3.

twarzy deskryptor wykrywania może być wykonane za pomocą owijki bytedeco do Caffe i VGG twarzy deskryptora biblioteki (http://www.robots.ox.ac.uk/~vgg/software/vgg_face/)

Wreszcie Nd4j mogą być stosowane do porównywania obrazów. Jeśli masz wystarczająco dużo zdjęć sklasyfikowanych przez poszczególne osoby, być może możesz użyć sieci neuronowej z biblioteki do klasyfikacji.