• Nie Znaleziono Wyników

Lokalizacja twarzy w obrazie za pomocą kaskady klasyfikatorów AdaBoost

N/A
N/A
Protected

Academic year: 2021

Share "Lokalizacja twarzy w obrazie za pomocą kaskady klasyfikatorów AdaBoost"

Copied!
5
0
0

Pełen tekst

(1)

KATEDRA SYSTEMÓW MULTIMEDIALNYCH

Inteligentne Systemy Decyzyjne

Ćwiczenie 10: Lokalizacja twarzy w obrazie za pomocą

kaskady klasyfikatorów AdaBoost

Opracowanie: dr inż. Piotr Szczuko

1. Wprowadzenie - etapy rozpoznawania twarzy

Technologia rozpoznawania twarzy jest obecnie jedną z najdynamiczniej rozwijających się technologii biometrycznych. Pierwszym krokiem w działaniu takich metod jest określenie, w którym miejscu obrazu zlokalizowana jest twarz. Następnie obszar ten jest wyodrębniany, analizowany i klasyfikowany np. za pomocą metody twarzy własnych, klasyfikatorów SVM, lub złożonych metod badania cech lokalnych twarzy (zagadnienie poza tematem przedmiotu).

Metody lokalizacji twarzy opierać się mogą na tzw. założeniach heurystycznych, tzn. zdroworozsądkowych, np. określenie gdzie w obrazie znajduje się obiekt ruchomy, założenie, że jest to osoba, a następnie analiza górnej części całej sylwetki, która powinna zawierać głowę osoby. Jeżeli wybrany w ten sposób obszar jest kontrastowy, zawiera dużą liczbę krawędzi i detali, to uznawany jest za obraz twarzy i poddawany rozpoznaniu.

Z kolei metoda lokalizacji badana w tym ćwiczeniu wykorzystuje kaskadę klasyfikatorów AdaBoost, analizujących tzw. cechy Haara (ang. Haar features). Jej dużą zaletą jest niska złożoność obliczeniowa, możliwość klasyfikowania obrazów w dowolnej skali, duża skuteczność. Szczegóły przedstawione są poniżej.

2. Metoda lokalizacji twarzy w obrazie

Kaskada klasyfikatorów AdaBoost (skrót od ang. Adaptive Boosting - adaptacyjne wzmacnianie) jest heurystycznym, binarnym klasyfikatorem (dokonuje rozpoznania, czy obiekt, obraz, sygnał, jest reprezentantem jednej, wytrenowanej klasy, czy nie). Jest on klasyfikatorem silnym (duża skuteczność działania, niska stopa błędów poprawnej akceptacji i fałszywego odrzucenia), który składa się z zestawu klasyfikatorów słabych. Każdy kolejny klasyfikator w kaskadzie jest optymalizowany do poprawnego rozpoznawania wzorców błędnie zakwalifikowanych przez wcześniejsze klasyfikatory.

Kaskada klasyfikatorów AdaBoost pozwala uzyskać większą skuteczność działania, niż pojedynczy silny klasyfikator.

Faza treningu wymaga przygotowania zestawu treningowego z wzorcami pozytywnymi i negatywnymi w bardzo dużej liczbie przykładów (dla twarzy po kilkaset tysięcy obrazów).

(2)

2.1 Klasyfikator podstawowy

Podstawowy, słaby klasyfikator zwraca wartość binarną 1 (akceptuj) lub 0 (odrzuć) w zależności od tego, czy wartość jego funkcji klasyfikacji jest większa (mniejsza) od zadanego progu. Wartość progu jest ustalana jest w taki sposób, aby najdokładniej odseparować dwie rozpoznawane klasy.

W procesie treningu jako pierwszy klasyfikator słaby wybierany jest ten, który charakteryzuje się najmniejszym, ważonym błędem rozpoznawania wzorców treningowych. Dla wzorca treningowego, który nie został prawidłowo rozpoznany zwiększana jest waga i kolejny etap kaskady dobierany jest tak, aby jak najskuteczniej odróżnić go od obiektów spoza klasy. Każdy kolejno dodawany klasyfikator słaby jest zatem optymalizowany pod kątem rozpoznania wzorców, które sprawiły najwięcej problemów wcześniejszym klasyfikatorom.

Pozytywny wynik klasyfikacji próbki wymaga pozytywnego rozpoznania kolejno przez wszystkie człony kaskady. Nierozpoznanie próbki przez którykolwiek człon kaskady skutkuje negatywnym wynikiem klasyfikacji (Rys. 1).

Rys. 1. Zestaw połączonych klasyfikatorów AdaBoost (członów). T oznacza akceptację, F – odrzucenie.

Strategia opisana powyżej oznacza, że każdy kolejny człon kaskady zawiera coraz więcej parametrów, np. 1, 10, 25, 25, 50…, gdyż ma za zadanie skuteczniej odróżnić „problematyczne przypadki”, z którymi nie poradził sobie człon poprzedni.

Dodawanie kolejnych parametrów (klasyfikatorów słabych) do kaskady trwa dopóki:

 stopa błędów typu false-positives (wykrycie obiektu mimo jego faktycznego braku) nie spadnie poniżej założonego progu, np. 50%, lub:

 stopa błędów typu false-negatives (nie wykrycie obiektu mimo jego faktycznej obecności) nie wzrośnie powyżej założonego progu, np. 0,1%

Typowo stosuje się ok. 20-30 członów w kaskadzie, które zawierają łącznie jedynie kilka procent wszystkich możliwych parametrów (np. 6000 spośród 120 tys.)

Cechy kaskady klasyfikatorów AdaBoost:

 Możliwość samodzielnego ustalenia kompromisu pomiędzy uzyskiwanymi wynikami a złożonością obliczeniową

 Bardzo wysoka wydajność algorytmu

 Automatyczny wybór optymalnych parametrów w procesie treningu klasyfikatora

 Zastosowanie klasyfikatorów AdaBoost połączonych w kaskadę pozwala jednocześnie uzyskać większą skuteczność klasyfikacji i większą wydajność

 Może być używana łącznie z innymi algorytmami decyzyjnymi w celu poprawy ich skuteczności

(3)

2.2 Zastosowanie klasyfikatora do rozpoznawania obrazów

2.2.1 Parametry obrazu

Parametrami opisującymi klasyfikowany obraz są różnice między sumą wartości pikseli (odcieni szarości pikseli np. w skali od 0 do 255) w białych i czarnych obszarach figur. Wyliczane są one w następujący sposób:

1. Wybierz parametr (cechę Haara) (Rys. 2a) 2. Umieść szablon cechy na obrazie twarzy (Rys. 2b)

3. Wylicz sumę jasności pikseli obrazu oryginalnego „przykrytych” jasną częścią szablonu 4. Wylicz sumę jasności pikseli obrazu oryginalnego „przykrytych” ciemną częścią szablonu 5. Wylicz różnicę między 3. a 4. Otrzymywana jest wartość skalarna, będąca poszukiwanym

parametrem

6. Wróć do 1. i wylicz kolejny parametr.

a) b)

Rys. 2. Parametry wykorzystywane przy rozpoznawaniu obrazów: a) trzy typy szablonów parametrów (cech Haara, ang. Haar-like features)

1. Edge features: krawędzie, granice między ciemnymi a jasnymi obszarami, 2. Line features: linie o różnym kierunku i grubości,

3. Center-surround features: ciemne obszary na jasnym tle.

b) przykład lokalizacji charakterystycznych cech krawędzi i linii w obrazie twarzy.

2.2.2 Poszukiwanie twarzy w obrazie

Kaskada klasyfikatorów AdaBoost jest trenowana z wykorzystaniem zestawu kilku tysięcy wzorców pozytywnych i negatywnych o jednej, stałej i niewielkiej rozdzielczości, np. 24x24 piksele. W wyniku skalowania parametrów możliwe jest rozpoznawanie w obrazie obiektów o rozmiarach równych lub większych od rozmiaru wzorców.

W procesie detekcji okno, w którym prowadzona jest klasyfikacja, przesuwane jest po całym obrazie wejściowym z zadanym krokiem w celu poszukiwania twarzy w podstawowej skali. Następnie skalowane jest w górę o zadany współczynnik (x1.5, x2.0, itd.) i ponownie cały obraz jest skanowany. W praktyce w procesie detekcji zdecydowana większość okien jest odrzucana w pierwszym drugim członie kaskady, jako niezawierające twarzy. Przypomnieć tu należy, że pierwszy człon jest wytrenowany w celu jak najskuteczniejszego odrzucania obrazów nie będących twarzami, a kolejne człony korygują powstałe błędy fałszywej akceptacji. Wobec tego dla każdego okna wymagane jest obliczenie średnio około 20-30 parametrów, stosowanych w kilku pierwszych członach kaskady. Finalny pozytywny wynik klasyfikacji próbki wymaga pozytywnego rozpoznania kolejno przez wszystkie człony kaskady.

3. Aplikacja HaarDetector

Program HaarDetector umożliwia wykrywanie zdefiniowanych elementów obrazu metodą kaskady AdaBoost. Możliwe jest wczytywanie obrazów oraz pozyskiwanie klatek z kamery USB. Program

(4)

obsługuje definicje kaskad dostarczone w plikach .XML, m.in. wstępnie przygotowane kaskady wytrenowane do detekcji:

- twarzy en face, - twarzy z profilu, - oczu (lub jednego oka), - sylwetki

- górnej / dolnej części sylwetki, - itd.

3.1.

Obsługa programu

Po uruchomieniu programu należy:

1. - wcisnąć klawisz „Image” aby wczytać obraz z pliku

2. - wybrać z listy typ kaskady dostosowany do postawionego zadania (np. detekcja oczu „haarcascade_eye”)

3. - wybrać suwakiem „Min. object size” oczekiwany najmniejszy rozmiar obiektu, który ma być wykryty w obrazie

4. - wcisnąć klawisz Detect

5. - w oknie log zaobserwować wyniki detekcji (liczbę wykrytych obiektów, położenie, rozmiary oraz czas detekcji w milisekundach)

6. Wynik wyświetlony jest także w oknie podglądu obrazu.

7. Okno, które zostało wyświetlone przez program jako ostanie można zapisać klawiszem „Save”. Plik zapisany będzie pod nazwą wpisaną w pole tekstowe „OutputFilename” (oznaczone na rys. numerem 7).

4. Zadania do wykonania

1. Praca na pliku

a. Wczytać plik dostarczony z instrukcja z grupa osób (losc_group.jpg)

b. W programie do podglądu lub edycji zdjęć (np. domyślnym programie windowsa lub Paint’cie, ) określić jakie są wielkości twarzy w obrazie (minimalna i maksymalna). Umieścić te dane w sprawozdaniu.

c. Ustawić odpowiednio do tych rozmiarów suwaki „Min. / Max. object size”

1

2

3

4

5

7

(5)

d. Wybrać kolejno każdy z 4 dostępnych klasyfikatorów twarzy en face (haarcascade_frontalface_alt, haarcascade_frontalface_alt2, haarcascade_frontal-face_alt_tree, haarcascade_frontalface_default). Dla każdego wykonać:

i. Detekcję twarzy

ii. Zapisanie do sprawozdania:

1. liczby wykrytych twarzy / czy jest prawidłowa?

2. liczby elementów obrazu wykrytych nieprawidłowo jako twarze 3. czasu obliczeń

iii. Zmniejszenie wartości suwaka „Min. object size”, zwiększenie wartości „Max. object size”, każdy około dwukrotnie

iv. Detekcję twarzy

v. Zapisanie do sprawozdania:

1. liczby wykrytych twarzy / czy jest prawidłowa?

2. liczby elementów obrazu wykrytych nieprawidłowo jako twarze 3. czasu obliczeń

vi. Zapisanie do sprawozdania wniosków o skuteczności i czasie działania. Zapisanie jak dobór rozmiarów obiektów wpływa na skuteczność i czas. Obliczenie dla każdej detekcji parametrów positive, true-positive,

false-negative (doczytać w Internecie jak się je liczy)

e. W podsumowaniu w sprawozdaniu napisać która z 4 definicji najlepiej wykonała detekcję twarzy en face.

2. Praca na strumieniu z kamery USB

a. Uruchomić strumieniowanie z kamery klawiszem „USB Cam” b. Zaznaczyć check-box „Detect”

c. Wybrać kolejno każdą z kaskad na liście i skierować kamerę tak, by zapewnić możliwość wykrycia pożądanego obiektu (twarzy en face lub z profilu, oczu małych, dużych, itd.). Dla każdej z kaskad wykonać:

i. „Dostrojenie” suwaków „Min. / Max. object size” tak, aby wykrywany był tylko właściwy obiekt oraz czas detekcji był jak najkrótszy

ii. Zapisanie do sprawozdania czasów detekcji

iii. Ustawienie ekstremalnych wartości „Min. / Max. object size”, tak aby algorytm wykrywał wszystkie obiekty.

iv. Zapisanie do sprawozdania czasów detekcji oraz spostrzeżeń opisujących występujące pomyłki algorytmu.

v. Zaproponowanie w sprawozdaniu jak można automatycznie dostosowywać wartości „Min./Max. object size” aby algorytm zachowywał dużą skuteczność 3. Analiza kaskady AdaBoost

a. Otworzyć plik .XLM z definicją dowolnej kaskady b. Zapoznać się ze strukturą pliku

c. Narysować w sprawozdaniu schemat blokowy, który wyjaśnia hierarchię elementów „stage”, „tree” oraz atrybutów „feature”, „rects”. Zapoznaj się w tym celu z wstępem teoretycznym i rys. 1 i rys. 2 w instrukcji.

d. Dla najmniejszej z kaskad (plik „haarcascade_lefteye_2splits.xml”) podać w sprawozdaniu ile jest stopni kaskady „stage” oraz ile na każdym z nich jest badanych cech Haara „trees”.

e. Zapoznać się z materiałami z wykładu i uzasadnić w sprawozdaniu dlaczego liczba cech rośnie w kolejnych stopniach kaskady.

Cytaty

Powiązane dokumenty

Podoczodołowa część twarzy oma­ wianego gatunku jest usytuowana w płaszczyźnie czołowej, jednak jej część przyśrodkowa jest położona bardziej ku przodowi

bardzo kosztowny – minimalizacja liczby zapamiętanych przykładów uczących.. Concept drift - definicja.  Concept drift oznacza,

Powołując się na Tarskiego i Chomskiego i traktując semantykę jako naukę empiryczną, ustala równoważność znaczenia zdania i znajomości warunków jego

Celem projektu jest porównanie dwóch klasyfikatorów: klasyfikatora AdaBoost oraz SVM na wygenerowanych (oczywiście też na oryginalnym) zestawach danych.. Ocenić moc

Przedstawiona w artykule wstępna analiza wartości różnych detektorów sygnału stosowanych w emisji akustycznej, pozwoliła na określenie przydatno- ści

W ramach pracy przeprowadzono automatyczną identyfi kację grup macerałów oraz materii nieorganicznej za pomocą trzech klasyfi katorów neuronowych: dwuwarstwowej sieci

Viola and Jones connected a number of strong classifiers built with standard AdaBoost algorithm in a sequence, to form a cascade of classifiers of increasing complexity.. Every stage

Otrzymane w pracy wyniki wskazują, że modele lasów losowych oraz boostingu gradientowego lepiej opisują dane niż tradycyjne modele regresji ułamkowej czy regresji beta. Modele