Metody systemowe i decyzyjne w informatyce

Transkrypt

Metody systemowe i decyzyjne w informatyce
Metody systemowe i decyzyjne w informatyce
Laboratorium – MATLAB – Zadanie nr 2
Detekcja twarzy
autorzy: A. Gonczarek, J.M. Tomczak
Cel zadania
Celem zadania jest zapoznanie się algorytmem gradientu prostego optymalizacji w zastosowaniu do
zadania detekcji twarzy na zdjęciu oraz zaimplementowanie rozwiązania problemu w środowisku
MATLAB.
Detekcja twarzy jako problem klasyfikacji
Problem detekcji twarzy na obrazie polega na zaklasyfikowaniu wybranych fragmentów obrazu jako
twarzy człowieka. Korzystając z techniki okna przesuwnego (ang. shifting window ) obraz dzielony
jest na prostokąty, na których dokonywana jest klasyfikacja. Każdy wyszczególniony fragment obrazu opisany jest za pomocą wektora cech φ = (φ1 . . . φD )T otrzymanych za pomocą deskrytporów
HOG (ang. Histogram of Oriented Gradients).1 Dla każdego fragmentu obrazu należy rozwiązać
problem klasyfikacji z dwoma klasami y ∈ {0, 1}, polegający na przypisaniu fragmentowi obrazu
etykiety twarzy, y = 1, lub braku twarzy, y = 0.
Zdefiniujmy prawdopodobieństwo wystąpienia twarzy na zadanym fragmencie obrazu reprezentowanym przez cechy φ za pomocą sigmoidalnej funkcji logistycznej:
p(y = 1|φ, w) = σ(wT φ),
(1)
gdzie w oznacza D-wymiarowy wektor parametrów, sigmoidalna funkcja logistyczna:
σ(a) =
1
.
1 + exp(−a)
(2)
Klasyfikacja zadanego fragmentu odbywa się poprzez sprawdzenie, czy prawdopodobieństwo
wystąpienia twarzy jest większe niż zadana wartość progowa θ ∈ [0, 1]:
y∗ =

1,
jeśli p(y = 1|φ, w) ­ θ,
0,
w przeciwnym przypadku.
(3)
Klasyfikator w tak podanej postaci nazywa się regresją logistyczną.
1
Sposób otrzymania deksryptorów nie jest istotny dla zadania i jest pominięty w opracowaniu. Zainteresowanych
odsyłamy do Wikipedii, gdzie można znaleźć odnośniki do prac źródłowych http://en.wikipedia.org/wiki/
Histogram_of_oriented_gradients.
1
Uczenie modelu jako problem optymalizacji
Dla tak określonego problemu detekcji twarzy kluczowym aspektem jest wyznaczenie parametrów
w, czyli uczenie modelu. Zakładamy, że dysponujemy zbiorem treningowym D = {φn , yn }N
n=1 ,
tj. zestawem fragmentów obrazów reprezentowanym przez cechy HOG wraz z etykietą, czy na
fragmencie widnieje twarz, czy nie.
W celu uczenia modelu wykorzystamy metodę maksymalnej wiarygodności (ang. maximum
likelihood ). Wprowadźmy następujące oznaczenie:
σn ≡ σ(wT φn ).
(4)
Zmienna losowa y jest zmienną losową binarną, dlatego funkcja wiarygodności przyjmuje następującą postać:
p(D|w) =
N
Y
σnyn (1 − σn )1−yn .
(5)
n=1
Biorąc negatywny logarytm otrzymujemy:
− ln p(D|w) = −
N X
yn ln σn + (1 − yn ) ln(1 − σn ) .
(6)
n=1
Zadanie wyznaczenia wartości parametrów minimalizujących negatywny logarytm funkcji wiarygodności jest zadaniem optymalizacji bez ograniczeń:
minimalizuj (po w)
− ln p(D|w)
Zauważmy, że postać σn zależy od parametrów w, co uniemożliwia wyznaczenia analitycznego
rozwiązania (6). Dlatego należy posłużyć się rozwiązaniem numerycznym. W tym celu zastosujemy
algorytm gradientu prostego.
Algorytm gradientu prostego
Oznaczmy naszą funkcję celu jako F (w) = − ln p(D|w). Algorytm gradientu prostego przedstawiono poniżej. Aby móc zastosować algorytm gradientu prostego należy wyznaczyć gradient ∇w F (w).
2
Algorithm 1: Metoda gradientu prostego
Wejście : Punkt startowy x0 ∈ domF , dokładność ε, krok η
Wyjście: Punkt optymalny x dla funkcji F
1
x ←− x0 ;
2
while kx − xold k2 ­ ε do
3
xold ←− x;
4
∆x ←− −∇F (x);
5
x ←− x + η∆x;
6
end
Testowanie poprawności działania
Do sprawdzania poprawności działania zaproponowanych rozwiązań służy funkcja main w pliku
main.m.
W pliku main.m nie wolno czekogolwiek zmieniać ani dopisywać.
Instrukcja wykonania zadania
1. Zaimplementować funkcję sigmoidalną (2) w pliku sigmoid.m.
2. Wyznaczyć gradient funkcji celu (6), następnie zaimplementować jej wartość oraz wartość
gradientu w pliku logistic cost function.m.
3. Zaimplemnetować funkcję wyznaczającą wartości parametrów w za pomocą algorytmu gradientu prostego w pliku gradient descent.m. Funkcja dodatkowo ma zwracać wartości funkcji celu dla każdej iteracji algorytmu.
Efekt końcowy działania programu powinien być taki, jak na Rysunku 1.
UWAGA! Wszelkie nazwy funkcji i zmiennych w plikach *.m muszą pozostać zachowane.
Zmiana jakichkolwiek nazw i dodanie fragmentów kodu poza wskazanymi miejscami skutkować
będzie otrzymaniem 0 pkt.
3
Rysunek 1: Wynik poprawnie działającego zadania.
Implementacja
1. Poprawne zapisanie funkcji sigmoidalnej – funkcja sigmoid.m.
2. Poprawne zapisanie funkcji celu wraz z jej gradientem – funkcja logistic cost function.m.
3. Poprawne zaimplementowanie algorytmu gradientu prostego – funkcja gradient descent.m.
Pytania kontrolne
1. Narysować przebieg sigmoidalnej funkcji logistycznej.
2. Wyznaczyć pochodną sigmoidalnej funkcji logistycznej. Zapisać ją jedynie przy pomocy wartości funkcji sigmoidalnej σ(a).
3. Wyznaczyć gradient negatywnego logarytmu funkcji wiarygodności (6).
4. Za co odpowiada wartość progowa θ?
5. Podać liczbę parametrów klasyfikatora (3). Ile parametrów posiadałby model gaussowskiej
analizy dyskryminacyjnej, gdyby modelować rozkład warunkowy korzystając z p(y|φ) ∝
p(φ|y)p(y), gdzie p(φ|y) – rozkładu normalny, p(y) – rozkład dwupunktowy?
6. Za co odpowiada η w algorytmie gradientu prostego?
4
7. Kiedy algorytm gradientu prostego będzie zbieżny, a kiedy nie? Odpowiedź uzasadnić graficznie (narysować).
8. Na czym polega detekcja obiektu na zdjęciu? Dlaczego jest to problem klasyfikacji?
9. Jakie mogą być inne warunki stopu dla algorytmu gradientu prostego? Podać przykładowe
dwa.
10. W jaki sposób można dodać regularyzację `2 na parametry modelu regresji logistycznej? Jaki
efekt wówczas osiągniemy?
5