POLITECHNIKA WROCŁAWSKA WYDZIAŁ ELEKTRONIKI PRACA DYPLOMOWA MAGISTERSKA

Wielkość: px
Rozpocząć pokaz od strony:

Download "POLITECHNIKA WROCŁAWSKA WYDZIAŁ ELEKTRONIKI PRACA DYPLOMOWA MAGISTERSKA"

Transkrypt

1 POLITECHNIKA WROCŁAWSKA WYDZIAŁ ELEKTRONIKI KIERUNEK: SPECJALNOŚĆ: Automatyka i Robotyka (AIR) Robotyka (ARR) PRACA DYPLOMOWA MAGISTERSKA Rozpoznawanie osób z wykorzystaniem systemu wizyjnego Person recognition with a vision system AUTOR: Paweł Kaczmarek PROWADZACY PRACE: dr inż. Marek Wnuk, I-6 OCENA PRACY: WROCŁAW 2012

2

3 Pracę tę dedykuję Mamie oraz mojej dziewczynie Mireli.

4

5 Składam serdeczne podziękowania Panu doktorowi inż. Markowi Wnukowi za pomoc, cenne wskazówki, wyrozumiałość i poświęcony czas.

6

7 Spis treści 1 Wstęp 3 2 Przeglad metod rozpoznawania osób Algorytmy oparte na cechach twarzy Algorytmy holistyczne Algorytmy statystyczne Metody sztucznej inteligencji i uczenia maszynowego Algorytm rozpoznawania osób Sieć Kohonena Struktura samoorganizującej się sieci neuronowej Uczenie sieci Wizualizacja mapy i rekonstrukcja zdjęć Analiza niezależnych komponentów Algorytm wyznaczania niezależnych komponentów ICA jako uogólnienie PCA Dwie architektury ICA Korekcja oświetlenia Redukcja nierównomiernego oświetlenia Zmiana jasności Korekcja gamma Wyrównywanie histogramu Klasyfikacja wyników Klasyfikacja statyczna Klasyfikacja dynamiczna Implementacja algorytmu rozpoznawania osób Struktury danych programu Interfejs użytkownika Podpróbkowanie obrazu Implementacja i uczenie SOM ICA i klasyfikator wyników Parametryzacja działania programu Biblioteki zewnętrzne Zautomatyzowane tworzenie bazy zdjęć Wyniki eksperymentów Badania na obrazach statycznych Bazy zdjęć

8 2 SPIS TREŚCI Wyniki badań Badania sekwencji wideo Sekwencje wideo Wyniki badań Podsumowanie 65 Bibliografia 66

9 Rozdział 1 Wstęp Algorytmy identyfikacji osób na podstawie zdjęć twarzy mają niezwykle szeroki wachlarz zastosowań. Wykorzystywane są w takich obszarach jak: kontrola dostępu, wyszukiwanie przestępców na obrazie z telewizji przemysłowej zainstalowanej w miejscach publicznych, przeszukiwanie baz danych (znajdowanie osób zaginionych, przestępców), indeksowanie zdjęć w galeriach i serwisach społecznościowych, rozpoznawanie osób w robotach społecznych. Szczególnie ciekawym i jednocześnie wymagającym obszarem zastosowań systemów wizyjnych jest właśnie robotyka społeczna. Jej dynamiczny rozwój i rosnące zainteresowanie tą dziedziną wiedzy zwiększyło wymagania stawiane implementowanym systemom wizyjnym. Kluczowe cechy jakie powinien spełnić robotyczny towarzysz, to m.in. [19], [16]: bezpieczne działania w naturalnym środowisku ludzkim, wyrażanie i odbieranie emocji, rozpoznawanie ludzi i innych agentów robotycznych, komunikacja w sposób werbalny i niewerbalny, budowanie i utrzymywanie więzi, posiadanie i wyrażanie indywidualnych cech charakteru. Większość powyższych cech jest co najmniej w części realizowana poprzez systemy wizyjne robota. Identyfikowanie osób na podstawie twarzy ma kluczowe zastosowanie w wypadku rozpoznawania aktualnego rozmówcy, budowania długoterminowej relacji czy też skutecznego rozumienia emocji człowieka. Przed systemem identyfikacji osób robota społecznego postawić należy szereg szczególnych wymagań: działanie w czasie rzeczywistym - zbyt długi czas przetwarzania informacji jest niedopuszczalny, gdyż powoduje irytację ze strony rozmówcy,

10 4 1. Wstęp możliwość poznawania nowych osób - robot powinien być w stanie stwierdzić, że dana osoba nie przypomina żadnej z dotychczas mu znanych oraz, jeśli nawiąże z nią relację, dodać ją do bazy znanych osób, brak błędnych odpowiedzi - robot może potrzebować chwili na zastanowienie lub przyznać, że nie rozpoznaje danej osoby, lecz nigdy nie powinien dokonać błędnej klasyfikacji - jej skutkami byłaby utrata wiarygodności przez robota i zerwanie budowanej więzi (szczególnie w przypadku pomylenia ze sobą osób o innej płci lub o znaczącej różnicy wieku), rozpoznawanie (na podstawie frontalnego zdjęcia twarzy lub półprofilu), osoby znajdującej się 1 do 2 metrów od kamery - są to naturalne warunki interakcji człowiek - robot, zautomatyzowane tworzenie bazy zdjęć - robot poznając nową osobę, powinien być w stanie automatycznie stworzyć dla niej galerię i dodać ją do swojej bazy znanych ludzi, szybkie uczenie algorytmu rozpoznawania - w przypadku poznania nowej osoby, jej ponowna identyfikacja powinna być jak najszybciej możliwa, działanie w zmiennych warunkach - system powinien skutecznie pracować niezależnie od orientacji i wyrazu twarzy, warunków oświetlenia i tła, wykorzystanie pojedynczej kamery - budowa robota nie zawsze pozwala na wykorzystanie dwóch kamer lub innych urządzeń tworzących mapę głębi, które mogłyby wspomagać rozpoznawanie osób. Niniejsza praca ma na celu próbę stworzenia systemu identyfikacji osób spełniającego powyższe wymagania i przebadanie go. Do testowania oprogramowania użyte zostaną bazy stacjonarnych zdjęć jak i sekwencje wideo pobrane za pomocą kamery. Stworzony system ma mieć formę przenośnej biblioteki, która mogłaby być dołączona do istniejących robotów społecznych i ich systemów sterowania.

11 Rozdział 2 Przeglad metod rozpoznawania osób Stworzenie systemu identyfikacji osób na podstawie zdjęć twarzy, który jest odporny na zmienną orientację głowy, mimikę twarzy, niejednorodne oświetlenie i wzorzyste tło, a jednocześnie szybko się uczy i klasyfikuje jest niezwykle trudnym zadaniem. Obecnie istnieje bardzo wiele metod bazujących na obrazach w skali szarości, które najogólniej podzielić można na algorytmy oparte na cechach twarzy (featured-based) i analizujące twarz całościowo (holistic) [21]. 2.1 Algorytmy oparte na cechach twarzy Pierwszym etapem działania algorytmów tej klasy jest przetworzenie obrazu wejściowego w celu zlokalizowania i parametryzacji charakterystycznych cech twarzy jak oczy, usta, nos, itd., między którymi wyliczane są zależności geometryczne. Zdjęcie osoby zamieniane jest więc na wektor cech, który następnie może być porównywany za pomocą standardowych technik rozpoznawania wzorców. Kluczowe znaczenie dla skuteczności algorytmów tej klasy jest wyznaczenie charakterystycznych cech, które posłużą do opisu twarzy. Ich wybór powinien być z jednej strony elastyczny, tak aby mogły zostać dopasowane do punktów obrazu, lecz z drugiej strony zbyt duża tolerancja daje za mało dokładną reprezentację, by przeprowadzić skuteczną klasyfikację. Poprawnie dobrany zestaw cech pozwala na poprawną klasyfikację nawet bardzo dużych galerii, uczonych na podstawie jedynie jednego zdjęcia. Przykładem jest 95% skuteczność na bazie 685 osób uzyskana w pracy [15]. Cechy niezbędne do klasyfikacji zostały jednak manualnie dobrane, jak na rysunku automatyczny dobór punktów charakterystycznych nie zapewniłby tak wysokiej skuteczności systemu [21]. Rysunek ręcznie zidentyfikowanych cech twarzy, służących do klasyfikacji [15].

12 6 2. Przeglad metod rozpoznawania osób Jednym z udoskonaleń tej metody jest elastyczne dopasowywanie grafów (elastic graph matching) [30]. Graf tworzony jest poprzez wybór znaczących punktów twarzy, które stają się węzłami w pełni połączonego grafu nieskierowanego. Każdemu węzłowi przypisywany jest wynik modyfikacji obszaru otaczającego daną cechę filtrem Gabora, zaś każdemu łukowi - odległość między punktami. Utworzona struktura zwana jest face bunch graph. Klasyfikacja twarzy polega na znalezieniu struktury o największym stopniu podobieństwa. Algorytm osiągnął 99% skuteczność na bazie 250 osób, a także znany jest z osiągnięcia jednego z najwyższych wyników w klasyfikacji bazy FERET [2]. Kluczową wadą systemu jest konieczność ręcznego wskazania położenia kluczowych punktów twarzy dla pierwszych kilkudziesięciu osób. Dopiero na tej podstawie system jest w stanie podejmować decyzje samodzielnie. Ciekawą odmianą algorytmów opartych na cechach twarzy jest rozpoznawanie osób w oparciu o zdjęcia profilowe. Zadanie to okazuje się być znacznie prostsze niż w wypadku zdjęć frontalnych, ponieważ problem można potraktować jako jednowymiarowy (zrzutować profil na płaszczyznę) [24]. Rysunek 2.2 przedstawia dobór kluczowych punktów twarzy i wartości, które tworzą wektor cech. Ciekawym sposobem pozwalającym na uzyskanie częściowej odporności na orientację (rozumianą jako kąt yaw) jest normalizowanie wektora cech przez sumę wartości D4 i D5. Algorytmy tej klasy osiągają skuteczność około 90% na bazach liczących do 100 osób, jednak ich zastosowanie jest ograniczone ze względu na wymaganie określonej orientacji głowy na zdjęciu. Rysunek 2.2 Po lewej stronie - 12 kluczowych punktów profilu twarzy, po prawej - odległości i krzywe, na podstawie których tworzony jest wektor reprezentacji danej osoby [24]. 2.2 Algorytmy holistyczne Druga grupa algorytmów rozpoznawania twarzy jest zdecydowanie szersza od algorytmów opartych na cechach. Z tego powodu, warto wyróżnić w niej dwie znaczące podgrupy: algorytmy statystyczne i wykorzystujące sztuczną inteligencję lub algorytmy uczenia maszynowego. Zaznaczyć warto również występowanie systemów hybrydowych, łączących w sobie działanie kilku algorytmów ze wspomnianych klas.

13 2.2. Algorytmy holistyczne Algorytmy statystyczne Obraz w skali szarości, którego szczególnym przypadkiem jest zdjęcie ludzkiej twarzy, rozpatrywać można jako wektor N wartości (N jest równe iloczynowi wysokości i szerokości obrazu), odpowiadających jasności kolejnych pikseli. Wektor ten reprezentowany jest w bazie N ortogonalnych wersorów, z wartością 1 na n-tej pozycji (gdzie n 1, N) oraz pozostałymi składowymi równymi 0. Reprezentacja ta jest intuicyjna i łatwa do interpretacji, jednakże nie nadaje się do zadań klasyfikacji zdjęć. Kluczowe znaczenie odgrywają jej dwie wady. 1. Bardzo wysoki wymiar problemu. Dla zdjęć z popularnej bazy ORL [9], o wymiarze 112 na 92 piksele, co jest dość niską rozdzielczością, wymiar wynosi Współczynniki we wspomnianej bazie, dla obrazów przedstawiających różne osoby, są ze sobą skorelowane, przez co mało użyteczne w procesie rozpoznawania osób. Ogólnym celem metod statystycznych jest znalezienie reprezentacji w bazie lepszych wektorów bazowych, tj. takich, w których współczynniki opisujące różne osoby będą łatwe do klasyfikacji. Pierwszym zastosowanym algorytmem tej klasy jest PCA (Principal Component Analysis). Pozwala on na przedstawienie obrazu w stosunkowo małej bazie twarzy własnych (eigenfaces, co należy rozumieć analogicznie do wektorów własnych macierzy eigenvectors). Wygląd przykładowych twarzy własnych uzyskanych na zbiorze frontalnych zdjęć twarzy na różnorodnym tle przedstawia rysunek 2.3. Zestaw współczynników w bazie, uzyskany w wyniku projekcji zdjęcia na poszczególne wektory, posłużyć może do skuteczniejszego porównywania zdjęć niż to miało miejsce przed zastosowaniem algorytmu PCA. Skuteczność metody waha się od 96% do 64% w zależności od trudności (zmienność skali, orientacji i oświetlenia) zbioru testowego [21]. Rysunek 2.3 Trzy przykładowe twarze własne [29]. Wykonując algorytm PCA na zbiorze uczącym, często mamy do dyspozycji po kilka zdjęć tej samej osoby. Podczas badań nad tą metodą, część naukowców doszła do wniosku, że różnice między zdjęciami tej samej osoby, wynikające ze znacznych zmian w kierunku oświetlenia i jasności zdjęcia, są większe niż między zdjęciami różnych osób [10]. Proponowanym rozwiązaniem tego problemu było stosowanie metody LDA (Fisher s Linear Discriminant Analysis) [18]. Jej celem jest uzyskanie bazy, składającej się z tzw. twarzy własnych Fishera (Fisherfaces), w której wariancja współczynników reprezentujących różne osoby byłaby możliwa duża, przy jednocześnie minimalnej wariancji dla zdjęć tej samej osoby, wykonanych w różnych warunkach. Pomimo tego, że metoda zdecydowanie lepiej od PCA usuwa wpływ zmienności oświetlenia na tworzenie zdjęć bazowych, co prezentuje rysunek 2.4, jej wyniki są porównywalne z PCA. Obydwie opisane powyżej metody stały się bardzo popularne, dzięki czemu stworzono wiele ich rozwinięć i modyfikacji. Większość z nich, według ich twórców, dawała poprawę wyników w stosunku do metod bazowych. Jest to jednak trudne do pełnego zweryfikowania, ze względu na testowanie algorytmów na różnych zestawach zdjęć.

14 8 2. Przeglad metod rozpoznawania osób Rysunek 2.4 Rząd górny - eigenfaces, rząd dolny - Fisherfaces [21]. Metody PCA i LDA poszukując nowych wektorów bazowych, opierają się na liniowych zależnościach między parami pikseli. W rzeczywistych warunkach, wynikających ze zmiany orientacji głowy i oświetlenia, między pikselami pojawiają się jednak zależności wyższego rzędu. Uogólnieniem PCA poszukującym niezależnej reprezentacji obrazu i uwzględniającej nieliniowe zależności jest ICA (Independent Component Analysis) [12]. Algorytm ten występuje w dwóch architekturach. W pierwszej zdjęcia traktowane są jako zmienne losowe, zaś piksele jako ich realizacje. Druga zaś przyjmuje, że piksele są zmiennymi losowymi, zaś ich wartość w poszczególnych obrazach jest realizacją. Obydwie architektury, w większości przeprowadzonych testów, osiągają lepsze wyniki niż algorytm PCA i jego modyfikacje [21] Metody sztucznej inteligencji i uczenia maszynowego Metody sztucznej inteligencji i uczenia maszynowego również znajdują swe zastosowanie do klasyfikacji osób. Stosowane są one zarówno na wstępnym etapie klasyfikacji - do redukcji wymiaru problemu, jak i do tworzenia nowych reprezentacji obrazów i ich klasyfikacji. Wiele z algorytmów tej klasy opartych jest na sieciach neuronowych. Ich zastosowanie jest bardzo szerokie: klasyfikacja współczynników obrazów w nowej bazie (np. bazie twarzy własnych ) przez wielowarstwową sieć perceptronową [17], redukcja wymiaru obrazu poprzez mapowanie jego fragmentów za pomocą sieci Kohonena [22], dwuetapowy system rozpoznawania łączący sieć Kohonena i splotową sieć neuronową [23]. Ostatni ze wspomnianych systemów osiągnął bardzo wysoką skuteczność na bazie ORL (96,2%). Jego znaczącą wadą, podobnie jak w przypadku innych systemów wykorzystujących nadzorowane uczenie sieci neuronowej, jest bardzo długi czas uczenia. Spośród metod uczenia maszynowego wspomnieć należy przede wszystkim o SVM (Support Vector Machine) [27]. Należy ona do najbardziej efektywnych sposobów klasyfikacji wzorców. Gdy w wyniku zastosowania innych algorytmów, np. PCA lub ICA, posiadamy reprezentację obrazów uczących w wielowymiarowej przestrzeni cech, SVM wytycza hiperpłaszczyznę oddzielającą próbki należące do różnych klas. Co istotniejsze, dokonuje tego w sposób optymalny - pozostawiając najszerszy możliwy margines błędu między sąsiadującymi klasami.

15 Rozdział 3 Algorytm rozpoznawania osób W celu spełnienia założeń zdefiniowanych we wstępie pracy, zdecydowano się na implementację dwuetapowej metody rozpoznawania osób. Pierwszy etap algorytmu wykorzystuje samoorganizujące się sieci neuronowe (zwane również sieciami Kohonena) do redukcji wymiaru obrazu. Dokonywane jest to za pomocą zmiany reprezentacji kolejnych fragmentów obrazu z wektora pikseli na jeden z kształtów podstawowych zdefiniowanych w czasie uczenia. Drugi etap algorytmu wykorzystuje analizę niezależnych komponentów (ICA) do zmiany bazy, w której reprezentowany jest obraz. Porównywanie współczynników obrazów w nowej bazie pozwala na efektywne dopasowanie zdjęć do wzorców. Opisany powyżej algorytm, podobnie jak inne rozwiązania spotykane w literaturze, nie jest odporny na znaczne zmiany oświetlenia. W celu poprawy działania systemu, zdjęcia poddawane są kilkuetapowej korekcji jasności. Pozwala ona w szczególności, na częściowe zniwelowanie negatywnego wpływu prześwietlenia lub niedoświetlenia zdjęcia. W celu spełnienia wymogów pracy, stworzony system powinien być w stanie udzielić odpowiedzi nie wiem za każdym razem, gdy nie może z wystarczającą pewnością rozpoznać zdjęcia. Funkcję tę spełniają dwa klasyfikatory: statyczny (analizujący pewność pojedynczej odpowiedzi) i dynamiczny (działający na sekwencji kilku ostatnich odpowiedzi). Łącznie pozwalają one na zmniejszenie szansy wystąpienia pomyłki. Wszystkie wspomniane powyżej kroki algorytmu operują na zdjęciach w skali szarości. 3.1 Sieć Kohonena Sieci Kohonena (zwane również samoorganizującymi się sieciami neuronowymi lub samoorganizującymi się mapami - ang. Self-organizing Map (SOM)) [22], [23] są klasą sieci neuronowych, uczonych bez nauczyciela. Sieć na podstawie serii wektorów uczących modyfikuje wartości swoich węzłów, tak aby jak najlepiej mogły one posłużyć do klasteryzacji wektorów wejściowych. Oznacza to, że w czasie procesu uczenia, sieć buduje odwzorowanie między przestrzenią wejściową R N, a węzłami sieci. Sieci mogą mieć strukturę jednowymiarową (węzły rozmieszczone liniowo) lub też wielowymiarową (k-wymiarowa kostka). Po etapie uczenia, odwzorowanie jest uporządkowane - bliskie sobie węzły odpowiadają podobnym do siebie wektorom referencyjnym. Skutkiem tego, każdy wymiar mapy dostarcza inny aspekt podobieństwa między wektorami. Intuicyjnym przykładem zastosowania trójwymiarowej kostki jest chęć mapowania kolorów opisanych w przestrzeni barw RGB. Każdy wymiar reprezentowałby podobieństwo jednej ze składowych koloru. Wadą map wielowymiarowych jest utrata ciągłości odwzorowania (bliskie sobie indeksy przestaną reprezentować podobne kształty), gdy nastąpi konieczność zrzutowania indeksów

16 10 3. Algorytm rozpoznawania osób węzłów na liczby rzeczywiste. Sytuacja taka nastąpi, gdy położenie w mapie SOM służyć będzie jako reprezentacja obrazu w kolejnych etapach klasyfikacji Struktura samoorganizujacej się sieci neuronowej Samoorganizująca się sieć neuronowa składa się z przestrzennej struktury węzłów. Reprezentowane są one przez: położenie - jest nim numer węzła w przypadku sieci jednowymiarowej lub też wektor współrzędnych w kolejnych wymiarach dla odwzorowania wielowymiarowego, wektor referencyjny µ - oznacza kształt reprezentowany przez dany węzeł. Wymiar wektora µ jest równy wymiarowi przestrzeni wejściowej i całkowicie niezależny od rozmiarów sieci. Wektory wejściowe dla sieci Kohonena, zarówno na etapie uczenia jak i klasyfikacji, powstają poprzez podpróbkowanie obrazu kwadratowym oknem o stałych wymiarach. W kolejnych krokach algorytmu okno przesuwane jest na kolejne piksele obrazu - przesunięcie powinno być równe szerokości okna lub od niego mniejsze (podpróbkowanie nadmiarowe - wybrane piksele użyte są wielokrotnie do próbkowania). Sposób tworzenia wektorów wejściowych przedstawiono na rysunku 3.1. Wartościami utworzonego wektora mogą być bezpośrednio jasności pikseli lub też wartości unormowane do średniej lub mediany jasności obrazu [23]. Rysunek 3.1 Metoda tworzenia wektorów wejściowych sieci [23] Uczenie sieci Pierwszym etapem uczenia sieci jest przypisanie wektorom referencyjnym wszystkich węzłów sieci losowych wartości z rozkładu jednostajnego na przedziale odpowiadającym zakresowi wartości wejściowych (dla 8-bitowego obrazu będzie to od 0 do 255). Podczas uczenia, dla każdego wektora wejściowego x wyliczany jest dla niego węzeł o najlepszym dopasowaniu (najmniejszej odległości x µ w metryce euklidesowej). Położenie tego węzła (liczbę lub wektor) oznaczamy r c. W następnym kroku, wektory referencyjne wszystkich węzłów sieci są aktualizowane według wzoru 3.1, gdzie h ci (t) jest funkcją sąsiedztwa, zaś t bieżącym krokiem algorytmu. µ(t + 1) = µ(t) + h ci (t) (x(t) µ(t)) (3.1) Funkcja sąsiedztwa zdefiniowana jest jako h ci (t) = h( r c r i, t), gdzie: r c jest wspomnianym wcześniej położeniem węzła o najlepszym dopasowaniu dla wektora wejściowego, zaś r i

17 3.1. Sieć Kohonena 11 oznacza położenie dowolnego węzła sieci. Wyrażenie r c r i oznacza dla sieci jednowymiarowej wartość bezwzględną różnicy numerów węzłów, zaś dla sieci wielowymiarowej metrykę euklidesową różnicy wektorów reprezentujących współrzędne węzłów w kolejnych wymiarach. Szczegółową postać h ci (t), wzorowaną na pracy [23], przedstawia równanie (3.2), gdzie α(t) jest wartością współczynnika uczenia, zaś σ(t) definiuje szerokość jądra, w którym aktualizowane są próbki. h ci (t) = α(t) exp ( r c r i 2 2σ 2 (t) Uczenie sieci odbywa się w dwóch fazach - wstępnego porządkowania (ordering phase) i dostrajania (fine-adjustment phase) SOM. Podczas pierwszej z nich, funkcja h ci (t) przyjmuje większe wartości i wolniej maleje wraz ze wzrostem liczby próbek niż w przypadku drugiego etapu. Zmiana fazy uczenia powinna nastąpić po 2 wszystkich próbek uczących [22]. Równania (3.3) i (3.4) prezentują wartości współczynników α i σ w czasie wstępnego porządkowania 3 (α P H1 i σ P H1 ), zaś (3.5) i (3.6) w fazie dostrajania sieci (α P H2 i σ P H2 ). t jest aktualną iteracją w danej fazie uczenia, T całkowitą liczbą iteracji danej fazy, zaś N P D liczbą węzłów w każdym z wymiarów. W obydwu przypadkach obszar, wokół najlepiej dopasowanego węzła o położeniu r c, który jest aktualizowany maleje wraz z czasem, co pokazano na rysunku 3.2 dla sieci dwuwymiarowej. α P H1 (t) = 0.7 ( 1 t ) T ) (3.2) (3.3) σ P H2 (t) = N P D t (N P D 1) T ( α P H1 (t) = t ) T (3.4) (3.5) σ P H2 (t) = 2 t (3.6) T Analizując równania (3.4) i (3.6) zaobserwować można, że w pierwszej fazie szerokość maleje od liczby węzłów w każdym wymiarze do wartości 1, zaś w drugim od wartości 2 do wartości 1 - jest więc ona znacząco mniejsza Wizualizacja mapy i rekonstrukcja zdjęć Przy tworzeniu mapy do reprezentacji fragmentów obrazu, ważnym zagadnieniem jest jaki powinien być jej wymiar, aby uzyskana reprezentacja zapewniła pożądaną redukcję wymiaru problemu, przy jednocześnie małej utracie informacji o obrazie. Rysunek 3.3 przedstawia fragmenty odwzorowań zbudowanych z różnej liczby węzłów. Na rysunku 3.3(a) przedstawiającym całą mapę złożoną z zaledwie 10 węzłów, zauważyć można, że wektory referencyjne węzłów nie odpowiadają żadnym kształtom, lecz stanowią jednolite pola o różnej jasności. Zwiększanie liczby węzłów powoduje pojawienie się gradientów reprezentujących krawędzie, a także kształtów odpowiadających narożnikom, co zauważyć można na zdjęciach 3.3(b) i 3.3(c) przedstawiających 10 kolejnych węzłów map składających się z 50 i 100 kształtów. Rysunek 3.4(a) przedstawia zdjęcie z bazy ORL w rozdzielczości 112 na 92, zaś rysunki 3.4(b) - 3.4(d) jego rekonstrukcje dokonane na podstawie indeksów węzłów mapy, przypisanych kolejnym obszarom zdjęcia. Odwzorowania stworzono wykonując podpróbkowanie nadmiarowe - oknem o wymiarach 5x5 i przesunięciu w pionie i poziomie o 3 piksele. W czasie

18 12 3. Algorytm rozpoznawania osób Rysunek 3.2 Malejąca szerokość obszaru uczenia (t 3 > t 2 > t 1 ) [23]. rekonstrukcji zdjęcia, wartości pikseli użytych kilkukrotnie podczas mapowania zostały uśrednione. Sieci Kohonena, za pomocą których zostało opisane, a następnie zrekonstruowane zdjęcie odpowiadają przedstawionym na rysunku 3.3. Zgodnie z przewidywaniami, mapa 3.3(c) posiadająca największy repertuar kształtów dała najlepsze odwzorowanie zdjęcia. Jednak, co zaskakujące, nawet na zdjęciu odtworzonym z mapy 3.3(a), której węzły odpowiadają jedynie 10 różnym poziomom szarości, jesteśmy w stanie rozpoznać osobę z oryginalnego zdjęcia. 3.2 Analiza niezależnych komponentów Jak wspomniano w rozdziale 2, wiele wykorzystywanych obecnie algorytmów rozpoznawania osób bazuje na nienadzorowanych, statystycznych metodach uczenia maszynowego [21]. Jedną z metod pozwalających uzyskać najlepsze efekty jest analiza niezależnych komponentów (ICA - Independent Component Analysis) Algorytm wyznaczania niezależnych komponentów Istnieje kilka algorytmów wyznaczania niezależnych komponentów, spośród których najpopularniejszym jest zaproponowany przez Bella i Sejnowskiego [13], oparty na optymalnym transferze informacji przez neuron sigmoidalny. Niech X (w niniejszej sekcji przyjęto, że zmienne losowe zapisywane są pogrubioną czcionką, zaś macierze zwyczajną) będzie n wymiarowym wektorem losowym, reprezentującym obserwacje środowiska, W macierzą odwracalną n n, zaś U = W X jest liniową kombinacją wektora losowego X. Niech Y = f(u) będzie wektorem losowym reprezentującym n neu-

19 3.2. Analiza niezależnych komponentów 13 (a) Mapa składająca się z 10 węzłów. (b) Mapa składająca się z 50 węzłów. (c) Mapa składająca się z 100 węzłów. Rysunek 3.3 Fragmenty map jednowymiarowych o różnej liczbie węzłów. Mapy tworzone za pomocą podpróbkowania oknem 5x5 z przesunięciem o 3 piksele w pionie i poziomie. (a) Obraz oryginalny (b) Rekonstrukcja - 10 węzłów. (c) Rekonstrukcja - 50 węzłów. (d) Rekonstrukcja węzłów. Rysunek 3.4 Obraz oryginalny oraz 3 rekonstrukcje na podstawie map o 10, 50 i 100 węzłach. Mapy stworzone zostały za pomocą podpróbkowania oknem 5x5 przesuwanym o 3 piksele w pionie i poziomie. ronów sigmoidalnych. Funkcja f = (f 1,..., f n ) jest odwracalną funkcją spłaszczającą, która odwzorowuje zbiór liczb rzeczywistych na przedział [0, 1], gdzie f i = 1. 1+e u Celem algorytmu Bella i Sejnowskiego jest maksymalizacja wzajemnej informacji pomiędzy obserwacjami środowiska X, a wyjściami neuronów sigmoidalnych Y. Cel ten osiągany jest poprzez aktualizację współczynników W zgodnie z kierunkiem gradientu, według równa-

20 14 3. Algorytm rozpoznawania osób nia (3.7) [12], w którym: Y i = f i (U) f i (U) jest ilorazem drugiej i pierwszej pochodnej funkcji f, H(Y ) jest entropią wektora losowego Y, W H(Y ) jest macierzą gradientu entropii, symbol oznacza proporcjonalną zmianę. W W H(Y ) = (W T ) 1 + E(Y X T ) (3.7) Złożoność obliczeniowa algorytmu może być zmniejszona poprzez zastąpienie gradientu - gradientem naturalnym [11]. Równanie (3.7), zastąpić można wtedy równaniem (3.8), pracującym bez odwracania macierzy. Końcowa postać równania (3.8) bazuje na zależności U = W X. W W H(Y )W T W = W + E(Y X T )W T W = (I + Y U T )W (3.8) Algorytm może być przyspieszony poprzez wybielenie danych wejściowych przed rozpoczęciem poszukiwania niezależnych komponentów. Krok ten polega na odjęciu od elementów X, średniej wartości realizacji poszczególnych zmiennych. Następnie należy przemnożyć X przez wybielającą macierz W Z, zdefiniowaną równaniem (3.9). Operacja ta usuwa z danych statystyki pierwszego i drugiego rzędu - wartość średnia i kowariancja zostają wyzerowane. W Z = 2 (Cov(X)) 1 2 (3.9) Po zakończeniu algorytmu uzyskujemy macierz W spełniającą równanie (3.10), gdzie S = (S 1,..., S n ) T jest wektorem niezależnych zmiennych losowych o dystrybuancie f i, czyli rozkładzie logistycznym [5]. X = W 1 S (3.10) W dalszych rozważaniach, macierz W nie będzie zawsze macierzą kwadratową, podobnie jak liczba niezależnych komponentów może być różna od liczby wejściowych zmiennych losowych. W większości rozważań oznacza to zamianę operacji odwracania macierzy na pseudoodwrotność A # = (A T A) 1 A T ICA jako uogólnienie PCA Zauważyć warto, że PCA jest szczególnym przypadkiem ICA, w którym zamiast źródeł o rozkładzie logistycznym użyto źródeł gaussowskich. Założenie, że źródła sygnałów są gaussowskie, powoduje, że PCA nie separuje poprawnie sygnałów o innych rozkładach. Jak wykazano w pracy [13], wiele występujących w naturze sygnałów, jak mowa, zdjęcia osób czy sygnały EEG mogą być lepiej opisane jako kombinacja liniowa źródeł o dodatniej kurtozie (rozkłady z długim ogonem - ang. Long Tail distribution [6]). Kolejną przewagą ICA nad PCA jest wrażliwość metody na statystki wyższego rzędu występujące w obrazie, w przeciwieństwie do PCA uwzględniającego jedynie statystyki pierwszego i drugiego rzędu. Jest to niezwykle istotne, ponieważ w statystykach drugiego rzędu odwzorowane jest jedynie widmo amplitudowe obrazu. Dopiero statystki wyższego rzędu uwzględniają widmo fazowe obrazu. Jak pokazano w pracy [12], to właśnie w fazie, a nie w amplitudzie, zawarta jest kluczowa informacja o obrazie. Zjawisko to zaprezentowane jest na rysunku 3.5. Zdjęcia o oryginalnej amplitudzie widma i zakłóconej fazie nie są możliwe do rozpoznania. Co

21 3.2. Analiza niezależnych komponentów 15 najciekawsze, w obrazie utworzonym poprzez krzyżowe połączenie charakterystyk fazowych i amplitudowych dwóch różnych osób, bez problemu rozpoznamy osobę, ze zdjęcia której pochodzi faza widma. Rysunek 3.5 Po lewej: obrazy oryginalne, po środku: obrazy z oryginalną amplitudą widma i zakłóconą fazą, po prawej: obrazy o oryginalnej amplitudzie i fazie widma drugiego ze zdjęć [12] Dwie architektury ICA Jak zostało zasygnalizowane w rozdziale 2, algorytm ICA występuje w dwóch architekturach. Niezależne współczynniki każdej z nich wyliczane są zgodnie z algorytmem przedstawionym w podsekcji różnią się one wyborem zmiennych losowych tworzących wektor X. Pierwsza architektura ICA traktuje obrazy jako kolejne zmienne losowe. Wartości pikseli w danym obrazie są jego realizacjami. Celem algorytmu jest więc znalezienie takiej bazy, w której reprezentacje kolejnych obrazów będą od siebie niezależne. W tym przypadku niezależność oznacza, że posiadając obrazy i oraz j, analizując wartości ich kolejnych pikseli, nie jesteśmy w stanie przewidzieć wartości piksela z obrazu j, na podstawie wiedzy o wartości tego samego piksela w obrazie i [12]. W tej architekturze, wiersze macierzy wejściowej X stanowią kolejne obrazy, zaś kolumny oznaczają piksele obrazu. Reprezentacją obrazów uczących po wyliczeniu niezależnych komponentów są kolejne wiersze macierzy wyliczonej według równania (3.11), gdzie wiersze S stanowią kolejne niezależne komponenty. W analogiczny sposób wyliczana jest reprezentacja klasyfikowanego obrazu - macierz X zastąpić należy wektorem wierszowym reprezentującym kolejne piksele klasyfikowanego zdjęcia. MAP ARCH1 = X S (SS T ) 1 (3.11) Druga z architektur traktuje jako zmienne losowe piksele. Ich wartości w kolejnych obrazach są realizacjami zmiennej losowej. W tym przypadku, celem algorytmu jest więc znalezienie takiej reprezentacji, w której to piksele będą od siebie niezależne. Piksele i oraz j będą

22 16 3. Algorytm rozpoznawania osób niezależne, gdy poruszając się po zbiorze obrazów, nie jesteśmy w stanie przewidzieć wartości piksela j w obrazie, na podstawie wiedzy o wartości piksela i w tym samym obrazie [12]. W architekturze drugiej, kolumny macierzy wejściowej X stanowią kolejne obrazy, zaś jej wiersze oznaczają piksele obrazu. Reprezentację kolejnych obrazów testowych stanowią kolejne kolumny macierzy niezależnych komponentów (źródeł) S. W macierzy S niezależne komponenty znajdują się w kolejnych wierszach. Reprezentację klasyfikowanego obrazu wyliczamy według równania (3.12), w którym x jest kolumnowym wektorem reprezentującym obraz. CLASS ARCH2 = W x (3.12) Zauważyć należy, że tak naprawdę w identyczny sposób wyliczana jest reprezentacja obrazów uczących - obliczając W X otrzymujemy macierz niezależnych komponentów S. 3.3 Korekcja oświetlenia We wstępie niniejszego rozdziału zasygnalizowana została konieczność redukcji niekorzystnego wpływu oświetlenia na skuteczność rozpoznawania osób. Nierównomierne oświetlenie powodujące powstawanie cieni na twarzy, a także prześwietlenie lub niedoświetlenie zdjęć, może znacząco ograniczyć skuteczność algorytmów rozpoznawania osób. W ramach niniejszej pracy zaproponowano i przetestowano cztery operacje wykonywane na obrazie w skali szarości, mogące poprawić skuteczność implementowanego systemu Redukcja nierównomiernego oświetlenia Pierwszym krokiem podjętym w celu poprawienia wyników systemu była próba zredukowania nierównomiernego oświetlenia na obrazie. Przykład takiego zdjęcia przedstawiono na rysunku 3.6. Wyraźnie widać na nim silnie oświetlony (wręcz prześwietlony) nos i obszary na lewej stronie czoła i lewym policzku. Pozostała część twarzy znajduje się w cieniu. Rysunek 3.6 Nierównomiernie oświetlone zdjęcie przed korekcją. W celu zredukowania dużych różnic między obszarami oświetlonymi i leżącymi w cieniu, zaproponowano algorytm bazujący na lokalnej (uśrednionej) jasności obrazu. Jego pierwszym krokiem jest rozmycie obrazu funkcją Gaussa o określonym odchyleniu standardowym i szerokości jądra operacji. Obydwie wartości obliczane są poprzez podzielenie szerokości obrazu przez zadane dzielniki. Wartość pierwszego parametru wpływa na kształt funkcji rozmywającej - im większe odchylenie standardowe tym z większą wagą będą się liczyć sąsiednie piksele. Duża wartość spowoduje duże rozmycie. Drugi parametr wpływa na wielkość obszaru, z którego liczona jest ważona średnia dla analizowanego piksela. Również w tym przypadku duża

23 3.3. Korekcja oświetlenia 17 wartość parametru skutkuje silnym rozmyciem. Przykłady rozmytych zdjęć przedstawiono na rysunku 3.7. Dobór funkcji wagowej podczas uśredniania ma kluczowe znaczenie. Zbyt duże rozmycie, jak na rysunkach 3.7(a) i 3.7(b) powoduje, że obszary silnie oświetlone zostają uśrednione z położonymi w cieniu - zanikają one na obrazie wynikowym. Zastosowanie małej szerokości jądra funkcji rozmywającej, jak na rysunku 3.7(e), powoduje, że oprócz obszarów silnie i słabo oświetlonych, bardzo wyraźnie widać na niej elementy twarzy jak oczy i usta. (a) 1/2 szerokości zdjęcia. (b) 1/4 szerokości zdjęcia. (c) 1/6 szerokości zdjęcia. (d) 1/8 szerokości zdjęcia. (e) 1/10 szerokości zdjęcia. Rysunek 3.7 Obrazy twarzy po zastosowaniu rozmycia funkcją Gaussa. Szerokość jądra funkcji rozmywającej i jego odchylenie standardowe podano w podpisach zdjęć. Po uzyskaniu rozmytego obrazu twarzy, wartości pikseli obrazu wynikowego wyliczane są zgodnie ze wzorem (3.13), w którym: P W - jasność piksela w obrazie po korekcji, P O - jasność piksela w obrazie oryginalnym, P R - jasność piksela w obrazie rozmytym, MAX - maksymalna możliwa jasność piksela (dla 8-bitowego obrazu równa 255), OF F SET - wartość dodawana do dzielnika. Dodanie wartości do mianownika wyrażenia, chroni przed uzyskiwaniem bardzo małego dzielnika dla ciemnych obszarów rozmytego obrazu. Skutkowałoby to nieproporcjonalnie dużym rozjaśnieniem zacienionych miejsc i prześwietleniem (obcinaniem zbyt wysokich wartości) w wielu miejscach obrazu. P W = P O P R /MAX + OF F SET (3.13) Na rysunku 3.8 przedstawiono wyniki korekcji dla kolejnych rozmyć przedstawionych na rysunku 3.7 i wartości OF F SET = 0.5. Jak widać żaden ze sposobów rozmywania nie jest w stanie całkowicie zniwelować różnicy jasności między oświetlonymi i zacienionymi obszarami. Możliwe jest jednak jej znaczne zmniejszenie, co zaobserwować można na rysunkach 3.8(c) i 3.8(d). Rysunek 3.9 prezentuje wpływ różnych wartości parametru OF F SET na obraz wynikowy. Zgodnie z przewidywaniami, jego zbyt mała wartość powoduje prześwietlenie wielu obszarów

24 18 3. Algorytm rozpoznawania osób (a) 1/2 szerokości zdjęcia. (b) 1/4 szerokości zdjęcia. (c) 1/6 szerokości zdjęcia. (d) 1/8 szerokości zdjęcia. (e) 1/10 szerokości zdjęcia. Rysunek 3.8 Obrazy wynikowe operacji usuwania nierównomiernego oświetlenia. OF F SET = 0.5, szerokość jądra funkcji rozmywającej i jego odchylenie standardowe podano w podpisach zdjęć. zdjęcia, co zaobserwować można na rysunku 3.9(a). Większe wartości parametru OF F SET zapewniają oczekiwane zmniejszenie różnicy jasności między oświetlonymi i zacienionymi obszarami. (a) OF F SET = (b) OF F SET = 0.5. (c) OF F SET = Rysunek 3.9 Obrazy wynikowe operacji usuwania nierównomiernego oświetlenia. Szerokość jądra funkcji rozmywającej i jego odchylenie standardowe równe 1/6 szerokości zdjęcia Zmiana jasności W zależności od maksymalnej jasności obiektów w polu widzenia kamery, zmienia się jej czas ekspozycji i wzmocnienie. Skutkuje to znaczną zmianą jasności danego obiektu, np. ludzkiej

25 3.3. Korekcja oświetlenia 19 twarzy, powiązaną ze zmieniającym się tłem. Efekt ten jest bardzo niekorzystny i często wywoływany jest przez obecność źródła światła w kadrze. Zaproponowany algorytm rozpoznawania twarzy bazuje w pewnym stopniu na jasnościach pikseli twarzy. Ważne zatem jest, aby niezależnie od jasności tła, jasność skóry znajdowała się na podobnym poziomie. W tym celu mierzona jest wartość 13 punktów zdjęcia, które znajdują się w środku prostokątów przedstawionych na rysunku Następnie jasności pikseli są sortowane i odrzucone zostają po 4 skrajne wartości. Pięć środkowych wartości zostaje uśrednione, a otrzymana wartość przyjmowana jest jako średnia jasność skóry. (a) Front twarzy. (b) Prawy półprofil. (c) Lewy półprofil. (d) Głowa uniesiona do góry. (e) Głowa skierowana w dół. (f) Głowa przechylona. Rysunek 3.10 Położenie 13 punktów służących do wyliczania średniej jasności, przy różnej orientacji twarzy. Zdjęcia twarzy przygotowywane za pomocą najpopularniejszej obecnie metody wykrywania twarzy, czyli kaskady klasyfikatorów Haara, charakteryzują się stosunkowo stałym położeniem nosa - na środku zdjęcia - bez względu na orientację wykrytej twarzy. Dzięki temu, punkty, w których mierzona jest jasność, mogą być usytuowane nieruchomo względem zdjęcia. Ich położenie dla różnych orientacji głowy przedstawione zostało na zdjęciach 3.10(a) (f). Zaobserwować na nich można, że dla różnych rodzajów ujęć, duża część punktów znajduje się na obszarze skóry nosa i policzków, co pozwala na poprawne obliczenie średniej jasności skóry. Alternatywą dla opisanej metody mogłoby być obliczenie średniej lub mediany całego zdjęcia, lecz wtedy duży wpływ na wynik, mogłoby mieć tło. Algorytmowi korekcji jasności zadać można dwa parametry. Pierwszy z nich jest jasnością jaką powinna mieć skóra twarzy. Parametr ten jest dzielony przez zmierzoną, na podstawie 13 wspomnianych powyżej punktów, średnią wartością pikseli twarzy. Otrzymany iloraz stanowi wzmocnienie, przez które przemnożone zostaną wartości pikseli obrazu. Gdy zadana wartość jest większa od zmierzonej, wzmocnienie jest większe od 1. Po jego zastosowaniu najjaśniejsze punkty obrazu przekroczą dopuszczalny zakres wartości obrazu (na tym etapie algorytmu nie zostaną jednak ograniczone do wartości maksymalnej). Drugi możliwy przypadek to wartość

26 20 3. Algorytm rozpoznawania osób zadana mniejsza od zmierzonej, co skutkuje wzmocnieniem mniejszym od 1. W tym wypadku po zastosowaniu korekcji, górny zakres wartości pikseli pozostanie niewykorzystany. Drugi krok algorytmu pozwala na zmodyfikowanie maksymalnej jasności występującej na zdjęciu, przy jednoczesnym braku zmian ustalonej w poprzednim kroku jasności skóry. Wartości pikseli wyliczane są według wzoru (3.14), w którym: P W - jasność piksela obrazu wynikowego, P O - jasność piksela obrazu wejściowego, MAX Z - maksymalna zadana jasność pikseli, MAX O - maksymalna zmierzona jasność pikseli, po pierwszym kroku algorytmu, SK - zadana średnia jasność skóry. Jeśli zadana wartość maksymalna MAX Z przekracza dopuszczalny zakres wartości, po wykonaniu obliczeń wynik zostanie ograniczony do maksymalnej jasności obrazu (najczęściej wartości 255). Spowoduje to celową utratę szczegółów w najjaśniejszych punktach obrazu. P W = (P O SK) MAX Z SK MAX O SK + SK (3.14) Wyniki korekcji jasności przedstawiono na rysunkach 3.11 oraz Pierwszy z nich prezentuje jak algorytm może zniwelować różnice między obrazem prześwietlonym - rys. 3.11(a) i niedoświetlonym - rys. 3.11(c). Obrazy wynikowe dla korekcji z parametrami SK = 122 i MAX Z = 255, przedstawiono na rysunkach 3.11(b) i 3.11(d). Nie są one identyczne, jednakże różnica między nimi jest dużo mniejsza niż dla obrazów przed korekcją. Przykład ten pokazuje jak ważne jest zapewnienie poprawnych warunków pobrania klatki obrazu. Źle oświetlone ujęcie może być poddane korekcji, ale część informacji zostaje bezpowrotnie utracona. (a) Przed korekcją - zdjęcie prześwietlone. (b) Wynik korekcji zdjęcia prześwietlonego, SK = 122, MAX Z = 255. (c) Przed korekcją - zdjęcie niedoświetlone. (d) Wynik korekcji zdjęcia niedoświetlonego, SK = 122, MAX Z = 255. Rysunek 3.11 Korekcja zdjęcia niedoświetlonego oraz prześwietlonego.

27 3.3. Korekcja oświetlenia 21 (a) SK = 100, MAX Z = 255. (b) SK = 150, MAX Z = 255. (c) SK = 122, MAX Z = 255. (d) SK = 122, MAX Z = 230. (e) SK = 122, MAX Z = 270. Rysunek 3.12 Wyniki korekcji jasności, dla różnych ustawień SK i MAX Z. Rysunek 3.12 prezentuje wpływ ustawień korekcji jasności na obraz wynikowy. Zdjęcia 3.12(a) (c) przedstawiają wyniki korekcji o tej samej wartości parametru MAX Z = 255, zaś różnych wartościach SK. Wzrost wartości tego parametru wpływa zgodnie z oczekiwaniami na wzrost jasności obrazu, którego większość stanowi twarz. Obrazy 3.12(c) (e) prezentują wyniki korekcji dla stałej wartości SK = 122 i różnych wartościach maksymalnej jasności obrazu. Zauważyć można, że zmniejszenie parametru MAX Z powoduje spadek kontrastu obrazu - rys. 3.12(d). Okazuje się również, że podanie maksymalnej wartości większej od dopuszczalnego zakresu jasności - rys. 3.12(e) - nie powoduje utraty żadnych istotnych szczegółów obrazu. Zwiększa za to zakres, w którym reprezentowane są użyteczne informacje Korekcja gamma Trzecim sposobem modyfikacji obrazu jest korekcja gamma. Pozwala ona na punktową zmianę jasności obrazu, która eksponuje szczegóły znajdujące się w jaśniejszych fragmentach obrazu (γ > 1) lub ciemniejszych obszarach (γ < 1). Korekcja wykonywana jest według wzoru (3.15), gdzie P W to jasność piksela w obrazie wynikowym, P O - jasność w obrazie wejściowym, MAX - maksymalna dopuszczalna wartość pikseli, γ - współczynnik korekcji. P W = ( ) γ PO MAX (3.15) MAX Wyniki korekcji gamma, dla różnych wartości współczynników, przedstawiono na rysunku Na zdjęciach 3.13(a) i 3.13(b), współczynnik γ był mniejszy od 1, co spowodowało ogólny wzrost jasności obrazu i wyeksponowanie szczegółów położonych w dolnym zakresie

28 22 3. Algorytm rozpoznawania osób wartości pikseli. Mniej widoczne są za to jasne elementy, np. prześwietlone obszary twarzy. Obrazy 3.13(d) (f) otrzymane zostały w wyniku korekcji za pomocą gammy większej od 1. Zdjęcia wydają się przez to ciemniejsze, lepiej widoczne stały się szczegóły o wysokiej jasności. (a) γ = 0.6. (b) γ = 0.8. (c) γ = 1.0. (d) γ = 1.2. (e) γ = 1.4. (f) γ = 1.6. Rysunek 3.13 Wyniki korekcji gamma Wyrównywanie histogramu Operacja wyrównywania histogramu jest ostatnim dostępnym sposobem korekcji zdjęcia. W przeciwieństwie do poprzednich metod nie działa ona wprost na jasnościach pikseli zdjęcia, lecz na jego histogramie. Jej celem jest równomierna dystrybucja jasności pikseli na całym zakresie jasności. Zapewnia to wzrost kontrastu obrazu, w szczególności w obszarach obrazu gdzie był on bardzo niski. Efekt ten może być jednak szkodliwy, gdy na obrazie występują zakłócenia - wyrównanie histogramu spowoduje ich wzmocnienie. Efekt wykonania operacji wyrównywania histogramu przedstawiono na rysunku W jego górnym rzędzie przedstawiono zdjęcie twarzy przed korekcją. Obserwując jego histogram, przedstawiony na rysunku 3.14(b), zauważyć można, że jasności obrazu skoncentrowane są wokół dwóch wartości: około 25% maksymalnej - zacieniony obszar twarzy i włosów, około 75% wartości maksymalnej - tło zdjęcia. Duża część zakresu jasności zdjęcia pozostaje prawie niewykorzystana, są to najniższe i najwyższe wartości oraz obszar wokoło 50% maksymalnej wartości pikseli. Obserwacje te potwierdza histogram skumulowany zdjęcia przedstawiony na rysunku 3.14(c) - dla wspomnianych wartości jego narost jest bardzo powolny.

29 3.4. Klasyfikacja wyników 23 Dolny rząd rysunku 3.14 przedstawia wyniki korekcji. Kontrast zdjęcia twarzy jest zdecydowanie większy, wyeksponowane zostały jej poszczególne fragmenty - szczególnie usta. Histogram zdjęcia, pokazany na rysunku 3.14(e) jest zgodnie z przewidywaniami bardziej wyrównany. Gdyby jasności obrazu mogły przyjmować ciągłe wartości, wyrównany histogram stanowiłby poziomą linię prostą. Równomierną dystrybucję jasności na całym zakresie widać dokładnie na rysunku 3.14(f), prezentującym histogram skumulowany. W całym zakresie narasta on liniowo, nie występują w nim płaskie obszary. (a) Zdjęcie twarzy. (b) Histogram zdjęcia. (c) Histogram skumulowany. (d) Zdjęcie twarzy. (e) Histogram zdjęcia. (f) Histogram skumulowany. Rysunek 3.14 Górny rząd: zdjęcie twarzy przed korekcją, dolny rząd: zdjęcie twarzy po wyrównaniu histogramu. 3.4 Klasyfikacja wyników Jak wspomniano we wstępie niniejszego rozdziału, wyniki działania systemu poddawane są dwuetapowej klasyfikacji. Jej celem jest zwiększenie pewności generowanych odpowiedzi i zminimalizowanie możliwości pomyłki. Zgodnie z informacjami z podsekcji 3.2.3, podczas klasyfikacji obrazu wyliczana jest jego reprezentacja w bazie niezależnych komponentów. Jest nią wektor współczynników r - w przypadku pierwszej architektury jest to wektor wierszowy, zaś drugiej kolumnowy. W celu znalezienia osoby, którą najbardziej przypomina klasyfikowane zdjęcie, wyliczamy dla wszystkich zdjęć z bazy uczącej, miarę podobieństwa do klasyfikowanej osoby. Jako miarę wybrano kosinusa kąta między wektorem klasyfikowanym r a wektorem wzorcowym w i. Zaletą tej miary jest znormalizowanie wyników do zakresu [ 1, 1], co ułatwia ich dalszą klasyfikację.

30 24 3. Algorytm rozpoznawania osób Klasyfikacja statyczna W przypadku, gdy do zadania klasyfikacji wykorzystywana jest tylko jedna architektura, wynikiem wyliczenia miary podobieństwa jest wektor wartości określających jak bardzo klasyfikowany obraz przypomina zdjęcie z bazy. Najprostszym sposobem klasyfikacji byłoby posortowanie odległości malejąco i wybranie osoby o największym stopniu podobieństwa - takie postępowanie prowadzić może jednak do popełnienia błędu. W celu zminimalizowania szansy wystąpienia pomyłki, wartość podobieństwa musi spełnić dwa warunki: wartość podobieństwa musi być większa od pewnego bezwzględnie ustalonego progu, względna różnica współczynników podobieństwa między osobą o najwyższym wyniku, a kolejną osobą musi być większa od zadanego progu względnego. Analizując drugi warunek należy pamiętać, że każdą osobę w bazie reprezentuje kilka zdjęć. Obliczana różnica nie zawsze jest różnicą między pierwszym a drugim wynikiem, ponieważ mogą one reprezentować podobieństwo do innych zdjęć tej samej osoby. Dodatkowym warunkiem klasyfikacji, pozwalającym na udzielenie odpowiedzi, pomimo niespełnienia powyższych warunków, jest wystąpienie tej samej osoby określoną liczbę razy pod rząd na początku wektora posortowanych wartości. Jeśli żadna z powyższych metod klasyfikacji (spełnienie dwóch warunków lub określona liczba wystąpień pod rząd) nie zostanie spełniona, klasyfikator udziela odpowiedzi nie wiem. Ustalając progi klasyfikatorów pamiętać należy, że powodują one nie tylko spadek liczby błędnych odpowiedzi na rzecz braku rozstrzygnięcia, lecz także zmniejszenie liczby poprawnych odpowiedzi. Te o małej pewności (niskim stopniu podobieństwa) również zostaną zaklasyfikowane jako odpowiedź nie wiem. Zastosowanie obydwu architektur ICA pozwala na zwiększenie pewności udzielanych przez system odpowiedzi. W tym przypadku dysponujemy dwoma wektorami współczynników podobieństwa do kolejnych zdjęć w bazie. Przeanalizowane mogą one zostać przez klasyfikator radykalny lub tolerancyjny. Pierwszy z nich udzieli odpowiedzi nierozstrzygającej za każdym razem, gdy osoba o największym stopniu podobieństwa wybrana przez architekturę pierwszą różni się od tej wybranej przez architekturę drugą. Gdy przez obie architektury wskazana została ta sama osoba, wybierany jest wyższy ze współczynników opisujących jej podobieństwo do osoby z bazy. Współczynnik ten jest następnie klasyfikowany, podobnie jak ma to miejsce w przypadku korzystania tylko z jednej architektury - spełnić musi warunki progu bezwzględnego i względnego. Gdy wybrana została klasyfikacja tolerancyjna wektory reprezentujące współczynniki podobieństwa do kolejnych zdjęć zostają uśrednione. Po tej operacji klasyfikacja prowadzona jest identycznie jak dla wyników jednej architektury Klasyfikacja dynamiczna Poprawne rozpoznanie osoby już po krótkim spojrzeniu (odpowiadającym pojedynczej klatce obrazu) jest zadaniem bardzo trudnym nawet dla człowieka. Ponieważ głównym celem systemu będzie klasyfikacja w bezpośredniej interakcji, która zazwyczaj trwa co najmniej kilkanaście sekund, zdecydowano się na wprowadzenie klasyfikatora dynamicznego. Stanowi on swego rodzaju filtr dolnoprzepustowy dla odpowiedzi spełniający dwa zadania: redukuje częstość występowania pomyłek - nie podejmuje decyzji o klasyfikacji na podstawie jednego zdjęcia, nie zmienia swej decyzji od razu, gdy pojawią się inne wyniki,

31 3.4. Klasyfikacja wyników 25 redukuje czas, gdy system nie rozpoznaje osoby - jeśli dotychczasowe wyniki jednoznacznie wskazywały określoną osobę, pojawienie się wyników nie wiem nie spowoduje, że system od razu straci pewność, kogo widzi. Działanie systemu oparte jest na analizie określonej liczby historycznych próbek. Na początku wszystkim próbkom przypisywana jest odpowiedź nie wiem. Kolejne wyniki klasyfikacji zapisywane są w historii, gdy liczba rozstrzygających klasyfikacji przekroczy określony próg, dokonywane jest zliczanie odpowiedzi. Gdy najczęściej padający indeks osoby spełnia dwa progi - względny i bezwzględny - rozumiane identycznie jak w przypadku klasyfikacji statycznej, system poda odpowiedź. W przypadku niespełnienia któregoś z warunków klasyfikacji odpowie on nie wiem. Korzystając z klasyfikatora pamiętać należy, że na początku interakcji udzielać on będzie zawsze odpowiedzi nierozstrzygających - aby nadmiernie nie wydłużyć tego czasu nie można ustawić zbyt wysokiej wartości progu odpowiedzi różnych od nie wiem.

32

33 Rozdział 4 Implementacja algorytmu rozpoznawania osób Niniejszy rozdział przedstawia stworzony system rozpoznawania osób od strony implementacyjnej. Opisano w nim główne struktury danych, sposób parametryzacji działania programu poprzez plik konfiguracyjny oraz wykorzystane biblioteki. Zaproponowano także sposób automatycznego tworzenia zestawów zdjęć, zapewniającego różnorodność ujęć osoby dodawanej do bazy. 4.1 Struktury danych programu Niniejszy rozdział przedstawia klasy i metody języka C++ wykorzystane do implementacji funkcjonalności opisanej w rozdziale 3. Wyróżnić można w nim klasy tworzące interfejs użytkownika, implementujące funkcjonalność SOM i ICA oraz klasyfikujące wyniki Interfejs użytkownika Korzystanie z możliwości stworzonego systemu rozpoznawania osób realizowane jest przez klasę abstrakcyjną Person_Recognition. Jest ona dziedziczona przez klasę PR_SOM_ICA implementującą system dwuetapowego rozpoznawania osób w oparciu o samoorganizującą się sieć neuronową i analizę niezależnych komponentów. Klasa abstrakcyjna dostarcza metody uczenia systemu, rozpoznawania zdjęć, kroswalidacji czy też testowania sekwencji wideo, abstrahując od konkretnej implementacji tych zadań. Pozwala to na łatwe dołączenie do programu kolejnych metod rozpoznawania osób, bez znaczących zmian w kodzie programu wykorzystującego niniejszą bibliotekę. Oprócz systemu opartego na SOM i ICA podjęto próbę zaimplementowania kolejnego systemu, wykorzystującego w drugim etapie klasyfikacji wielowarstwową sieć neuronową. Do tego celu wykorzystano bibliotekę sieci neuronowych Flood [25] - implementacja systemu została dokonana za pomocą klasy PR_SOM_Flood. Ten alternatywny system charakteryzował się jednak niską skutecznością, mając jednocześnie ogromne wymagania dotyczące pamięci operacyjnej podczas długiego procesu uczenia. Z powyższych powodów jego rozwijanie zostało zaprzestane. W niniejszej podsekcji opisane zostaną metody klasy PR_SOM_ICA, będące metodami wirtualnymi, które mogłyby zostać zaimplementowane również za pomocą innych algorytmów. Jedyną niewirtualną metodą klasy jest jej konstruktor. Wczytuje on zawartość pliku konfiguracyjnego i na tej podstawie przypisuje wartości polom klasy Settings. Wczytywane

34 28 4. Implementacja algorytmu rozpoznawania osób ustawienia opisane zostały dokładnie w sekcji 4.2. PR_SOM_ICA::PR_SOM_ICA( string conf_path - ścieżka do pliku konfiguracyjnego parametryzującego działanie systemu, domyślna wartość to default.cfg ); Metoda PR_SOM_ICA::Learn_system rozpoczyna swe działanie od stworzenia katalogu, gdzie zapisywane będą tymczasowe pliki, niezbędne do uczenia systemu. Następnie uruchamiane są metody uczenia SOM - SOM_Teacher::Start_teaching i zapisu zmapowanych zdjęć w katalogu tymczasowym SOM_Teacher::Create_vecs_for_ICA. Na końcu, wywoływana jest odpowiednia do żądanego sposobu działania, metoda stworzenia architektury ICA - ICA::Create_arch1 i/lub ICA::Create_arch2. Metody: PR_SOM_ICA::Add_to_learned_system, PR_SOM_ICA::Add_to_learned_system2 pozwalają na dodanie do bazy rozpoznawanych przez program twarzy, kolejnej osoby, bez uczenia systemu od samego początku. Pierwszym efektem działania metod jest zwiększenie licznika twarzy w systemie, a następnie zmapowanie za pomocą SOM nowych zdjęć i dopisanie na końcu pliku w katalogu tymczasowym. Gdy wybrana została pierwsza metoda, ostatnim krokiem jest wyliczenie reprezentacji dodanych zdjęć w istniejących architekturach ICA za pomocą funkcji ICA::Remap_arch1 i/lub ICA::Remap_arch2. W przypadku drugiego sposobu, niezależne komponenty zostają wyliczone od nowa za pomocą metod ICA::Create_arch1 i/lub ICA::Create_arch2. Niezależnie od wybranej metody dodawania do systemu, zdjęcia nowej osoby powinny być uprzednio zapisane w katalogu o kolejnym numerze, w folderze zawierającym zdjęcia osób z bazy. Przykładowo dla trzonu nazwy katalogów s i 40 zdjęć w bazie, powinny znaleźć się w katalogu s41. Metoda PR_SOM_ICA::Save_system tworzy wskazany folder zapisu, a następnie wywołuje metody zapisu odpowiednich struktur SOM i ICA. Na koniec kopiuje plik konfiguracyjny do zadanej lokalizacji. void PR_SOM_ICA::Save_system( string path, - ścieżka do folderu, gdzie zapisany ma zostać system, domyślna wartość to - oznacza wybór folderu wskazanego string filename w pliku konfiguracyjnym - trzon nazwy plików, w których zostanie zapisany system, domyślna wartość to - oznacza wybór trzonu nazwy wskazanego w pliku konfiguracyjnym ); Parametry wywołania o analogicznym znaczeniu posiada metoda wczytywania systemu - PR_SOM_ICA::Load_system. Pierwszym krokiem jej działania jest wczytanie ustawień ze znajdującego się w folderze pliku konfiguracyjnego za pomocą metody Settings::Load. Następnie wczytywane są struktury SOM i ICA. Metoda statycznej klasyfikacji zdjęć rozpoczyna swe działanie od podpróbkowania zdjęcia i przypisania jego kolejnym fragmentom indeksów mapy SOM, a następnie zapisania ich do pliku w katalogu tymczasowym. W kolejnym kroku nowa reprezentacja zdjęcia jest rzutowana na niezależne komponenty ICA i porównywana ze zdjęciami w bazie - czynności te wykonują metody ICA::cosin_dist1 i/lub ICA::cosin_dist2. Na końcu działania metody wywoływana jest przeciążona funkcja ICA_Classifier::Classify, która klasyfikuje wyniki pojedynczej architektury lub łącznie obydwu architektur. Jej wynik przypisywany jest

35 4.1. Struktury danych programu 29 polu PR_SOM_ICA::last_ans, przechowującemu ostatnią uzyskaną odpowiedź i zwracany przez niniejszą metodę. int PR_SOM_ICA::Classify( Mat picture - zdjęcie poddawane klasyfikacji, dla poprawnego działania funkcji wymagane jest 8-bitowe zdjęcie w skali szarości, o wymiarach zgodnych z podanymi w pliku konfiguracyjnym ); Dynamiczna klasyfikacja pozwala na zmniejszenie liczby błędnych klasyfikacji w oparciu o badanie historii ostatnich odpowiedzi. Zwracana przez nią wartość jest indeksem rozpoznawanej osoby, w oparciu o funkcję ICA_Classifier::Classify_dynamically. Metoda PR_SOM_ICA::Clear_dyn_class pozwala na wyczyszczenie historii klasyfikacji, gdy podejmujemy próbę rozpoznawania innej niż dotychczas osoby. int PR_SOM_ICA::Classify_dynamically( int ans - indeks osoby, która została ostatnio sklasyfikowana, wartość domyślna argumentu to -2, co oznacza, że jako indeks użyta ma zostać wartość pola PR_SOM_ICA::last_ans ); Metoda kroswalidacji dokonuje losowego podziału indeksów zdjęć na grupę służącą do uczenia systemu i mającą na celu jego testowanie. Następnie w pętli (o liczbie iteracji równej krotności walidacji), system jest uczony, a próbki testowe statycznie klasyfikowane. Końcowym wynikiem działania funkcji jest informacja o liczbie poprawnych, błędnych i nierozstrzygniętych odpowiedzi w poszczególnych iteracjach, a także o czasie trwania uczenia SOM, uczenia ICA i klasyfikacji. Dane te są wyświetlane i zapisywane do pliku w katalogu tymczasowym. Zwracany przez funkcję wynik to ułamek poprawnych odpowiedzi we wszystkich iteracjach. double PR_SOM_ICA::Cross_validation( int parts - liczba części, na które dzielony jest zbiór zdjęć podczas kroswalidacji, domyślna wartość to -1 - oznacza wczytanie wartości z obiektu klasy ustawień Settings ); Testowanie sekwencji wideo rozpoczyna się od wyczyszczenia historii klasyfikatora dynamicznego. Następnie odczytywane są kolejne klatki sekwencji wideo, aż do zakończenia filmu lub wykonania zadanej liczby operacji klasyfikacji wykrytych osób. Po wczytaniu, klatka transformowana jest do skali szarości. Następnie za pomocą klasyfikatora Haara wykrywane są twarze na ekranie, największa z nich jest wycinana z obrazu i skalowana do wymiarów 112x92. Tak przygotowane zdjęcie poddawane jest statycznej i dynamicznej klasyfikacji. Jej wyniki porównywane są z prawdziwym indeksem osoby przedstawionej na filmie, podawanym jako parametr wywołania. Po zakończeniu działania, do pliku w katalogu tymczasowym, zapisywana jest informacja o liczbie poprawnych, nierozstrzygniętych i niepoprawnych klasyfikacji statycznych i dynamicznych. void PR_SOM_ICA::Test_video( string _path, - ścieżka do pliku wideo int id, int max ); - id osoby przedstawionej w sekwencji wideo - maksymalna liczba dokonanych klasyfikacji, po której przerywana jest analiza pliku wideo

36 30 4. Implementacja algorytmu rozpoznawania osób Podpróbkowanie obrazu Za realizację wstępnego etapu przetwarzania obrazu, czyli podpróbkowania z ewentualną korekcją oświetlenia, odpowiada klasa Img_Sampling. Jej funkcje wywoływane są zawsze przed metodami implementującymi samoorganizującą się sieć neuronową, zarówno podczas uczenia systemu (kiedy aktualizowane są węzły SOM), jak i podczas klasyfikacji (poszukiwanie najbliższego węzła SOM). Przetwarzanie zdjęcia rozpoczyna się zawsze od wywołania funkcji bool Img_Sampling::Read_new_photo(Mat& pho). Gdy zwróci ona wartość false oznacza to, że przetwarzanie poprzedniego zdjęcia nie zostało jeszcze zakończone i wczytanie kolejnego zostało przerwane. Zdjęcia wczytywane przez powyższą metodę muszą mieć wielkość określoną w pliku konfiguracyjnym. W niniejszej pracy była ona zawsze równa 112 na 92 piksele. W celu uzyskania obrazów o określonym wymiarze wykonać należy poniższe kroki: znalezienie obszaru twarzy za pomocą kaskady klasyfikatorów Haara, dostarczanej przez OpenCV [1] (obszar ten jest kwadratem, na którego środku położony jest nos osoby), powiększenie zdjęcia z góry i z dołu o tą samą wartość, tak aby stosunek wysokości do szerokości zdjęcia był równy zadanemu - dla wymiaru 112 na 92 piksele jest to 1,217, przeskalowanie obrazu do zadanych wymiarów. W metodzie Img_Sampling::Read_new_photo przed rozpoczęciem właściwego podpróbkowania uruchamiane są warunkowo (w zależności od ustawień pliku konfiguracyjnego) 4 funkcje korekcji oświetlenia: redukcji nierównomiernego oświetlenia Mat& Remove_uneven_ilumination_GS ( Mat& face, - modyfikowane zdjęcie twarzy double offset, - stała wartość dodawana do dzielnika w funkcji korekcji twarzy int dev_div, - dzielnik służący do wyliczenia odchylenia standardowego rozmywającej funkcji Gaussa int kernell_div - dzielnik służący do wyliczenia szerokości jądra funkcji rozmywającej ); zmiany jasności zdjęcia Mat& Modify_brightness( Mat& face, - modyfikowane zdjęcie twarzy double max_val, - maksymalna wartość jasności zdjęcia po korekcji double skin_point - średnia jasność obszaru skóry ); korekcji gamma Mat& Gamma ( Mat& face, double gamma ); - modyfikowane zdjęcie twarzy - współczynnik gamma

37 4.1. Struktury danych programu 31 wyrównywania histogramu obrazu void cv::equalizehist( InputArray src, - macierz wejściowa OutputArray dst - macierz wyjściowa ); Metodą odpowiedzialną za podpróbkowanie wczytanego obrazu jest vector<double> Img_Sampling::Next_vec(). W zależności od wybranej metody tworzenia wektorów wejściowych dla SOM, wywołuje jedną z poniższych funkcji: vector<double>& Img_Sampling::Method_1(), vector<double>& Img_Sampling::Method_2(). Zwracają one, jako wektor, kolejne wartości z kwadratowego okna o zadanych wymiarach, a następnie przesuwają okno o określoną liczbę pikseli w osi X. Gdy okno dojdzie do końca linii, przesuwane jest na początek linii leżącej poniżej, zgodnie z wartością przesunięcia w osi Y. Pierwsza z metod tworzenia wektora zwraca bezpośrednio odczytane wartości pikseli, zaś druga wartości pikseli podzielone przez średnią jasność w oknie Implementacja i uczenie SOM Za implementację samoorganizującej się sieci neuronowej odpowiada klasa SOM. Pozwala ona na aktualizowanie wartości węzłów w czasie uczenia jak i mapowanie wektorów wejściowych na etapie klasyfikacji. Za uczenie sieci na podstawie zbioru obrazów, jak i tworzenie próbek testowych niezbędnych do kroswalidacji odpowiada klasa pomocnicza SOM_Teacher. Najważniejszym atrybutem klasy SOM jest dynamiczna tablica węzłów mapy, reprezentowanych przez obiekty klasy SOM_node. Węzły posiadają atrybuty mi_vector, będące wektorami referencyjnymi. Wymiar wektorów referencyjnych jest równy kwadratowi szerokości okna, którym dokonywane jest podpróbkowanie obrazu. Wartości elementów wektora są losowane z rozkładu jednostajnego w konstruktorze klasy - zakres wartości zależny jest od wybranej w ustawieniach metody mapowania SOM. Jest równy od 0 do 255 dla pierwszej metody, zaś od 0 do 2 dla metody drugiej. Jeśli mapa SOM jest wczytywana z uprzednio zapisanego pliku, wartości wektorów referencyjnych wczytywane są za pomocą poniższej metody. void SOM_node::Load( Settings& settings, ifstream& instrm - referencja do wczytywanych ustawień - referencja do strumienia czytającego dane z pliku, gdzie zapisane są wartości kolejnych składowych wektorów referencyjnych mapy ); Metodą klasy SOM implementującą zarówno uczenie sieci, jak i mapowanie wektorów wejściowych jest SOM::Find_closest. Dokonuje ona przeglądu wszystkich węzłów sieci, wyszukując takiego, który zawiera wektor referencyjny o największym podobieństwie do wektora wejściowego. Podobieństwo definiowane jest na podstawie normy euklidesowej różnicy wektorów (im mniejsza norma, tym większe podobieństwo). Gdy sieć znajduje się w trybie mapowania (wartość atrybutu mode jest równa mapping), zwracany jest wektor reprezentujący położenie najbliższego węzła w mapie. Dla jednowymiarowej mapy zwracany jest wektor o tylko jednej składowej. Gdy sieć jest w trybie uczenia (atrybut mode równy learning), wywoływana jest funkcja aktualizacji węzłów SOM::Update_nodes. Zmiana wartości węzła najlepiej odpowiadającego wektorowi wejściowemu i jego sąsiadów dokonywana jest zgodnie

38 32 4. Implementacja algorytmu rozpoznawania osób ze wzorami (3.1) - (3.6). vector<int> SOM::Find_closest( vector<double> - uczący lub klasyfikowany wektor wejściowy in_vec, int updates - liczba iteracji uczenia SOM, domyślna wartość to 0 - podawanie wartości argumentu nie jest wymagane po zakończeniu etapu uczenia ); Jak wspomniano wcześniej, sieć po etapie uczenia może zostać zapisana. Służy do tego funkcja void SOM::Save(string path), która zapisuje składowe kolejnych wektorów referencyjnych węzłów mapy w pliku tekstowym. Do wczytywania mapy służy funkcja void SOM::Load(string path). Wywołuje ona dla kolejnych węzłów, wspomnianą już wcześniej, metodę SOM_node::Load. Oprócz tego, automatycznie ustawia sieć w trybie mapowania. Jak wspomniano na początku sekcji, za uczenie sieci i tworzenie wektorów testowych do kroswalidacji odpowiada klasa SOM_Teacher. Jej konstruktor przyjmuje referencję do obiektu klasy SOM, który będzie uczony. SOM_Teacher::SOM_Teacher( SOM& net, - referencja do uczonej sieci Settings& settings - referencja do ustawień ); Kluczową metodą klasy jest void SOM_Teacher::Start_teaching() wykonująca uczenie sieci na podstawie bazy zdjęć określonej w pliku konfiguracyjnym. Dokonuje ona podpróbkowania wszystkich zdjęć, wywołując dla kolejnych wczytanych na podstawie zdjęcia wektorów, metodę SOM::Find_closest. Aby zapewnić równomierny wpływ osób w bazie na kształt mapy, najpierw wczytywane jest pierwsze zdjęcie dla wszystkich osób w bazie, potem drugie, itd. Ponieważ uczenie jest degresywne, wczytywanie wszystkich zdjęć dla pierwszej osoby, wszystkich dla drugiej, itd., sprawiłoby, że osoby z początku bazy wpływałyby na jej kształt z większą wagą. Metoda, po określonym w pliku konfiguracyjnym procencie zdjęć, zmienia fazę uczenia ze wstępnego porządkowania (atrybut phase równy ordering), na dostrajanie sieci (phase równe adjustment). Klasa dostarcza również metod uczenia sieci podczas kroswalidacji. Jedynie część zdjęć każdej z osób jest wykorzystywana do uczenia zdjęć, zaś reszta służy do klasyfikacji. void SOM_Teacher::Start_teaching_cv( vector<int> omit - wektor indeksów zdjęć, które mają zostać ominięte podczas uczenia sieci ); Po nauczeniu sieci, obiekt klasy SOM_Teacher jeszcze raz wczytuje wszystkie zdjęcia. Tym razem kolejne fragmenty obrazów są mapowane na indeksy węzłów sieci. Nowa reprezentacja wszystkich zdjęć z bazy zapisywana jest do pliku w katalogu tymczasowym za pomocą funkcji void SOM_Teacher::Create_vecs_for_ICA(string path). Format zapisu dostosowany jest do formatu biblioteki itpp [3], przez co macierz, której wiersze odpowiadają nowej reprezentacji kolejnych zdjęć może być bezpośrednio wczytana przez metodę w klasie ICA. SOM_Teacher::Create_vecs_for_ICA_cv( vector<int> omit - wektor indeksów zdjęć, które mają zostać zmapowane i zapisane do pliku w katalogu tymczasowym ); Na koniec wspomnieć należy o metodzie SOM_Teacher::Add_vecs_for_ICA. Po-

39 4.2. Parametryzacja działania programu 33 zwala ona, bez ponownego mapowania wszystkich zdjęć w bazie, na rozszerzenie zmapowanej bazy zdjęć o kolejną osobę. Ma to kluczowe znaczenie podczas powiększania zestawu zdjęć bez ponownego uczenia sieci ICA i klasyfikator wyników Klasa ICA odpowiada za implementację z wykorzystaniem biblioteki itpp, dwóch architektur algorytmu Independent Component Analysis. Statyczna i dynamiczna klasyfikacja wyników ICA, realizowana jest przez klasę ICA_Classifier. Metody realizujące wyliczanie niezależnych komponentów i reprezentacji obrazów w nowej bazie to ICA::Create_arch1 i ICA::Create_arch2. Wykorzystują one obiekt klasy Fast_ICA biblioteki itpp do znalezienia źródeł sygnałów. Pierwszym działaniem metod jest usunięcie składowej stałej z poszczególnych wierszy wczytanej macierzy obrazów. Przed separacją komponentów, zgodnie z ustawieniami pliku konfiguracyjnego, ustalana jest liczba sygnałów jaka ma zostać uzyskana. Następnie wybierana jest funkcja aktywacji neuronu - wykorzystywana jest funkcja tangensa hiperbolicznego. Na końcu następuje wyliczenie niezależnych komponentów i reprezentacji obrazów uczących. Klasa zapewnia także metody wyliczenia reprezentacji nowych wzorców, bez ponownego wyliczania niezależnych komponentów. Zapewniają to funkcje ICA::Remap_arch1 i ICA::Remap_arch2. Wyliczanie podobieństwa między klasyfikowanymi obrazami, a reprezentacją obrazów uczących w bazie niezależnych komponentów, realizowane jest poprzez metody ICA::cosin_dist1 i ICA::cosin_dist2. Po wczytaniu wektora reprezentującego obraz, wyliczana jest jego reprezentacja w bazie niezależnych komponentów. Następnie dla wszystkich wektorów reprezentujących obrazy uczące wyliczony zostaje kosinus kąta między klasyfikowanym wektorem, a wektorem z bazy. Wyniki klasyfikacji zwracane są jako wektor, zawierający miary podobieństwa do kolejnych obrazów uczących. Klasyfikacja wspomnianego powyżej wektora dokonywana jest przez przeciążoną funkcję ICA_Classifier::Classify. W zależności od tego czy klasyfikacja dokonywana jest w oparciu o pojedynczą architekturę czy też radykalne lub tolerancyjne połączenie obydwu architektur, wywoływana jest metoda przyjmująca jako argumenty jeden lub dwa wektory odległości. Jej działanie realizuje klasyfikację statyczną opisaną w podsekcji Dynamiczna klasyfikacja wyników zapewniana jest przez metodę ICA_Classifier::Classify_dynamically przyjmującą jako argument ostatnią uzyskaną odpowiedź. Gdy klasyfikowana zaczyna być inna osoba niż dotychczas, pamięć klasyfikatora wyczyścić można za pomocą funkcji ICA_Classifier::Clear_dyn_class. 4.2 Parametryzacja działania programu Działanie poszczególnych modułów programu zostało sparametryzowane poprzez klasę Settings. Składa się ona z obiektów następujących klas: General_Settings, Img_Sampling_Settings, SOM_Settings, SOM_Teacher_Settings, SOM_ICA_Settings,

40 34 4. Implementacja algorytmu rozpoznawania osób Face_Geom_Settings. Wartości parametrów wszystkich powyższych klas wczytane są z pliku konfiguracyjnego. Wczytywany jest on za pomocą wieloplatformowej biblioteki języka C/C++ libconfig [4]. Składnia pliku konfiguracyjnego przypomina kod w języku C++. Biblioteka udostępnia możliwość grupowania ustawień, co zwiększa przejrzystość pliku oraz pozwala na łatwe powiązanie poszczególnych ustawień z obiektami składowymi klasy Settings. Poniżej zaprezentowano plik konfiguracyjny wraz z objaśnieniem poszczególnych jego części. 1 g e n e r a l : 2 { 3 tmp_path = ". / DATA/ SOM_ICA1 / " ; 4 s a v e _ p a t h = ". / SYSTEMS/ S1 / " ; 5 s a v e _ f i l e n a m e = " p r _ s y s " ; 6 } ; 7 som_ica : 8 { 9 i c a _ a r c h = 1 ; 10 ind_ comp_ method = 1 ; 11 ind_ comp_ number = 5 7 ; 12 i n d _ c o m p _ f a c t o r = 7 ; 13 a b s _ t r e s h = ; 14 r e l _ p e r _ t r e s h = ; 15 same_pers = 1 0 ; 16 samples = 3 0 ; 17 d y n _ a b s _ t r e s h = 0. 4 ; 18 d y n _ r e l _ t r e s h = 0. 1 ; 19 min_ans = 1 0 ; 20 v a l i d _ p a r t s = 3 ; 21 } ; 22 s o m _ t e a c h e r : 23 { 24 p i c _ d i r = ". / f a c e s / j o i n e d 2 a / " ; 25 f o l d _ b a s e = " s " ; 26 f o r m a t = ". pgm " ; 27 face_num = 5 0 ; 28 p i c s _ f o r _ f a c e = 1 0 ; 29 o r d e r i n g _ p a r t = ; 30 } ; 31 img_sampling : 32 { 33 width = 5 ; 34 t r a n s _ x = 3 ; 35 t r a n s _ y = 3 ; 36 method = 1 ; 37 p i c _ w i d t h = 9 2 ; 38 p i c _ h e i g h t = 112; 39 remove_uneven = t r u e ; 40 o f f s e t = 0. 5 ; 41 dev_div = 6 ; 42 k e r n e l l _ d i v = 6 ; 43 c h a n g e _ b r i g h t n e s s = t r u e ; 44 max_val = ; 45 s k i n _ p o i n t = ; 46 gamma_correction = t r u e ; 47 gamma = 1. 4 ; 48 e q u a l i z e = f a l s e ; 49 } ; 50 som :

41 4.2. Parametryzacja działania programu { 52 som_dim = 1 ; 53 nodes_per_dim = 5 0 ; 54 } ; 55 face_geom : 56 { 57 nose = " / home / pawelk / OpenCV / d a t a / h a a r c a s c a d e s / h a a r c a s c a d e _ m c s _ n o s e. xml " ; 58 e y e _ l e f t = " / home / pawelk / OpenCV / d a t a / h a a r c a s c a d e s / h a a r c a s c a d e _ m c s _ l e f t e y e. xml " ; 59 e y e _ r i g h t = " / home / pawelk / OpenCV / d a t a / h a a r c a s c a d e s / h a a r c a s c a d e _ m c s _ r i g h t e y e. xml " ; 60 eyes = " / home / pawelk / OpenCV / d a t a / h a a r c a s c a d e s / h a a r c a s c a d e _ m c s _ e y e p a i r _ b i g. xml " ; 61 mouth = " / home / pawelk / OpenCV / d a t a / h a a r c a s c a d e s / haarcascade_mcs_mouth. xml " ; 62 } ; default.cfg 1. Blok ustawień ogólnych. 3. Ścieżka do folderu, gdzie zapisywane będą pliki tymczasowe programu, są nimi: wyniki kroswalidacji, wyniki testów na plikach wideo, wektory wejściowe dla algorytmu ICA. 4. Ścieżka do folderu, gdzie zapisane zostaną składowe systemu, po wywołaniu polecenia zapisu. 5. Trzon nazwy zapisywanych plików, np. niezależne komponenty architektury pierwszej ICA zapisane zostaną jako pr_sys_ica1_ind.dat. 7. Blok ustawień dwuetapowego algorytmu SOM_ICA i klasyfikatorów jego wyników. 9. Wybrana architektura ICA: 1 - architektura pierwsza, 2 - architektura 2., 3 - jednoczesne wykorzystanie do klasyfikacji obu architektur systemu. 10. Metoda wyliczania liczby niezależnych komponentów algorytmu ICA: 1 - wyliczane jako całkowita liczba zdjęć dzielona przez parametr ind_comp_factor bloku som_ica, 2 - wartość parametru ind_comp_number bloku som_ica. 11. Liczba niezależnych komponentów ICA, gdy wartość parametru ind_comp_method jest równa Dzielnik służący do wyliczania liczby niezależnych komponentów, gdy wartość parametru ind_comp_method jest równa Wartość bezwzględnego progu klasyfikatora statycznego. 14. Wartość względnego progu klasyfikatora statycznego. 15. Wartość wymaganej liczby kolejnych wystąpień tej samej osoby w klasyfikatorze statycznym. 16. Liczba ostatnich odpowiedzi (wliczając w to odpowiedzi nie wiem ) branych pod uwagę w klasyfikatorze dynamicznym. 17. Wartość bezwzględnego progu klasyfikatora dynamicznego. 18. Wartość względnego progu klasyfikatora dynamicznego.

42 36 4. Implementacja algorytmu rozpoznawania osób 19. Minimalna liczba odpowiedzi różnych od nie wiem potrzebnych, aby klasyfikator dynamiczny zwrócił odpowiedź. 20. Liczba części, na które dzielony jest zbiór obrazów podczas kroswalidacji. 22. Blok ustawień nauczyciela samoorganizujacej się sieci neuronowej. 24. Ścieżka do folderu zawierającego katalogi ze zdjęciami osób z bazy. 25. Trzon nazwy folderów z kolejnymi zdjęciami. 26. Format zdjęć w bazie. 27. Liczba osób w bazie zdjęć. 28. Liczba zdjęć każdej z osób w bazie. 29. Część wszystkich zdjęć używanych podczas fazy wstępnego uczenia SOM. 31. Blok ustawień podpróbkowania obrazu. 33. Szerokość okna służącego do podpróbkowania obrazu. 34. Przesunięcie w osi X pomiędzy kolejnymi położeniami okna do podpróbkowania obrazu. 35. Przesunięcie w osi Y po dojściu do końca każdego wiersza obrazu. 36. Metoda podpróbkowania obrazu: 1 - wartości pikseli obrazu, 2 - wartości pikseli obrazu podzielone przez średnią jasność w oknie. 37. Szerokość zdjęć w bazie. 38. Wysokość zdjęć w bazie. 39. Włączenie/wyłączenie pierwszej funkcji korekcji oświetlenia - podziału przez średnią lokalną jasność. 40. Stała wartość dodawana do dzielnika w funkcji korekcji oświetlenia. 41. Dzielnik służący do wyliczania odchylenia standardowego rozmywającej funkcji Gaussa. 42. Dzielnik służący do wyliczania szerokości jądra operacji rozmywania. 43. Włączenie/wyłączenie drugiej funkcji korekcji oświetlenia - ustalenie średniej jasności skóry. 44. Maksymalna wartość jasności na obrazie po korekcji. 45. Poziom jasności, na którym znajdzie się skóra. 46. Włączenie/wyłączenie korekcji gamma. 47. Współczynniki korekcji gamma. 48. Włączenie/wyłączenie wyrównywania histogramu zdjęcia. 50. Blok ustawień samoorganizujacej się sieci neuronowej. 52. Liczba wymiarów sieci. 53. Liczba węzłów w każdym z wymiarów sieci. 55. Blok ustawień kaskad wykrywajacych elementy twarzy.

43 4.3. Biblioteki zewnętrzne Ścieżka kaskady wykrywającej nos. 58. Ścieżka kaskady wykrywającej lewe oko. 59. Ścieżka kaskady wykrywającej prawe oko. 60. Ścieżka kaskady wykrywającej parę oczu. 61. Ścieżka kaskady wykrywającej usta. 4.3 Biblioteki zewnętrzne Stworzone oprogramowanie częściowo opiera swe działanie na zewnętrznych bibliotekach. Są to OpenCV w wersji oraz itpp. Opis biblioteki OpenCV [8], [14] ze względu na jej popularność, a także stosunkowo małe wykorzystanie w niniejszej pracy zostanie pominięty. Biblioteka itpp [3] jest jedną z największych bibliotek matematycznych języka C++. Dostarcza ona własne struktury danych, liczne operacje statystyczne, algebry liniowej, przetwarzania sygnałów oraz funkcjonalność związaną z zagadnieniami komunikacji. W niniejszej pracy, wykorzystana została jej klasa Fast_ICA wykonująca analizę niezależnych komponentów, według algorytmu opisanego w pracy [20]. Metody klasy Fast_ICA pozwalają między innymi na: ustalenie separowanej liczby niezależnych komponentów void Fast_ICA::set_nrof_independent_components int in_nric - liczba niezależnych komponentów ); zadanie sposobu wyliczania niezależnych komponentów - wyliczanie komponentów pojedynczo (FICA_APPROACH_DEFL) lub wszystkich jednocześnie (FICA_APPROACH_SYMM) void Fast_ICA::set_approach int in_approach - metoda wyliczania niezależnych komponentów ); wybór funkcji aktywacji neuronu - x 3 (FICA_NONLIN_POW3), tangens hiperboliczny (FICA_NONLIN_TANH), dystrybuanta rozkładu normalnego (FICA_NONLIN_GAUSS) lub dystrybuantę funkcji rozkładu prawdopodobieństwa o niezerowej skośności (FICA_NONLIN_SKEW) void Fast_ICA::set_non_linearity int in_g - funkcja aktywacji neuronu ); wyliczenie niezależnych komponentów void Fast_ICA::separate (); Po wywołaniu funkcji konfiguracyjnych, w których ustawiane są kluczowe aspekty wyliczania ICA, czyli rodzaj funkcji aktywacji neuronu i liczba niezależnych komponentów, uruchomić można funkcję wyliczającą niezależne źródła. Po zakończeniu jej pracy uzyskujemy dostęp do wszystkich macierzy związanych z analizą niezależnych komponentów. Pozwalają na to następujące metody: Fast_ICA::get_independent_components - macierz niezależnych źródeł,

44 38 4. Implementacja algorytmu rozpoznawania osób Fast_ICA::get_mixing_matrix - macierz mieszająca źródła (W 1 ze wzoru (3.10)), Fast_ICA::get_separating_matrix - macierz separująca źródła (W ze wzoru (3.10)), Fast_ICA::get_whitening_matrix - macierz wybielająca dane wejściowe (W Z ze wzoru (3.9)). 4.4 Zautomatyzowane tworzenie bazy zdjęć Zróżnicowane zestawy zdjęć dla każdej z osób w bazie są jednym z kluczowych elementów niezbędnych dla wysokiej skuteczności systemu. W celu zapewnienia ujęć prezentujących twarz z różnych stron zaimplementowano klasę Face_Geom analizującą orientację twarzy. Rysunek 4.1 Zdjęcie z zaznaczonymi obszarami twarzy. Działanie klasy oparte jest na geometrycznych zależnościach między częściami twarzy: oczami, nosem i ustami. Pierwszym etapem analizy twarzy jest wyszukiwanie nosa w centralnym obszarze twarzy - jego położenie wskazane przez kaskadę klasyfikatorów Haara wskazano kolorem zielonym na rysunku 4.1. Na tej podstawie wybierane są obszary, gdzie poszukiwane są oczy i usta - zaznaczono je kolorem czerwonym. Wyniki wyszukiwania zaznaczono na rysunku lewe i prawe oko kolorem niebieskim, parę oczu kolorem białym i usta kolorem żółtym. Na podstawie geometrycznych zależności między wyszukanymi częściami twarzy, orientacja głowy oceniana jest w trzech aspektach, które opisane zostają przez typy wyliczeniowe będące atrybutami klasy Geom_Assesment: enum head_tilt {_cw, _none, _ccw}; - określa pochylenie głowy. Podstawą do wskazania wartości typu wyliczeniowego jest różnica wysokości na jakiej zostały wykryte oczy. Poszczególne wartości oznaczają: _cw - pochylenie w prawo, _none - brak pochylenia, _ccw - pochylenie w lewo. enum ud_orientation {_up, _norm, _down}; - na podstawie wysokości na jakiej wykryta zostanie para oczu, nos i usta określa położenie głowy w kierunku góra - dół. Oznaczenia wartości: _up - głowa skierowana w górę, _norm - normalne ułożenie głowy, _down - głowa skierowana w dół.

45 4.4. Zautomatyzowane tworzenie bazy zdjęć 39 enum lr_orientation {_left, _center, _right}; - wskazuje położenie w kierunku lewo - prawo. Podstawą do określenia orientacji jest różnica pozycji w osi X między lewym i prawym okiem oraz nosem. Znaczenie wartości: _left - twarz skierowana lewo, _center - na wprost, _right - twarz skierowana w prawo. Na podstawie wartości powyższych 3 typów określana jest jedna z 11 rozpoznawanych orientacji twarzy, która zwracana jest przez metodę Face_Geom::Gallery_assesment. Gdy pochylenie głowy (head_tilt) jest równe _none, wynik obliczany jest jako 3*lr_orientation + ud_orientation. W przeciwnym wypadku jest on zależny jedynie od wartości head_tilt - dla wartości _cw zwracana jest wartość 9, zaś dla _ccw Wszystkie rozpoznawane orientacje, wraz z zaznaczonymi białym kolorem częściami twarzy, przedstawiono na rysunku 4.2. (a) Orientacja 0 - lewo - góra (b) Orientacja 1 - lewo (c) Orientacja 2 - lewo - dół (d) Orientacja 3 - góra (e) Orientacja 4 - na wprost (f) Orientacja 5 - w dół (g) Orientacja 6 - prawo(h) Orientacja 7 - prawo - góra (i) Orientacja 8 - prawo - dół (j) Orientacja 9 - pochylenie w prawo (k) Orientacja 10 - pochylenie w lewo Rysunek rozpoznawanych orientacji twarzy.

46

47 Rozdział 5 Wyniki eksperymentów Stworzone oprogramowanie zostało poddane serii eksperymentów mających na celu przetestowanie jego skuteczności. Drugim elementem prowadzonych badań było dobranie optymalnych parametrów działania systemu SOM_ICA zapewniających kompromis między wysoką skutecznością, a szybkim czasem uczenia i klasyfikacji. Badania prowadzone były zarówno na zbiorach zdjęć jak i na sekwencjach wideo uzyskanych poprzez zapis obrazu z kamery. 5.1 Badania na obrazach statycznych Pierwszym etapem badań były testy prowadzone na zbiorze statycznych, wykonanych uprzednio zdjęć. Wszystkie osoby w bazie zdjęć reprezentowane były przez 10 obrazów w skali szarości o rozdzielczości 112 na 92 piksele. Opisane w tej sekcji wyniki uzyskane zostały za pomocą kroswalidacji z losowym podziałem zbioru zdjęć na 3 części. Podział 10 zdjęć na 3 równe części nie jest możliwy, więc w każdym z etapów kroswalidacji 7 zdjęć danej osoby używanych było do uczenia systemu, zaś pozostałe 3 do klasyfikacji. Podczas kroswalidacji badana była skuteczność stworzonych systemów bez dodatkowych klasyfikatorów lub też fuzji wyników dwóch architektur ICA. Sposób wykorzystania wyników architektur ICA (klasyfikacja radykalna lub tolerancyjna) czy też dobór progu klasyfikacji, zależne są od danego zastosowania systemu. Będą się one znacząco różnić w zależności od tego czy celem jest minimalizacja błędnych odpowiedzi (klasyfikacja radykalna, wysokie progi klasyfikatorów) czy też uzyskanie jak największej liczby odpowiedzi poprawnych, kosztem zdarzających się pomyłek Bazy zdjęć Podczas testowania systemu rozpoznawania osób kluczowym zagadnieniem jest dobór bazy testowej, na której zostanie przeprowadzona kroswalidacja. Największą i jedną z najpopularniejszych baz jest FERET [2]. Składa się ona z ponad zdjęć, blisko osób. Efektem jej popularności jest przygotowanie wytycznych, w jaki sposób baza powinna zostać wykorzystana do oceny skuteczności algorytmu rozpoznawania osób [26]. Niestety, obecnie wersja bazy ze zdjęciami w skali szarości jest całkowicie niedostępna, zaś kolorowa wersja - udostępniana odpłatnie. Jako podstawę do testów wybrano inną popularną internetową bazę - ORL [9]. W jej skład wchodzi po 10 zdjęć 40 osób. Przedstawiają one twarze z niewielką ilością jednolitego tła, bez fragmentów sylwetki. Osoby w bazie są w różnym wieku, różnej płci i rasy, część z nich nosi okulary. Zestawy zdjęć dla większości osób w bazie charakteryzują się znaczną zmiennością pozy - rysunek 5.1(a) - lub wyrazu twarzy - rysunek 5.1(b). Te dwie cechy zdecydowanie zwięk-

48 42 5. Wyniki eksperymentów szają trudność zadania rozpoznawania osób z bazy. Z drugiej jednak strony zauważyć należy, że wszystkie zdjęcia w bazie zostały wykonane w bardzo dobrych warunkach oświetleniowych. Osoby są równomiernie oświetlone, na zdjęciach nie występuje zjawisko utraty szczegółów poprzez prześwietlenie lub niedoświetlenie. (a) Zestaw zdjęć dla osoby z bazy ORL - znaczna zmienność orientacji głowy. (b) Zestaw zdjęć dla osoby z bazy ORL - znaczna zmienność wyrazu twarzy. Rysunek 5.1 Zestawy zdjęć z bazy ORL. W trakcie badań uznano, że wartościowe byłoby przetestowanie zaimplementowanego systemu na większej bazie zdjęć, o różnorodnym pochodzeniu. Bazę rozbudowano do 92 osób, po 10 wzorców dla każdej z nich. Do 40 zdjęć z bazy ORL dodano po 24 komplety zdjęć z bazy MyBioID [7] i bazy tworzonej przez dr. Libora Spaceka [28] oraz 4 zestawy własne. W przypadku obydwu baz, zdjęcia zostały automatycznie wycięte z większych fotografii metodą opisaną w podsekcji Cechą charakterystyczną pierwszego wspomnianego zbioru jest duża zmienność oświetlenia pomiędzy zdjęciami - dla wielu osób w bazie wykonywane były one w różnym miejscu i czasie. Zdjęcia bywają również prześwietlone lub niedoświetlone, co zaobserwować można na przykładowym zestawie obrazów, przedstawionym na rysunku 5.2. Zmienność wyrazu twarzy i orientacji jest nieznacznie mniejsza niż w przypadku bazy ORL. Druga ze wspomnianych baz składa się ze zbioru 7900 zdjęć, 395 różnych osób. Są one podzielone na 4 grupy (faces94, faces95, faces96, grimace) o rosnącym stopniu trudności. 24 wybrane zestawy zdjęć pochodzą z dwóch ostatnich grup - ich cechami charakterystycznymi jest bardzo wzorzyste tło (faces96) oraz duża zmienność wyrazu twarzy (grimace). Dodatkowym utrudnieniem w rozpoznawaniu osób z tej bazy jest słabe doświetlenie wielu zdjęć (rysunek 5.3).

49 5.1. Badania na obrazach statycznych 43 Rysunek 5.2 Zbiór zdjęć dla osoby z bazy MyBioID. Rysunek 5.3 Zbiór zdjęć dla osoby z bazy grimace Wyniki badań Pierwszym przeprowadzonym testem było przebadanie wpływu liczby wymiarów SOM na skuteczność rozpoznawania osób w pierwszej i drugiej architekturze ICA. Celem eksperymentu było sprawdzenie czy korzyści z wielu aspektów podobieństwa kształtów, zapewniane przez sieci wielowymiarowe, przewyższają wady utraty ciągłości mapy podczas rzutowania wektora opisującego położenie w sieci na liczbę rzeczywistą. Jak wspomniano w rozdziale 3, rzutowanie to jest niezbędne dla dalszych etapów klasyfikacji. Warunki badań to: podpróbkowanie oknem 5x5, przesunięcie w pionie i poziomie równe 3, liczba niezależnych komponentów wyliczana metodą pierwszą, z dzielnikiem równym 7, brak korekcji oświetlenia. Wyniki testu przeprowadzonego na 40 osobach z bazy ORL przedstawia tabela 5.1, w której: CFG - numer pliku konfiguracyjnego użytego do przeprowadzenia eksperymentu, som_dim - wymiar sieci, nodes_per_dim - liczba węzłów w każdym z wymiarów, Skuteczność - procent poprawnych odpowiedzi, Czas - łączny czas trzech iteracji kroswalidacji. Analizując wyniki zauważyć należy, że skuteczność obydwu architektur ICA maleje wraz ze wzrostem liczby wymiarów sieci. Dla architektury pierwszej spadek ten jest mniej zauważalny

Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy

Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy Wykorzystane materiały: Zadanie W dalszej części prezentacji będzie omawiane zagadnienie rozpoznawania twarzy Problem ten można jednak uogólnić

Bardziej szczegółowo

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych Algorytmy decyzyjne będące alternatywą dla sieci neuronowych Piotr Dalka Przykładowe algorytmy decyzyjne Sztuczne sieci neuronowe Algorytm k najbliższych sąsiadów Kaskada klasyfikatorów AdaBoost Naiwny

Bardziej szczegółowo

METODY CHEMOMETRYCZNE W IDENTYFIKACJI ŹRÓDEŁ POCHODZENIA

METODY CHEMOMETRYCZNE W IDENTYFIKACJI ŹRÓDEŁ POCHODZENIA METODY CHEMOMETRYCZNE W IDENTYFIKACJI ŹRÓDEŁ POCHODZENIA AMFETAMINY Waldemar S. Krawczyk Centralne Laboratorium Kryminalistyczne Komendy Głównej Policji, Warszawa (praca obroniona na Wydziale Chemii Uniwersytetu

Bardziej szczegółowo

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych autor: Robert Drab opiekun naukowy: dr inż. Paweł Rotter 1. Wstęp Zagadnienie generowania trójwymiarowego

Bardziej szczegółowo

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor S O M SELF-ORGANIZING MAPS Przemysław Szczepańczyk Łukasz Myszor Podstawy teoretyczne Map Samoorganizujących się stworzył prof. Teuvo Kohonen (1982 r.). SOM wywodzi się ze sztucznych sieci neuronowych.

Bardziej szczegółowo

Analiza składowych głównych. Wprowadzenie

Analiza składowych głównych. Wprowadzenie Wprowadzenie jest techniką redukcji wymiaru. Składowe główne zostały po raz pierwszy zaproponowane przez Pearsona(1901), a następnie rozwinięte przez Hotellinga (1933). jest zaliczana do systemów uczących

Bardziej szczegółowo

Analiza składowych głównych

Analiza składowych głównych Analiza składowych głównych Wprowadzenie (1) W przypadku regresji naszym celem jest predykcja wartości zmiennej wyjściowej za pomocą zmiennych wejściowych, wykrycie związku między wielkościami wejściowymi

Bardziej szczegółowo

Wykrywanie twarzy na zdjęciach przy pomocy kaskad

Wykrywanie twarzy na zdjęciach przy pomocy kaskad Wykrywanie twarzy na zdjęciach przy pomocy kaskad Analiza i przetwarzanie obrazów Sebastian Lipnicki Informatyka Stosowana,WFIIS Spis treści 1. Wstęp... 3 2. Struktura i funkcjonalnośd... 4 3. Wyniki...

Bardziej szczegółowo

Implementacja filtru Canny ego

Implementacja filtru Canny ego ANALIZA I PRZETWARZANIE OBRAZÓW Implementacja filtru Canny ego Autor: Katarzyna Piotrowicz Kraków,2015-06-11 Spis treści 1. Wstęp... 1 2. Implementacja... 2 3. Przykłady... 3 Porównanie wykrytych krawędzi

Bardziej szczegółowo

Samochodowy system detekcji i rozpoznawania znaków drogowych. Sensory w budowie maszyn i pojazdów Maciej Śmigielski

Samochodowy system detekcji i rozpoznawania znaków drogowych. Sensory w budowie maszyn i pojazdów Maciej Śmigielski Samochodowy system detekcji i rozpoznawania znaków drogowych Sensory w budowie maszyn i pojazdów Maciej Śmigielski Rozpoznawanie obrazów Rozpoznawaniem obrazów możemy nazwać proces przetwarzania i analizowania

Bardziej szczegółowo

Analiza obrazów - sprawozdanie nr 2

Analiza obrazów - sprawozdanie nr 2 Analiza obrazów - sprawozdanie nr 2 Filtracja obrazów Filtracja obrazu polega na obliczeniu wartości każdego z punktów obrazu na podstawie punktów z jego otoczenia. Każdy sąsiedni piksel ma wagę, która

Bardziej szczegółowo

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe PB, 2009 2010 Sztuczna Inteligencja Tematy projektów Sieci Neuronowe Projekt 1 Stwórz projekt implementujący jednokierunkową sztuczną neuronową złożoną z neuronów typu sigmoidalnego z algorytmem uczenia

Bardziej szczegółowo

Politechnika Świętokrzyska. Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 8. Filtracja uśredniająca i statystyczna.

Politechnika Świętokrzyska. Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 8. Filtracja uśredniająca i statystyczna. Politechnika Świętokrzyska Laboratorium Cyfrowe przetwarzanie sygnałów Ćwiczenie 8 Filtracja uśredniająca i statystyczna. Cel ćwiczenia Celem ćwiczenia jest zdobycie umiejętności tworzenia i wykorzystywania

Bardziej szczegółowo

Diagnostyka obrazowa

Diagnostyka obrazowa Diagnostyka obrazowa Ćwiczenie drugie Podstawowe przekształcenia obrazu 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie uczestników kursu Diagnostyka obrazowa z podstawowymi przekształceniami obrazu wykonywanymi

Bardziej szczegółowo

Przetwarzanie obrazów wykład 4

Przetwarzanie obrazów wykład 4 Przetwarzanie obrazów wykład 4 Adam Wojciechowski Wykład opracowany na podstawie Komputerowa analiza i przetwarzanie obrazów R. Tadeusiewicz, P. Korohoda Filtry nieliniowe Filtry nieliniowe (kombinowane)

Bardziej szczegółowo

Przetwarzanie obrazów rastrowych macierzą konwolucji

Przetwarzanie obrazów rastrowych macierzą konwolucji Przetwarzanie obrazów rastrowych macierzą konwolucji 1 Wstęp Obrazy rastrowe są na ogół reprezentowane w dwuwymiarowych tablicach złożonych z pikseli, reprezentowanych przez liczby określające ich jasność

Bardziej szczegółowo

Systemy uczące się Lab 4

Systemy uczące się Lab 4 Systemy uczące się Lab 4 dr Przemysław Juszczuk Katedra Inżynierii Wiedzy, Uniwersytet Ekonomiczny 26 X 2018 Projekt zaliczeniowy Podstawą zaliczenia ćwiczeń jest indywidualne wykonanie projektu uwzględniającego

Bardziej szczegółowo

i ruchów użytkownika komputera za i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Promotor: dr Adrian Horzyk

i ruchów użytkownika komputera za i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Promotor: dr Adrian Horzyk System śledzenia oczu, twarzy i ruchów użytkownika komputera za pośrednictwem kamery internetowej i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Mirosław ł Słysz Promotor:

Bardziej szczegółowo

Ćwiczenie 6. Transformacje skali szarości obrazów

Ćwiczenie 6. Transformacje skali szarości obrazów Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 6. Transformacje skali szarości obrazów 1. Obraz cyfrowy Obraz w postaci cyfrowej

Bardziej szczegółowo

Przekształcenia widmowe Transformata Fouriera. Adam Wojciechowski

Przekształcenia widmowe Transformata Fouriera. Adam Wojciechowski Przekształcenia widmowe Transformata Fouriera Adam Wojciechowski Przekształcenia widmowe Odmiana przekształceń kontekstowych, w których kontekstem jest w zasadzie cały obraz. Za pomocą transformaty Fouriera

Bardziej szczegółowo

Proste metody przetwarzania obrazu

Proste metody przetwarzania obrazu Operacje na pikselach obrazu (operacje punktowe, bezkontekstowe) Operacje arytmetyczne Dodanie (odjęcie) do obrazu stałej 1 Mnożenie (dzielenie) obrazu przez stałą Operacje dodawania i mnożenia są operacjami

Bardziej szczegółowo

10. Redukcja wymiaru - metoda PCA

10. Redukcja wymiaru - metoda PCA Algorytmy rozpoznawania obrazów 10. Redukcja wymiaru - metoda PCA dr inż. Urszula Libal Politechnika Wrocławska 2015 1 1. PCA Analiza składowych głównych: w skrócie nazywana PCA (od ang. Principle Component

Bardziej szczegółowo

METODY INŻYNIERII WIEDZY KNOWLEDGE ENGINEERING AND DATA MINING

METODY INŻYNIERII WIEDZY KNOWLEDGE ENGINEERING AND DATA MINING METODY INŻYNIERII WIEDZY KNOWLEDGE ENGINEERING AND DATA MINING NEURONOWE MAPY SAMOORGANIZUJĄCE SIĘ Self-Organizing Maps SOM Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki,

Bardziej szczegółowo

ANALIZA SEMANTYCZNA OBRAZU I DŹWIĘKU

ANALIZA SEMANTYCZNA OBRAZU I DŹWIĘKU ANALIZA SEMANTYCZNA OBRAZU I DŹWIĘKU obraz dr inż. Jacek Naruniec Analiza Składowych Niezależnych (ICA) Independent Component Analysis Dąży do wyznaczenia zmiennych niezależnych z obserwacji Problem opiera

Bardziej szczegółowo

SYSTEMY UCZĄCE SIĘ WYKŁAD 10. PRZEKSZTAŁCANIE ATRYBUTÓW. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

SYSTEMY UCZĄCE SIĘ WYKŁAD 10. PRZEKSZTAŁCANIE ATRYBUTÓW. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska. SYSTEMY UCZĄCE SIĘ WYKŁAD 10. PRZEKSZTAŁCANIE ATRYBUTÓW Częstochowa 2014 Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska INFORMACJE WSTĘPNE Hipotezy do uczenia się lub tworzenia

Bardziej szczegółowo

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych Parametryzacja obrazu na potrzeby algorytmów decyzyjnych Piotr Dalka Wprowadzenie Z reguły nie stosuje się podawania na wejście algorytmów decyzyjnych bezpośrednio wartości pikseli obrazu Obraz jest przekształcany

Bardziej szczegółowo

Analiza korespondencji

Analiza korespondencji Analiza korespondencji Kiedy stosujemy? 2 W wielu badaniach mamy do czynienia ze zmiennymi jakościowymi (nominalne i porządkowe) typu np.: płeć, wykształcenie, status palenia. Punktem wyjścia do analizy

Bardziej szczegółowo

Metody systemowe i decyzyjne w informatyce

Metody systemowe i decyzyjne w informatyce Metody systemowe i decyzyjne w informatyce Laboratorium JAVA Zadanie nr 2 Rozpoznawanie liter autorzy: A. Gonczarek, J.M. Tomczak Cel zadania Celem zadania jest zapoznanie się z problemem klasyfikacji

Bardziej szczegółowo

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat BIBLIOTEKA PROGRAMU R - BIOPS Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat Biblioteka biops zawiera funkcje do analizy i przetwarzania obrazów. Operacje geometryczne (obrót, przesunięcie,

Bardziej szczegółowo

Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 9. Przetwarzanie sygnałów wizyjnych. Politechnika Świętokrzyska.

Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 9. Przetwarzanie sygnałów wizyjnych. Politechnika Świętokrzyska. Politechnika Świętokrzyska Laboratorium Cyfrowe przetwarzanie sygnałów Ćwiczenie 9 Przetwarzanie sygnałów wizyjnych. Cel ćwiczenia Celem ćwiczenia jest zapoznanie studentów z funkcjami pozwalającymi na

Bardziej szczegółowo

Spośród licznych filtrów nieliniowych najlepszymi właściwościami odznacza się filtr medianowy prosty i skuteczny.

Spośród licznych filtrów nieliniowych najlepszymi właściwościami odznacza się filtr medianowy prosty i skuteczny. Filtracja nieliniowa może być bardzo skuteczną metodą polepszania jakości obrazów Filtry nieliniowe Filtr medianowy Spośród licznych filtrów nieliniowych najlepszymi właściwościami odznacza się filtr medianowy

Bardziej szczegółowo

Elementy statystyki wielowymiarowej

Elementy statystyki wielowymiarowej Wnioskowanie_Statystyczne_-_wykład Spis treści 1 Elementy statystyki wielowymiarowej 1.1 Kowariancja i współczynnik korelacji 1.2 Macierz kowariancji 1.3 Dwumianowy rozkład normalny 1.4 Analiza składowych

Bardziej szczegółowo

Przekształcenia punktowe

Przekształcenia punktowe Przekształcenia punktowe Przekształcenia punktowe realizowane sa w taki sposób, że wymagane operacje wykonuje sie na poszczególnych pojedynczych punktach źródłowego obrazu, otrzymujac w efekcie pojedyncze

Bardziej szczegółowo

P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H

P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H W O J S K O W A A K A D E M I A T E C H N I C Z N A W Y D Z I A Ł E L E K T R O N I K I Drukować dwustronnie P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H Grupa... Data wykonania

Bardziej szczegółowo

Inteligentna analiza danych

Inteligentna analiza danych Numer indeksu 150946 Michał Moroz Imię i nazwisko Numer indeksu 150875 Grzegorz Graczyk Imię i nazwisko kierunek: Informatyka rok akademicki: 2010/2011 Inteligentna analiza danych Ćwiczenie I Wskaźniki

Bardziej szczegółowo

Monitorowanie i Diagnostyka w Systemach Sterowania na studiach II stopnia specjalności: Systemy Sterowania i Podejmowania Decyzji

Monitorowanie i Diagnostyka w Systemach Sterowania na studiach II stopnia specjalności: Systemy Sterowania i Podejmowania Decyzji Monitorowanie i Diagnostyka w Systemach Sterowania na studiach II stopnia specjalności: Systemy Sterowania i Podejmowania Decyzji Analiza składników podstawowych - wprowadzenie (Principal Components Analysis

Bardziej szczegółowo

Elementy modelowania matematycznego

Elementy modelowania matematycznego Elementy modelowania matematycznego Modelowanie algorytmów klasyfikujących. Podejście probabilistyczne. Naiwny klasyfikator bayesowski. Modelowanie danych metodą najbliższych sąsiadów. Jakub Wróblewski

Bardziej szczegółowo

Sztuczne sieci neuronowe. Krzysztof A. Cyran POLITECHNIKA ŚLĄSKA Instytut Informatyki, p. 335

Sztuczne sieci neuronowe. Krzysztof A. Cyran POLITECHNIKA ŚLĄSKA Instytut Informatyki, p. 335 Sztuczne sieci neuronowe Krzysztof A. Cyran POLITECHNIKA ŚLĄSKA Instytut Informatyki, p. 335 Wykład 10 Mapa cech Kohonena i jej modyfikacje - uczenie sieci samoorganizujących się - kwantowanie wektorowe

Bardziej szczegółowo

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 8 AiR III

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 8 AiR III 1 Niniejszy dokument zawiera materiały do wykładu z przedmiotu Cyfrowe Przetwarzanie Obrazów i Sygnałów. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może

Bardziej szczegółowo

Analiza obrazów. Segmentacja i indeksacja obiektów

Analiza obrazów. Segmentacja i indeksacja obiektów Analiza obrazów. Segmentacja i indeksacja obiektów Wykorzystane materiały: R. Tadeusiewicz, P. Korohoda, Komputerowa analiza i przetwarzanie obrazów, Wyd. FPT, Kraków, 1997 Analiza obrazu Analiza obrazu

Bardziej szczegółowo

5. Analiza dyskryminacyjna: FLD, LDA, QDA

5. Analiza dyskryminacyjna: FLD, LDA, QDA Algorytmy rozpoznawania obrazów 5. Analiza dyskryminacyjna: FLD, LDA, QDA dr inż. Urszula Libal Politechnika Wrocławska 2015 1 1. Liniowe funkcje dyskryminacyjne Liniowe funkcje dyskryminacyjne mają ogólną

Bardziej szczegółowo

Klasyfikacja LDA + walidacja

Klasyfikacja LDA + walidacja Klasyfikacja LDA + walidacja Dr hab. Izabela Rejer Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Plan wykładu 1. Klasyfikator 2. LDA 3. Klasyfikacja wieloklasowa 4. Walidacja

Bardziej szczegółowo

Zastosowanie stereowizji do śledzenia trajektorii obiektów w przestrzeni 3D

Zastosowanie stereowizji do śledzenia trajektorii obiektów w przestrzeni 3D Zastosowanie stereowizji do śledzenia trajektorii obiektów w przestrzeni 3D autorzy: Michał Dajda, Łojek Grzegorz opiekun naukowy: dr inż. Paweł Rotter I. O projekcie. 1. Celem projektu było stworzenie

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa. Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa. Maja Czoków, Jarosław Piersa, Andrzej Rutkowski Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2018-10-15 Projekt

Bardziej szczegółowo

Aproksymacja funkcji a regresja symboliczna

Aproksymacja funkcji a regresja symboliczna Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą

Bardziej szczegółowo

Analiza głównych składowych- redukcja wymiaru, wykł. 12

Analiza głównych składowych- redukcja wymiaru, wykł. 12 Analiza głównych składowych- redukcja wymiaru, wykł. 12 Joanna Jędrzejowicz Instytut Informatyki Konieczność redukcji wymiaru w eksploracji danych bazy danych spotykane w zadaniach eksploracji danych mają

Bardziej szczegółowo

Klasyfikator liniowy Wstęp Klasyfikator liniowy jest najprostszym możliwym klasyfikatorem. Zakłada on liniową separację liniowy podział dwóch klas między sobą. Przedstawia to poniższy rysunek: 5 4 3 2

Bardziej szczegółowo

Co to jest grupowanie

Co to jest grupowanie Grupowanie danych Co to jest grupowanie 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Szukanie grup, obszarów stanowiących lokalne gromady punktów Co to jest grupowanie

Bardziej szczegółowo

Pattern Classification

Pattern Classification Pattern Classification All materials in these slides were taken from Pattern Classification (2nd ed) by R. O. Duda, P. E. Hart and D. G. Stork, John Wiley & Sons, 2000 with the permission of the authors

Bardziej szczegółowo

Algorytmy klasteryzacji jako metoda dyskretyzacji w algorytmach eksploracji danych. Łukasz Przybyłek, Jakub Niwa Studenckie Koło Naukowe BRAINS

Algorytmy klasteryzacji jako metoda dyskretyzacji w algorytmach eksploracji danych. Łukasz Przybyłek, Jakub Niwa Studenckie Koło Naukowe BRAINS Algorytmy klasteryzacji jako metoda dyskretyzacji w algorytmach eksploracji danych Łukasz Przybyłek, Jakub Niwa Studenckie Koło Naukowe BRAINS Dyskretyzacja - definicja Dyskretyzacja - zamiana atrybutów

Bardziej szczegółowo

ALGORYTMY SZTUCZNEJ INTELIGENCJI

ALGORYTMY SZTUCZNEJ INTELIGENCJI ALGORYTMY SZTUCZNEJ INTELIGENCJI Sieci neuronowe 06.12.2014 Krzysztof Salamon 1 Wstęp Sprawozdanie to dotyczy ćwiczeń z zakresu sieci neuronowych realizowanym na przedmiocie: Algorytmy Sztucznej Inteligencji.

Bardziej szczegółowo

W kolejnym kroku należy ustalić liczbę przedziałów k. W tym celu należy wykorzystać jeden ze wzorów:

W kolejnym kroku należy ustalić liczbę przedziałów k. W tym celu należy wykorzystać jeden ze wzorów: Na dzisiejszym wykładzie omówimy najważniejsze charakterystyki liczbowe występujące w statystyce opisowej. Poszczególne wzory będziemy podawać w miarę potrzeby w trzech postaciach: dla szeregu szczegółowego,

Bardziej szczegółowo

Lekcja 5: Sieć Kohonena i sieć ART

Lekcja 5: Sieć Kohonena i sieć ART Lekcja 5: Sieć Kohonena i sieć ART S. Hoa Nguyen 1 Materiał Sieci Kohonena (Sieć samo-organizująca) Rysunek 1: Sieć Kohonena Charakterystyka sieci: Jednowarstwowa jednokierunkowa sieć. Na ogół neurony

Bardziej szczegółowo

Operacje przetwarzania obrazów monochromatycznych

Operacje przetwarzania obrazów monochromatycznych Operacje przetwarzania obrazów monochromatycznych Obraz pobrany z kamery lub aparatu często wymaga dalszej obróbki. Jej celem jest poprawienie jego jakości lub uzyskaniem na jego podstawie określonych

Bardziej szczegółowo

AUTOMATYCZNE ROZPOZNAWANIE PUNKTÓW KONTROLNYCH GŁOWY SŁUŻĄCYCH DO 3D MODELOWANIA JEJ ANATOMII I DYNAMIKI

AUTOMATYCZNE ROZPOZNAWANIE PUNKTÓW KONTROLNYCH GŁOWY SŁUŻĄCYCH DO 3D MODELOWANIA JEJ ANATOMII I DYNAMIKI AUTOMATYCZNE ROZPOZNAWANIE PUNKTÓW KONTROLNYCH GŁOWY SŁUŻĄCYCH DO 3D MODELOWANIA JEJ ANATOMII I DYNAMIKI Tomasz Huczek Promotor: dr Adrian Horzyk Cel pracy Zasadniczym celem pracy było stworzenie systemu

Bardziej szczegółowo

Przetwarzanie obrazu

Przetwarzanie obrazu Przetwarzanie obrazu Przekształcenia kontekstowe Liniowe Nieliniowe - filtry Przekształcenia kontekstowe dokonują transformacji poziomów jasności pikseli analizując za każdym razem nie tylko jasność danego

Bardziej szczegółowo

Algorytmy metaheurystyczne Wykład 11. Piotr Syga

Algorytmy metaheurystyczne Wykład 11. Piotr Syga Algorytmy metaheurystyczne Wykład 11 Piotr Syga 22.05.2017 Drzewa decyzyjne Idea Cel Na podstawie przesłanek (typowo zbiory rozmyte) oraz zbioru wartości w danych testowych, w oparciu o wybrane miary,

Bardziej szczegółowo

Filtracja obrazu operacje kontekstowe

Filtracja obrazu operacje kontekstowe Filtracja obrazu operacje kontekstowe Główne zadania filtracji Usunięcie niepożądanego szumu z obrazu Poprawa ostrości Usunięcie określonych wad obrazu Poprawa obrazu o złej jakości technicznej Rekonstrukcja

Bardziej szczegółowo

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych inż. Marek Duczkowski Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych słowa kluczowe: algorytm gradientowy, optymalizacja, określanie wodnicy W artykule

Bardziej szczegółowo

Hierarchiczna analiza skupień

Hierarchiczna analiza skupień Hierarchiczna analiza skupień Cel analizy Analiza skupień ma na celu wykrycie w zbiorze obserwacji klastrów, czyli rozłącznych podzbiorów obserwacji, wewnątrz których obserwacje są sobie w jakimś określonym

Bardziej szczegółowo

Analiza danych z nowej aparatury detekcyjnej "Pi of the Sky"

Analiza danych z nowej aparatury detekcyjnej Pi of the Sky Uniwersytet Warszawski Wydział Fizyki Bartłomiej Włodarczyk Nr albumu: 306849 Analiza danych z nowej aparatury detekcyjnej "Pi of the Sky" Praca przygotowana w ramach Pracowni Fizycznej II-go stopnia pod

Bardziej szczegółowo

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu - metodologia badań

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu - metodologia badań Raport 1/2015 Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu - metodologia badań autor: Michał Osmoła INIME Instytut nauk informatycznych i matematycznych z zastosowaniem

Bardziej szczegółowo

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa SIMR 06/07, Analiza, wykład, 07-0- Przestrzeń wektorowa Przestrzeń wektorowa (liniowa) - przestrzeń (zbiór) w której określone są działania (funkcje) dodawania elementów i mnożenia elementów przez liczbę

Bardziej szczegółowo

Obliczenia inteligentne Zadanie 4

Obliczenia inteligentne Zadanie 4 Sieci SOM Poniedziałek, 10:15 2007/2008 Krzysztof Szcześniak Cel Celem zadania jest zaimplementowanie neuronowej samoorganizującej się mapy wraz z metodą jej nauczania algorytmem gazu neuronowego. Część

Bardziej szczegółowo

Filtracja obrazu operacje kontekstowe

Filtracja obrazu operacje kontekstowe Filtracja obrazu operacje kontekstowe Podział metod filtracji obrazu Metody przestrzenne i częstotliwościowe Metody liniowe i nieliniowe Główne zadania filtracji Usunięcie niepożądanego szumu z obrazu

Bardziej szczegółowo

Metody Sztucznej Inteligencji II

Metody Sztucznej Inteligencji II 17 marca 2013 Neuron biologiczny Neuron Jest podstawowym budulcem układu nerwowego. Jest komórką, która jest w stanie odbierać i przekazywać sygnały elektryczne. Neuron działanie Jeżeli wartość sygnału

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 07 Uczenie nienadzorowane.

Wstęp do sieci neuronowych, wykład 07 Uczenie nienadzorowane. Wstęp do sieci neuronowych, wykład 7. M. Czoków, J. Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika w Toruniu 212-11-28 Projekt pn. Wzmocnienie potencjału dydaktycznego UMK w Toruniu

Bardziej szczegółowo

Operator rozciągania. Obliczyć obraz q i jego histogram dla p 1 =4, p 2 =8; Operator redukcji poziomów szarości

Operator rozciągania. Obliczyć obraz q i jego histogram dla p 1 =4, p 2 =8; Operator redukcji poziomów szarości Operator rozciągania q = 15 ( p p1 ) ( p p ) 0 2 1 dla p < p p 1 2 dla p p, p > p 1 2 Obliczyć obraz q i jego histogram dla p 1 =4, p 2 =8; Operator redukcji poziomów szarości q = 0 dla p p1 q2 dla p1

Bardziej szczegółowo

Klasyfikatory: k-nn oraz naiwny Bayesa. Agnieszka Nowak Brzezińska Wykład IV

Klasyfikatory: k-nn oraz naiwny Bayesa. Agnieszka Nowak Brzezińska Wykład IV Klasyfikatory: k-nn oraz naiwny Bayesa Agnieszka Nowak Brzezińska Wykład IV Naiwny klasyfikator Bayesa Naiwny klasyfikator bayesowski jest prostym probabilistycznym klasyfikatorem. Zakłada się wzajemną

Bardziej szczegółowo

Rozpoznawanie twarzy za pomocą sieci neuronowych

Rozpoznawanie twarzy za pomocą sieci neuronowych Rozpoznawanie twarzy za pomocą sieci neuronowych Michał Bereta http://torus.uck.pk.edu.pl/~beretam Praktyczna przydatność Bardzo szerokie praktyczne zastosowanie Ochrona Systemy bezpieczeństwa (np. lotniska)

Bardziej szczegółowo

WYKRESY SPORZĄDZANE W UKŁADZIE WSPÓŁRZĘDNYCH:

WYKRESY SPORZĄDZANE W UKŁADZIE WSPÓŁRZĘDNYCH: WYKRESY SPORZĄDZANE W UKŁADZIE WSPÓŁRZĘDNYCH: Zasada podstawowa: Wykorzystujemy możliwie najmniej skomplikowaną formę wykresu, jeżeli to możliwe unikamy wykresów 3D (zaciemnianie treści), uwaga na kolory

Bardziej szczegółowo

Analiza skupień. Analiza Skupień W sztucznej inteligencji istotną rolę ogrywają algorytmy grupowania

Analiza skupień. Analiza Skupień W sztucznej inteligencji istotną rolę ogrywają algorytmy grupowania Analiza skupień W sztucznej inteligencji istotną rolę ogrywają algorytmy grupowania Analiza Skupień Elementy składowe procesu grupowania obiekt Ekstrakcja cech Sprzężenie zwrotne Grupowanie klastry Reprezentacja

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa. Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa. Maja Czoków, Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2011-10-11 1 Modelowanie funkcji logicznych

Bardziej szczegółowo

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 3 AiR III

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 3 AiR III 1 Niniejszy dokument zawiera materiały do wykładu z przedmiotu Cyfrowe Przetwarzanie Obrazów i Sygnałów. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może

Bardziej szczegółowo

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG Kodowanie transformacyjne Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG Zasada Zasada podstawowa: na danych wykonujemy transformacje która: Likwiduje korelacje Skupia energię w kilku komponentach

Bardziej szczegółowo

W poszukiwaniu sensu w świecie widzialnym

W poszukiwaniu sensu w świecie widzialnym W poszukiwaniu sensu w świecie widzialnym Andrzej Śluzek Nanyang Technological University Singapore Uniwersytet Mikołaja Kopernika Toruń AGH, Kraków, 28 maja 2010 1 Podziękowania Przedstawione wyniki powstały

Bardziej szczegółowo

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu dla odczytu Australia Employment Change

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu dla odczytu Australia Employment Change Raport 4/2015 Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu dla odczytu Australia Employment Change autor: Michał Osmoła INIME Instytut nauk informatycznych i matematycznych

Bardziej szczegółowo

Zmienne zależne i niezależne

Zmienne zależne i niezależne Analiza kanoniczna Motywacja (1) 2 Często w badaniach spotykamy problemy badawcze, w których szukamy zakresu i kierunku zależności pomiędzy zbiorami zmiennych: { X i Jak oceniać takie 1, X 2,..., X p }

Bardziej szczegółowo

Elementy inteligencji obliczeniowej

Elementy inteligencji obliczeniowej Elementy inteligencji obliczeniowej Paweł Liskowski Institute of Computing Science, Poznań University of Technology 9 October 2018 1 / 19 Perceptron Perceptron (Rosenblatt, 1957) to najprostsza forma sztucznego

Bardziej szczegółowo

Akademia Górniczo - Hutnicza im. Stanisława Staszica w Krakowie. Projekt. z przedmiotu Analiza i Przetwarzanie Obrazów

Akademia Górniczo - Hutnicza im. Stanisława Staszica w Krakowie. Projekt. z przedmiotu Analiza i Przetwarzanie Obrazów 30 czerwca 2015 Akademia Górniczo - Hutnicza im. Stanisława Staszica w Krakowie Projekt z przedmiotu Analiza i Przetwarzanie Obrazów Wykrywanie tablic rejestracyjnych Jagieła Michał IS (GKiPO) Michał Jagieła

Bardziej szczegółowo

Przykładowa analiza danych

Przykładowa analiza danych Przykładowa analiza danych W analizie wykorzystano dane pochodzące z publicznego repozytorium ArrayExpress udostępnionego na stronach Europejskiego Instytutu Bioinformatyki (http://www.ebi.ac.uk/). Zbiór

Bardziej szczegółowo

Weryfikacja hipotez statystycznych

Weryfikacja hipotez statystycznych Weryfikacja hipotez statystycznych Hipoteza Test statystyczny Poziom istotności Testy jednostronne i dwustronne Testowanie równości wariancji test F-Fishera Testowanie równości wartości średnich test t-studenta

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka Adaline.

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka Adaline. Wstęp do sieci neuronowych, wykład 3 Warstwy, jednostka Adaline. Maja Czoków, Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 211-1-18 1 Pomysł Przykłady Zastosowanie 2

Bardziej szczegółowo

Problematyka budowy skanera 3D doświadczenia własne

Problematyka budowy skanera 3D doświadczenia własne Problematyka budowy skanera 3D doświadczenia własne dr inż. Ireneusz Wróbel ATH Bielsko-Biała, Evatronix S.A. iwrobel@ath.bielsko.pl mgr inż. Paweł Harężlak mgr inż. Michał Bogusz Evatronix S.A. Plan wykładu

Bardziej szczegółowo

Maciej Piotr Jankowski

Maciej Piotr Jankowski Reduced Adder Graph Implementacja algorytmu RAG Maciej Piotr Jankowski 2005.12.22 Maciej Piotr Jankowski 1 Plan prezentacji 1. Wstęp 2. Implementacja 3. Usprawnienia optymalizacyjne 3.1. Tablica ekspansji

Bardziej szczegółowo

Metody systemowe i decyzyjne w informatyce

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

Bardziej szczegółowo

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych. Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(), zwaną funkcją aproksymującą

Bardziej szczegółowo

1 Układy równań liniowych

1 Układy równań liniowych II Metoda Gaussa-Jordana Na wykładzie zajmujemy się układami równań liniowych, pojawi się też po raz pierwszy macierz Formalną (i porządną) teorią macierzy zajmiemy się na kolejnych wykładach Na razie

Bardziej szczegółowo

Agnieszka Nowak Brzezińska Wykład III

Agnieszka Nowak Brzezińska Wykład III Agnieszka Nowak Brzezińska Wykład III Naiwny klasyfikator bayesowski jest prostym probabilistycznym klasyfikatorem. Zakłada się wzajemną niezależność zmiennych niezależnych (tu naiwność) Bardziej opisowe

Bardziej szczegółowo

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Kompresja danych Streszczenie Studia Dzienne Wykład 10, 1 Kwantyzacja wektorowa Kompresja danych Streszczenie Studia Dzienne Wykład 10, 28.04.2006 Kwantyzacja wektorowa: dane dzielone na bloki (wektory), każdy blok kwantyzowany jako jeden element danych. Ogólny

Bardziej szczegółowo

Laboratorium Optyki Falowej

Laboratorium Optyki Falowej Marzec 2019 Laboratorium Optyki Falowej Instrukcja do ćwiczenia pt: Filtracja optyczna Opracował: dr hab. Jan Masajada Tematyka (Zagadnienia, które należy znać przed wykonaniem ćwiczenia): 1. Obraz fourierowski

Bardziej szczegółowo

Spis treści. Przedmowa... XI. Rozdział 1. Pomiar: jednostki miar... 1. Rozdział 2. Pomiar: liczby i obliczenia liczbowe... 16

Spis treści. Przedmowa... XI. Rozdział 1. Pomiar: jednostki miar... 1. Rozdział 2. Pomiar: liczby i obliczenia liczbowe... 16 Spis treści Przedmowa.......................... XI Rozdział 1. Pomiar: jednostki miar................. 1 1.1. Wielkości fizyczne i pozafizyczne.................. 1 1.2. Spójne układy miar. Układ SI i jego

Bardziej szczegółowo

Programowanie celowe #1

Programowanie celowe #1 Programowanie celowe #1 Problem programowania celowego (PC) jest przykładem problemu programowania matematycznego nieliniowego, który można skutecznie zlinearyzować, tzn. zapisać (i rozwiązać) jako problem

Bardziej szczegółowo

Sieci Kohonena Grupowanie

Sieci Kohonena Grupowanie Sieci Kohonena Grupowanie http://zajecia.jakubw.pl/nai UCZENIE SIĘ BEZ NADZORU Załóżmy, że mamy za zadanie pogrupować następujące słowa: cup, roulette, unbelievable, cut, put, launderette, loveable Nie

Bardziej szczegółowo

Obliczenia iteracyjne

Obliczenia iteracyjne Lekcja Strona z Obliczenia iteracyjne Zmienne iteracyjne (wyliczeniowe) Obliczenia iteracyjne wymagają zdefiniowania specjalnej zmiennej nazywanej iteracyjną lub wyliczeniową. Zmienną iteracyjną od zwykłej

Bardziej szczegółowo

Klasyfikacja w oparciu o metrykę budowaną poprzez dystrybuanty empiryczne na przestrzeni wzorców uczących

Klasyfikacja w oparciu o metrykę budowaną poprzez dystrybuanty empiryczne na przestrzeni wzorców uczących Klasyfikacja w oparciu o metrykę budowaną poprzez dystrybuanty empiryczne na przestrzeni wzorców uczących Cezary Dendek Wydział Matematyki i Nauk Informacyjnych PW Plan prezentacji Plan prezentacji Wprowadzenie

Bardziej szczegółowo

WYKŁAD 9 METODY ZMIENNEJ METRYKI

WYKŁAD 9 METODY ZMIENNEJ METRYKI WYKŁAD 9 METODY ZMIENNEJ METRYKI Kierunki sprzężone. Metoda Newtona Raphsona daje dobre przybliżenie najlepszego kierunku poszukiwań, lecz jest to okupione znacznym kosztem obliczeniowym zwykle postać

Bardziej szczegółowo

Agnieszka Nowak Brzezińska

Agnieszka Nowak Brzezińska Agnieszka Nowak Brzezińska jeden z algorytmów regresji nieparametrycznej używanych w statystyce do prognozowania wartości pewnej zmiennej losowej. Może również byd używany do klasyfikacji. - Założenia

Bardziej szczegółowo

POB Odpowiedzi na pytania

POB Odpowiedzi na pytania POB Odpowiedzi na pytania 1.) Na czym polega próbkowanie a na czym kwantyzacja w procesie akwizycji obrazu, jakiemu rodzajowi rozdzielczości odpowiada próbkowanie a jakiemu kwantyzacja Próbkowanie inaczej

Bardziej szczegółowo

1.7. Eksploracja danych: pogłębianie, przeszukiwanie i wyławianie

1.7. Eksploracja danych: pogłębianie, przeszukiwanie i wyławianie Wykaz tabel Wykaz rysunków Przedmowa 1. Wprowadzenie 1.1. Wprowadzenie do eksploracji danych 1.2. Natura zbiorów danych 1.3. Rodzaje struktur: modele i wzorce 1.4. Zadania eksploracji danych 1.5. Komponenty

Bardziej szczegółowo