- Wymagania wstępne
- Jak działa rozpoznawanie twarzy z OpenCV
- Wykrywanie twarzy za pomocą klasyfikatorów kaskadowych w OpenCV
Rozpoznawanie twarzy staje się coraz bardziej popularne i większość z nas już go używa, nawet nie zdając sobie z tego sprawy. Czy to prosta sugestia tagu Facebooka, filtr Snapchat, czy też zaawansowany nadzór na lotnisku, rozpoznawanie twarzy już w tym zadziałało. Chiny zaczęły używać rozpoznawania twarzy w szkołach do monitorowania frekwencji i zachowań uczniów. Sklepy detaliczne zaczęły korzystać z rozpoznawania twarzy, aby kategoryzować swoich klientów i izolować osoby z historią oszustw. Przy znacznie większej liczbie zmian, nie ma wątpliwości, że technologia ta będzie widoczna wszędzie w najbliższej przyszłości.
W tym samouczku dowiemy się, jak możemy zbudować własny system rozpoznawania twarzy przy użyciu biblioteki OpenCV na Raspberry Pi. Zaletą instalacji tego systemu na przenośnym Raspberry Pi jest to, że można go zainstalować w dowolnym miejscu, aby pracować jako system nadzoru. Podobnie jak wszystkie systemy rozpoznawania twarzy, samouczek będzie obejmował dwa skrypty w języku Python, z których jeden to Trener, który przeanalizuje zestaw zdjęć danej osoby i utworzy zestaw danych (plik YML). Drugi program to Recognizerktóry wykrywa twarz, a następnie używa tego pliku YML do rozpoznania twarzy i podania nazwiska osoby. Oba programy, które tutaj omówimy, są przeznaczone dla Raspberry Pi (Linux), ale będą działać również na komputerach z systemem Windows z bardzo niewielkimi zmianami. Mamy już serię samouczków dla początkujących, aby rozpocząć korzystanie z OpenCV, możesz sprawdzić wszystkie samouczki OpenCV tutaj.
Wymagania wstępne
Jak powiedziano wcześniej, będziemy używać biblioteki OpenCV do wykrywania i rozpoznawania twarzy. Więc upewnij się, że zainstalowałeś bibliotekę OpenCV na Pi przed kontynuowaniem tego samouczka. Zasilaj również swoje Pi za pomocą adaptera 2A i podłącz go do monitora za pomocą kabla HDMI, ponieważ nie będziemy w stanie uzyskać wyjścia wideo przez SSH.
Nie zamierzam też wyjaśniać, jak dokładnie działa OpenCV, jeśli jesteś zainteresowany nauką przetwarzania obrazu, zapoznaj się z podstawami OpenCV i zaawansowanymi samouczkami dotyczącymi przetwarzania obrazu. Możesz również dowiedzieć się o konturach, wykrywaniu plamek itp. W tym samouczku dotyczącym segmentacji obrazu.
Jak działa rozpoznawanie twarzy z OpenCV
Zanim zaczniemy, ważne jest, aby zrozumieć, że wykrywanie twarzy i rozpoznawanie twarzy to dwie różne rzeczy. W wykrywaniu twarzy wykrywana jest tylko twarz osoby, oprogramowanie nie będzie miało pojęcia, kim jest ta osoba. W rozpoznawaniu twarzy oprogramowanie nie tylko wykryje twarz, ale także rozpozna osobę. Teraz powinno być jasne, że musimy wykonać wykrywanie twarzy przed wykonaniem rozpoznawania twarzy. Nie byłbym w stanie wyjaśnić, jak dokładnie OpenCV wykrywa twarz lub jakikolwiek inny obiekt w tym zakresie. Tak więc, jeśli chcesz wiedzieć, że możesz postępować zgodnie z tym samouczkiem dotyczącym wykrywania obiektów.
Sygnał wideo z kamery internetowej to nic innego jak długa sekwencja nieruchomych obrazów aktualizowanych jeden po drugim. A każdy z tych obrazów jest po prostu zbiorem pikseli o różnych wartościach ułożonych razem w odpowiednich pozycjach. Jak więc program może wykryć twarz z tych pikseli i dalej rozpoznać znajdującą się w niej osobę? Za tym stoi wiele algorytmów i próba ich wyjaśnienia wykracza poza zakres tego artykułu, ale ponieważ używamy biblioteki OpenCV, bardzo łatwo jest wykonać rozpoznawanie twarzy bez zagłębiania się w koncepcje
Wykrywanie twarzy za pomocą klasyfikatorów kaskadowych w OpenCV
Tylko wtedy, gdy jesteśmy w stanie wykryć twarz, będziemy w stanie ją rozpoznać lub zapamiętać. Aby wykryć obiekt, taki jak twarz, OpenCV używa czegoś, co nazywa się klasyfikatorami. Te klasyfikatory to wstępnie wyuczony zestaw danych (plik XML), który może być użyty do wykrycia konkretnego obiektu w naszym przypadku twarzy. Możesz dowiedzieć się więcej o klasyfikatorach wykrywania twarzy tutaj. Oprócz wykrywania twarzy, klasyfikatory mogą wykrywać inne obiekty, takie jak nos, oczy, tablica rejestracyjna pojazdu, uśmiech itp. Listę klasyfikatorów przypadków można pobrać z pliku ZIP poniżej
Klasyfikatory do wykrywania obiektów w Pythonie
Alternatywnie, OpenCV pozwala również na stworzenie własnego klasyfikatora, który może być użyty do wykrycia dowolnego innego obiektu w obrazie poprzez szkolenie swojego klasyfikatora kaskadowego. W tym samouczku użyjemy klasyfikatora o nazwie „haarcascade_frontalface_default.xml”, który wykryje twarz z pozycji przedniej. Zobaczymy