Wykorzystanie systemu GPVIS do rozpoznawania twarzy

Wykonawcy: inż. Tomasz Bruzda, inż. Jacek Woźniak
Konsultacja: dr inż. Krzysztof Krawiec Projekt wykonany w ramach laboratorium przedmiotu Rozpoznawanie Obrazów
Zakład Inteligentnych Systemów Wspomagania Decyzji
Instytut Informatyki
Politechnika Poznańska

1. Wstęp

Celem projektu było stworzenie aplikacji do rozpoznawania twarzy. W tym celu został wykorzystany system GPVIS, który umożliwił rozwiązanie problemu przy pomocy algorytmu programowania genetycznego – system na podstawie stworzonej gramatyki generował kolejne rozwiązania ( osobniki będące drzewami operatorów ), które podlegały ocenie ze względu na trafność decyzji na zbiorze uczącym.

2. Przebieg procesu uczenia

System GPVIS został stworzony do przeprowadzania kolejnych testów na pojedynczych obrazach, natomiast w problemie rozpoznawania twarzy realizowana jest identyfikacja osób, a więc porównania otrzymanych zdjęć z osobami zapamiętanymi w bazie danych ( w postaci ich zdjęć lub też opisu w innej formie ). Aby zminimalizować liczbę zmian w systemie GPVIS postanowiliśmy na każdym obrazie umieścić obok siebie zdjęcia dwóch osób, natomiast zadaniem testowanych osobników było ustalenie, czy jest to ta sama osoba, czy też inna.

a ) gramatyka

Pierwszym krokiem było stworzenie odpowiedniej gramatyki ( i operatorów ), odpowiadającej rozwiązanie opisywanego problemu. Została ona zdefiniowana w następujący sposób :

tbool mlog : Cmpop numexp num2
| Cmpop numexp numexp PREFER
| Or mlog mlog
| And mlog mlog
;

t Cmpop : < | > ;
t And : and ;
t Or : or ;

tfloat numexp : Arop numexp numexp
| Croi2num roi PREFER
;

t Arop : + | - ;


tconst num2 : Num ;

t Num : num ;

t Croi2num : avg ;

troi roi : LRoiFromNum num2 num2 num2 num2
| RRoiFromNum num2 num2 num2 num2
;

t LRoiFromNum : labsRoiN ;
t RRoiFromNum : rabsRoiN ;

Wynikiem działania osobnika populacji na obrazie zawierającym zdjęcia dwóch osób jest wartość logiczna będąca decyzją, czy na obrazie umieszczono zdjęcia tej samej osoby, czy też są to zdjęcia różnych osób. Operatorami logicznymi są operatory porównania oraz operacji < i >, wszystkie one działają na stałych liczbowych lub liczbach będących wynikiem działania na obrazie. Zdefiniowany został tylko jeden operator na obrazie - wyciąganie średniej z prostokąta. Prostokąt jest tworzony za pomocą jednego z dwóch operatorów (labsRoiN i rabsRoiN), odwołujących się odpowiednio do lewego i prawego zdjęcia umieszczonego na obrazie. Jako parametry podawane są cztery liczby, będące procentowymi odchyleniami od środka obrazu w poziomie i w pionie pomnożonymi przez 10.

Zarówno wynik działania na obrazie jak i parametr operatora tworzenia prostokąta są liczbami całkowitymi, jednak są one zdefiniowane jako różne typy, co ma zapobiec podmienianiu współrzędnych prostokąta wynikami działania do obrazie – prowadziło to do dużych spadków trafności klasyfikacji na zbiorze testującym. Cała gramatyka została ograniczona jedynie do niezbędnych operatorów, co ma zapewnić odpowiednie ukierunkowanie – eliminuje ona możliwość powstania bezsensownych konstrukcji w generowanych osobnikach.

b ) ocenianie osobników

Podczas oceniania wartość osobnika jest zmieniana na podstawie trafności podjętych decyzji. Każdorazowy test na obrazie modyfikuje wartość oceniającego go osobnika zgodnie z wartościami przedstawionymi w poniższej tabeli :

decyzja: różne osoby decyzja : „ta sama osoba"
różne osoby 2.0 -1.0
ta sama osoba -2.0 1.0

Wartości w powyższej tabeli zostały tak dobrane, aby spełniać następujące warunki :

3. Modyfikacje w systemie GPVIS

4. Opis programu imgmix

W celu stworzenia zbioru uczącego lub testującego należy przygotować zbiór zdjęć twarzy różnych osób nazwanych wg schematu identyfikator_osoby.numer.png. Wszystkie zdjęcia powinny mieć ten sam rozmiar i kolor w postaci 256 odcieni szarości.

Program łączy poszczególne pary zdjęć w jeden obraz, w którym zdjęcia zostają umieszczone obok siebie. Plikowi wyjściowemu w formacie png zostaje nadana nazwa wg schematu id_osoby1.nr1.id_osoby2.nr2-klasa.png, gdzie klasa to 1 lub 0 w zależności od tego, czy jest to ta sama osoba czy też nie.

Program imgmix wczytuje z aktualnego plik konfiguracyjny imgmix.cfg, w którym zawarte są informacje o sposobie działania programu. Linie komentarza zaczynają się od znaku #, natomiast linie zawierające słowa kluczowe od znaku @.

Poniżej zamieszczamy opis słów kluczowych pliku imgmix.cfg :

Istnieją dwie wersje programu łączącego obrazy – imgmix oraz imgmixb. Druga wersja nie sprawdza, czy z dostarczonego przez użytkownika zbioru zdjęć wejściowych da się wygenerować żądaną przez niego liczbę obrazów, przez co działa szybciej dla większych zbiorów, jednak zakłada poprawność parametrów podanych przez użytkownika.

W celu stworzenia zbioru uczącego należy odpowiednio zmodyfikować plik konfiguracyjny ustawiając parametr mode na random, imgcount na żądany rozmiar klasy, imgtype na equal, wygenerować obrazy, zmienić imgtype na diff i wygenerować drugą z klas decyzyjnych.

5. Przykładowe wyniki

Po zaimplementowaniu metody testującej rozwiązania przeprowadziliśmy dwa testy. Obrazy wejściowe miały rozmiary 40x20.

Do pierwszego z testów użyliśmy bazy twarzy grimface. Liczność każdej klasy w zbiorze uczącym wynosiła 200, w zbiorze testującym – 1000. Wielkość populacji ustaliliśmy na 200 osobników, a liczbę iteracji algorytmu genetycznego na 150. Otrzymaliśmy następujące wyniki :

Evaluation (0) on training set:
Acc: 0.843 Total: 446
191 32
38 185
Decision credibility: 0.834 0.853
Evaluation (0) on test set:
Acc: 0.755 Total: 2000
792 208
282 718
Decision credibility: 0.737 0.775
BEST OVERALL SOLUTION:
Evaluation on training set:1.715
Evaluation on test set:1.275

Na poniższym wykresie przedstawiamy jak zmieniała się ocena populacji w kolejnych iteracjach eksperymentu : Ocena najlepszego osobnika zwiększała się od 60-tej iteraracji w miarę jednostajnie aż do końca eksperymentu. Do drugiego z testów użyliśmy bazy twarzy faces94. Liczność każdej klasy w zbiorze uczącym wynosiła 200, w zbiorze testującym – 1000. Wielkość populacji ustaliliśmy na 200 osobników, a liczbę iteracji algorytmu genetycznego na 50. Otrzymaliśmy następujące wyniki :

Evaluation (0) on training set:
Acc: 0.845 Total: 400
174 26
36 164
Decision credibility: 0.829 0.863
Evaluation (0) on test set:
Acc: 0.802 Total: 2000
827 173
222 778
Decision credibility: 0.788 0.818
BEST OVERALL SOLUTION:
Evaluation on training set:1.725
Evaluation on test set:1.513

Na poniższym wykresie przedstawiamy jak zmieniała się ocena populacji w kolejnych iteracjach eksperymentu : Baza użyta w tym eksperymencie wydaje się prostsza do opanowania przez system. Dobry wynik został uzyskany już w iteracji 30-tej.

6. Uwagi

W obecnej postaci system nie sprawdza, czy osoba przedstawiona na dostarczonym mu nowym zdjęciu istnieje już w bazie danych, jednak proces ten przebiegałby tak, że należałoby łączyć nowe zdjęcie ze zdjęciami osób z bazy danych i przeprowadzić fazę testowania. W celu poprawy wyników można by było zagregować wyniki wygenerowane przez kilka osobników uzyskanych w różnych procesach uczenia.

Przedstawiona tu gramatyka jest bardzo prosta. Isnieje wiele możliwości jej rozszerzenia, np. dodanie operatorów działających na tym samym obszarze na lewym i prawym zdjęciu jednocześnie lub zastąpienie operatora wyciągania średniej operatorem wyliczającym odchylenie od średniej wartości w obszarze lub zdjęciu.