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.
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?
![]() |
![]() | |
|
|
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.
![]() |
![]() |
![]() |
![]() |
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.
[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