Raport z projektu: Detekcja twarzy na fotografiach grupowych

Autor: Rafał Gierczak, 148496
Data: 25 czerwca 2009
Raport z projektu: Metody i Algorytmy Sztucznej Inteligencji

Strzeszczenie:

Raport opisuje podstawowe metody wykrywania twarzy na fotografiach. W dziale testów, porownywane są wyniki działania dwóch różnych algorytmów, na próbie składającej się zarówno z plenerowych zdjęć grupowych, jak i specjalnie spreparowanych zdjęć zawierających twarz skierowana pod różymi kątami. Pierwszy algorytm (Rank-Deficient Faces - rezultaty pracy w czerwonych kwadratach) został napisany przez zespół z Instytutu Maxa Plancka: Wolf Kienzle, Gökhan BakIr oraz Matthias Franz, natomist drugi (local Successive Mean Quantization Transform (SMQT) - zielone kwadraty) został stworzony przez Mikaela Nilssona z Blekinge Institute of Technology.
Autorzy wyrazili zgodę na niekompercyjne wykorzystanie swojej pracy.


Project Report: Human face detection on group photographs

Author: Rafał Gierczak, 148496
Date: June 25th, 2009
This report has been prepared for the needs of a course: Methods and Algorithms of Artificial Intelligence

Abstract:

The following report discuss the basic methods of human face detection on photographs. In the tests chapter, there is a comparison of two different face-detection algorithms on a sample set of group photos taken outside and a sample set of prepared photos containing faces directed in different angles. The first algorith (Rank-Deficient Faces - results in red squares) was written by a team from Max Planck Institute: Wolf Kienzle, Gökhan BakIr oraz Matthias Franz, the second algorithm (local Successive Mean Quantization Transform (SMQT)) is a work done by Mikael Nilsson from Blekinge Institute of Technology.
All authors agreed for a non-commercial use of their work.

1. Wstęp - Opis problemu

Wykrywanie twarzy, tak jak rozpoznawanie wszelkich innych charakterystycznych obiektów znacząco zyskuje na znaczeniu w czasach automatyzacji oraz gwałtownego rozwoju sztucznej inteligencji. Wykrywanie twarzy znajduje zastosowanie w wielu dziedzinach, aktualnie nauka idzie nawet krok dalej, próbując stworzyć dobry algorytm rozpoznający czyja twarz została wykryta ale to już o wiele bardziej skomplikowany problem.
Wykrycie twarzy na zdjęciu, na którym nie ma żadnego innego obiektu jest zadaniem trywialnym, praktycznie w każdym przypadku wystąpił pewne podobieństwa, np. położenie oczu, nosa, ust i innych charakterystycznych cech. Problem pojawia się gdy na zdjęciu znajduje się wiele twarzy, w różnych odległościach od obiektywu, obróconych pod różnymi kąami. Algorytm, który w przyszłości miałby być przydatny np. w systemie bezpieczeństwa musi być w stanie sprostać takiej sytuacji. W swoim projekcie chciałbym skupić się na takich przypadkach.

2. Program

Pierwsza ilustracja przedstawia interfejs programu napisanego na potrzeby projektu, pozwalającego wykorzystać dostępne w sieci biblioteki służące do wykrywania twarzy na fotografiach. Interfejs został stworzony przy pomocy Matlab Guide.

Opis poszczególnych kontrolek:
>> Otwórz - Przycisk służący do wyboru pliku, który ma zostac przetworzony. Obraz musi być czarno-biały.
>> Start - Przycisk inicjujący procedurę wykrywania twarzy (pole obok wyświetla ilość wykrytych twarzy)
>> reset - Przycisk resetujący wartość progu wykrywania do domyślnej (0). Pole obok wyświetla aktualny próg.
>> suwak - Pozwala płynnie zmieniać wartość progu wykrywania w zakresie od -10 do 10
>> Algorytm 1/2 - Pola pozwalające wybrać, który algorytm ma zostać zastosowany do wykrycia twarzy
>> Koniec - Wyjście z programu
Program
Rysunek 1. Interfejs programu z przykładowym zdjęciem

3. Testy na próbkach spreparowanych

Twarz pod kątem

Rysunek nr 2 przedstawia serię ujęć twarzy. Na każdym kolejnym zdjęciu, twarz jest obrócona o około 5 stopni bardziej w lewo. Czerwone oraz zielone kwadraty odpowiadają wynikom działania odpowiednio pierwszego i drugiego algorytmów. Jak widać algorytm 2 działaj skutecznie dopóki na zdjęciu widoczne jest oboje oczu, algorytm 1 przestaje wykrywać twarz kilka stopni wcześniej.

Kolejny rysunek (nr 3), ukazuje serię ujęć twarzy, która na każdym następnym jest przekręcona w bok o 3 stopnie bardziej. Ponownie algorytm 2 okazuje się bardziej skuteczny, rozpoznając właściwie twarze obrócone nawet o kąt 24 stopni! Przy takiej skuteczności wystarczyłoby zanalizować obraz 8 krotnie, za każdym razem obracając go o nastepne 45 stopni. Teoretycznie zwiększyłoby to skuteczność wykrywania przekręconej twarzy do maksimum, jednak czy ten zysk wart jest conajmniej 8 krotnego przedłużenia czasu pracy algorytmu?

Obrót w osi pionowej
Twarz przekręcona w bok
Rysunek 2. Obrót w osi pionowej
Rysunek 3. Twarz przekręcona w bok

4. Testy na próbkach naturalnych

W tym dziale znajdują się fotografie znalezione w internecie i wybrane całkowicie losowo, cecha która je łączy do zróżnicowane tło oraz przynajmniej 5-osobowa grupa osób. Zdjęcia pozwalają podjąć niełatwą próbę porównania skuteczności algorytmów.

Zdjęcia 1 oraz 3, ukazują charakterystyczną dla obu algorytmów cechę do mylenia innych obiektów z twarzą (w tym wypadku klatka piersiowa, brzuch itp). Już niewielka różnica koloru, praktycznie niewidoczna dla człowieka, występująca w oczekiwanej okolicy cech charakterystycznych twarzy (oczy, nos, usta) może zmylić algorytm i doprowadzić do błędnego wykrycia.

Bardzo ciekawy wynik dało zdjęcie numer 4 (prawe dolne). Na 8 twarzy bez problemu rozpoznawalnych przez człowieka, algorytm pierwszy rozpoznał prawidłowo 5, jednak chybił kolejne pięć razy, natomiast algorytm drugi trafił jedynie 2 razy, a chybił raz. Przykład ukazuje ogromną słabość zastosowanych algorytmów wobec nierównego oświetlenia twarzy. Światło z boku do tego stopnia zmienia wygląd twarzy iż dla algorytmu staje się praktycznie niewidoczna. Zwiększanie progu wykrywania powoduje w tym wypadku jedynie zwiększenie ilości błędnych trafień. Przykład ten jest polem do popisu dla przyszłych twórców tego typu oprogramowania.

Wszystkie testy zostały wykonane przy nastawie progu bliskiej domyślnej, gdyż wydawała się ona najskuteczniejsza.

Obraz nr 1 Obraz nr 2
Obraz nr 3 Obraz nr 4

5. Wnioski

Jak widać, łatwo dostępne algorytmy wykrywania twarzy sprawdzają się doskonale w znaczącej większości przypadków "łatwych" (twarz jest odpowiednio oświetlona, skierowana w stronę obiektywu przynajmnije na tyle, żeby było jeszcze widać oboje oczu oraz nie przekrzywiona w bok bardziej niż 20 stopni (15-24 stopni zależnie od algorytmu). Jednak przypadki trudniejsze, najczęściej owocują zignorowaniem twarzy, a nieczęsto doprowadzając do błędnego wykrycia twarzy (np na innej części ciała fotografowanego człowieka)

Istnieją jednak profesjonalne algorytmy, które można przetestować, jednak ich źródła ani biblioteki nie są dostępne. Najlepszymi przykładami będzie tu online'owy album na zdjęcia picasa firmowany przez google. Dostępna w nim funkcja name tags pozwalająca przyporządkować imiona do wcześniej odnalezionych na zdjęciach twarzy, odznacza się niewiarygodnie wysoką skutecznością (wystarczy jedno oko i kontur nosa aby twarz została wykryta!) oraz niskim procentem błędnych znalezień.

Innym miejscem bardzo udanego zastosowania algorytmów wykrywania twarzy są aparaty cyfrowe. Co prawda tutaj ilość wykrywanych twarzy jest ograniczona do 8, jednak nie wynika to z faktu niewydolności algorytmu, tylko z jego zastosowania. Mianowicie pozwala on dobrać ekspozycję (czas migawki, przesłonę, balans bieli itp) w taki sposób aby jak najwięcej twarzy wyszło na zdjęciu "ostro" oraz we właściwych kolorach. Przykładami całkiem tanich aparatów zaopatrzonych w tą technologię są Canon PowerShot A590IS, Nikon Coolpix S550 oraz Olympus FE-340.

Kolejnym automatycznie nasuwającym się wnioskiem, jest fakt że skuteczne wykrywanie twarzy tak jak i wszystkich innych skomplikowanych wzorów wymaga ogromnej mocy obliczeniowej. Zaawansowany algorytm powinien analizować zdjęcie pod wieloma kątami, tak aby np. twarz będąca na fotografii "do góry nogami" także została wykryta, jednak ze względu na oszczędność czasu (algorytm analizujący jedno zdjęcie przez chociażby kilka minut byłby o wiele mniej przydatny!) skuteczność zostaje mocno ograniczona.

Bibliografia

[1] http://www.kyb.mpg.de/bs/people/kienzle/fdlib/fdlib.htm
[2] http://www.mathworks.com/matlabcentral/fileexchange/13701
[3] http://www.digitalcamerainfo.com

Valid HTML 4.01 Transitional