Detekcja twarzy w obrazach cyfrowych z wykorzystaniem algorytmów heurystycznych Piotr Latusek latusekpiotr@gmail.com
PLAN • Detekcja twarzy i problemy pokrewne • Wyzwania • Heurystyka, kategorie heurystyk • Wybrane podejście • Filtry • Łączenie wyników
DETEKCJA TWARZY I PROBLEMY POKREWNE • Detekcja twarzy: „ Na postawie zdjęcia ustalić czy znajdują się na nim twarze, a jeśli tak to w którym miejscu i jaki jest ich rozmiar” • Lokalizacja twarzy • Rozpoznawanie twarzy
WYZWANIA I PROBLEMY • Przysłanianie • Poza twarzy • Mina • Warunki środowiskowe • Obecność lub brak elementów strukturalnych • Kąt
HEURYSTYKA „Heurystyka - w informatyce metoda znajdowania rozwiązań, dla której nie ma gwarancji znalezienia rozwiązania optymalnego, a często nawet prawidłowego.” „Rozwiązań tych używa się np. wtedy, gdy pełny algorytm jest z przyczyn technicznych zbyt kosztowny, lub gdy jest nieznany.” www.wikipedia.pl
KATEGORIE HEURYSTYK • Metody oparte na ogólnej wiedzy • Metody zakładające niezmienność cech • Metody dopasowujące do wzorców • Metody dopasowujące do modelu Do 2002 roku powstało ponad 150 różnych metod detekcji twarzy. M. H. Yang, D. J. Kriegman, N. Ahuja, „Detecting Faces in Images”.
WYBRANE PODEJŚCIE H. A. Rowley, S. Baluja, T. Kanade, „Neural Network-Based Face Detection”.
WYBRANE PODEJŚCIE • Skalowanie • Maska 20 x 20 pikseli • Przetwarzanie wstępne: - eliminacja wariancji oświetlenia, - wyrównywanie histogramu • Właściwy filtr • Łączenie wyników H. A. Rowley, S. Baluja, T. Kanade, „Neural Network-Based Face Detection”.
WYBRANE PODEJŚCIE • Skalowanie gwarantuje wykrycie twarzy niezależnie od jej wielkości - co z rotacją? • Przetwarzanie wstępne ujednolica obraz na wejściu filtrów – m.in. niweluje wpływ różnic w oświetleniu • Możliwość jednoczesnego zastosowania wielu filtrów
WYBRANE PODEJŚCIE Dla obrazu o rozmiarach 3072 x 2304 (ok. 7 Mpix) właściwy filtr musi być zastosowany do 19 140 875 ramek 20 x 20 pix.
FILTRY • Sieci neuronowe • Najbliższy sąsiad - Linear discriminant analysis, Fisherfaces - Samoorganizujące się mapy Kohonena (SOM)
FILTRY - SIECI NEURONOWE • Perceptron - kilka zm. wejściowych i jedna zm. wyjściowa - jak dobrać wagi W? - jak dobrać funkcję f? • Organizacja perceptronów w sieć - ile warstw?
FILTRY - SIECI NEURONOWE • Sieć neuronowa jest modelem • Parametrami modelu są wagi perceptronów • Dopasowujemy obraz wejściowy do modelu
FILTRY - NAJBLIŻSZY SĄSIAD • Baza wzorców zawierająca obrazy twarzy i innych obiektów nie będących twarzami • Dopasowujemy obraz wejściowy do wzorców (tzn. znajdujemy w bazie obraz najbardziej podobny do wejściowego i sprawdzamy czy jest oznaczony jako twarz czy nie-twarz)
FILTRY - NAJBLIŻSZY SĄSIAD • Jak mierzyć podobieństwo? Najprościej: suma kwadratów różnic między pikselami mało skuteczne • Standardowo obraz 20 x 20 jest reprezentowany jako punkt w przestrzeni 400 wymiarowej • Ten sposób reprezentacji powoduje niską skuteczność
FILTRY - NAJBLIŻSZY SĄSIAD Jak zwiększyć skuteczność? • znaleźć lepszą reprezentację obrazu np. redukcja wymiarów przy użyciu Analizy Liniowych Wyróżników (Linear Discriminant Analysis)
FILTRY - NAJBLIŻSZY SĄSIAD • Nowe wymiary są liniową kombinacją starych • Analiza Liniowych Wyróżników automatycznie dobiera wymiary, które pozwalają najłatwiej rozróżnić twarz od nie-twarzy • Zbędne informacje są usuwane • Przykład twarzy zrzutowanej na nowe wymiary, a następnie z powrotem do pierwotnej postaci: • Twarze w nowej reprezentacji nazywają się Fisherfaces
FILTRY - NAJBLIŻSZY SĄSIAD • Aby ograniczyć ilość twarzy w bazie można zastosować Samoorganizujące się mapy Kohonena (SOM) • SOM znajduje reprezentantów grup spośród wielu obrazów Reprezentacyjne obrazy znalezione przy użyciu SOM:
ŁĄCZENIE WYNIKÓW • W wyniku dotychczasowych działań otrzymujemy wiele potencjalnych miejsc zawierających twarz • Czas odsiać błędne wyniki i scalić pozostałe
ŁĄCZENIE WYNIKÓW • Progowanie – usuwanie pojedynczych wystąpień • Łączenie sąsiadujących wystąpień w jedno - uśrednianie lokalizacji i skali • Eliminacja nakładających się wystąpień - decyduje ilość
ŁĄCZENIE WYNIKÓW • Scaliliśmy wyniki pojedynczego filtra, pozostało scalenie wyników wszystkich filtrów • Możemy mieć kilka różnych sieci neuronowych i kilka innych filtrów co pozwala zredukować liczbę błędnych wskazań • Najprostsze scalanie w tym wypadku to AND lub OR • Można też użyć sieci neuronowej
ŁĄCZENIE WYNIKÓW
DZIĘKUJĘ ZA UWAGĘ. Pytania?