Rozpoznawanie twarzy z wykorzystaniem metody PCA
Face recognition using principal component analysis-based approach
Streszczenie
Ilość systemów oraz programów wymagających logowania się stale wzrasta. Poszukiwane są
łatwiejsze sposoby uzyskiwania dostępu do programu lub autoryzacji użytkownika. Systemy
rozpoznawania twarzy są jednym z wielu dostępnych sposobów na rozwiązanie tego problemu.
Uwierzytelnianie bazujące na rozpoznawaniu twarzy jest wygodna i łatwa dla użytkownika.
Głównym celem tej pracy jest implementacja algorytmu analizy głównych składowych, aby
stworzyć aplikację zdolną do automatycznego rozpoznania osoby, bazując na obrazie otrzymanym z
kamery internetowej oraz wcześniej zapisanych zdjęciach twarzy osób, które należą do grupy
testowej.
Aplikacja stworzona na potrzeby tej pracy została napisana w języku programowania Java.
Przed rozpoczęciem procesu rozpoznawania twarzy należy wyodrębnić tę część obrazu otrzymanego z
kamery, który zawiera twarz. W tym celu został zastosowany algorytm cech Haaro-podobnych
wykorzystujący kaskadę „słabych” klasyfikatorów do oceny poszczególnych fragmentów testowanego
obrazu. Aby dokładniej umiejscowić twarz na zdęciu został użyty algorytm Hough’a dla kół. Po
otrzymaniu dokładnych współrzędnych źrenic możliwe jest wyodrębnienie twarzy i normalizacja, aby
uzyskać jednolity rozmiar i jasność. Po takiej obróbce wstępnej można przystąpić do analizy
głównych składowych (PCA). Algorytm ma na celu redukcję zbędnych informacji i uproszczenie
klasyfikacji. PCA jest procedurą, która zamienia zbiór skorelowanych danych na nowy zbiór, którego
składniki nie są ze sobą skorelowane – tak zwane składowe główne.
Każdy obraz twarzy można przedstawić w formie punktu w przestrzeni N-wymiarowej, gdzie
N jest liczbą pikseli w obrazie. Macierz kowariancji jest tworzona z treningowego zbioru zdjęć
twarzy. PCA tworzy nową p-wymiarową przestrzeń (gdzie p<<N) poprzez dekompozycję macierzy
kowariancji na wartości i wektory własne. Wartość p jest wybierana na podstawie wzajemnych relacji
wartości własnych w taki sposób, że do budowy nowej przestrzeni cech użyte są tylko te wektory
własne, które niosą istotne informacje. Po tych przygotowaniach wyodrębniona twarz, która zostaje
poddana procesowi rozpoznania, jest rzutowana na nową przestrzeń cech. Do klasyfikacji użyty jest
algorytm k-nn(k najbliższych sąsiadów).
Działanie programu zostało sprawdzone serią testów. Pierwsze z nich miały na celu ocenę
liczby prawidłowych detekcji twarzy. Następna część testów miała określić dokładność algorytmu
rozpoznawania twarzy. Testy wykazały, że implementacja została przeprowadzona pomyślnie – w
większości przypadków twarze były prawidłowo wykrywane, nawet w niesprzyjających warunkach
oświetleniowych lub kiedy detekcje utrudniały takie przeszkody jak zarost albo obrót twarzy.
Algorytm rozpoznawania nie uzyskał tak dobrych wyników jak algorytm detekcji, jednak w
korzystnych warunkach współczynnik poprawnego rozpoznania może osiągnąć 90%. Wynik
rozpoznania w dużo większym stopniu jest zależny od warunków oświetleniowych niż w przypadku
detekcji.
Porządek pracy jest następujący: rozdziały 1 i 2 zawierają ogólne informacje na temat
programu. Rozdziały 3 i 4 prezentują algorytmy detekcji twarzy i oczu oraz ich implementację, jak
również wyodrębnianie twarzy i normalizację. W rozdziale 5 opisany jest algorytm PCA. Rozdziały 6
i 7 zawierają wyniki testów, ich omówienie oraz wnioski.
Abstract
The number of systems or applications requiring logging in is constantly increasing. Easier
ways to get access to or to be recognized by an application as an authenticated user are being
investigated. Face recognition systems are one of the available solutions that address this problem.
Authentication based on face recognition is convenient and easy for the user.
The main goal of this thesis is to implement the principal component analysis algorithm to
create an application that will be able to automatically recognize people basing on the image obtained
from the web camera and previously stored images of faces of people that belong to the test group.
The application created for the purpose of this thesis was written in Java programming
language. Before the recognition process can take place there is a need to extract the part of the image
obtained from the camera that contains a face. To accomplish this, Haar-like features algorithm was
implemented. It uses a cascade of ‘weak’ classifiers for evaluation of particular sub-windows of image
under test. For more precise face localization by eye detection Hough Transform for circles was used.
After obtaining precise coordinates of pupils it was possible to extract the face and normalize image to
obtain uniform size and brightness. After pre-processing it was possible to conduct principal
component analysis (PCA). The algorithm aims to reduce redundant information and simplify the
process of classification. PCA is a procedure that changes a set of correlated data into a new set of
variables that are uncorrelated, the so called principal components.
Each face image can be represented as a point in an N-dimensional space, where N is number
of pixels of the image. Covariance matrix is created from set of training face images. PCA creates a
new p-dimensional feature space (where p<<N) basing on eigenvalues and eigenvector decomposition
of the covariance matrix. Value of p is chosen basing on the relations between eigenvalues in such a
way that to create of new feature space only eigenvectors carrying the most significant information are
used. Subsequently, the extracted face that is taken under recognition is projected on new feature
space. Classification is done by k-nn ( k- nearest neighbour) method.
The application performance was tested by a series of various tests. The first tests were aiming
to evaluate the correct face detection rate. The next part of the test was aiming to determine how
accurate the recognition algorithm is. Tests proved that the face detection algorithm implementation
was successful –in most conditions faces were correctly detected, even with adverse lighting or
obstacles like facial hair or face twisting.
The recognition algorithm implementation did not work equally well as the face detection
algorithm, however, in proper conditions, proper face recognition rate can reach 90%. The correct
recognition rate is significantly more dependent on lighting conditions than face detection.
The paper is organized in the following way: chapters 1 and 2contain overall information
about the application created for the purpose of this thesis. Chapters 3 and 4 provide information about
face and eyes detection algorithms and their implementation, as well as face image extraction and
normalization. In chapter 5, PCA algorithm and classification process are described. Chapters 6 and 7
contain experimental results, their discussion and conclusions.