instrukcji

Transkrypt

instrukcji
Laboratorium 4
Analiza i Indeksowanie Multimediów
autor: dr inż. Jacek Naruniec
Cel laboratorium:
Rozpoznawanie twarzy w czasie rzeczywistym przy użyciu algorytmu PCA.
Zadania
1. Stwórz model PCA twarzy na podstawie całego załączonego zbioru twarzy. Założenia modelu:

Poszczególne piksele każdego z obrazów trenujących mają być wymnożone przez piksele
odpowiadające załączonemu obrazowi maski (mask.pgm lub mask.png, w programie
Pythonowym już zrealizowane).

Liczba wymiarów modelu ma się zawiera się w przedziale 50-100

Program powinien umożliwiać obejrzenie stworzonych twarzy własnych (załączony
program umożliwia tą funkcjonalność)
2. Dokończ aplikację rozpoznawania twarzy tak, aby umożliwiała:
 Dodawanie nowych osób (5 zdjęć na osobę)

Rozpoznawanie osoby znajdującej się aktualnie przed kamerą
 Maskowanie zdjęcia twarzy zgodnie z załączoną maską
3. Opcjonalnie:

Zapis aktualnej bazy osób do pliku (np. w destruktorze klasy)

Wczytanie bazy danych z pliku (np. w konstruktorze klasy)
Uwagi szczegółowe
Załączony program ma umożliwiać identyfikację osoby na podstawie obrazu twarzy z kamery. Do
zadania dołączone zostały dwie aplikacje: jedna do stworzenia modelu PCA (w środowisku Python),
druga do rozpoznawania twarzy (Visual Studio 2010).
Wszystkie dołączone twarze, jak również zlokalizowane za pomocą załączonej aplikacji,
znormalizowane są według normy MPEG-7, tj. do rozmiaru 46x56 pikseli, oczy w 24 rzędzie, 16 i 31
kolumnie.
Aplikacja TRENOWANIE MODELU
W celu uruchomienia programu wymagany jest język Python w wersji 2.6 lub 2.7.
W załączonym pliku (src/TrainModel.py) należy:
1. W pierwszych linijkach ustawić zmienną file_path na odpowiedni lokalny
katalog.
2. Uzupełnić funkcję PCA wykorzystując macierz kowariancji lub
dekompozycję SVD (druga z metod jest szybsza i prostsza).
3. Jeśli funkcja zostanie napisana poprawnie, program powinien stworzyć
plik model.txt zawierający macierz wektorów własnych (bądź osobliwych,
zależnie od zastosowanej metody), oraz model_mean.txt zawierający średnią punktów.
Ponadto program tworzy osobne pliki graficzne obrazujące poszczególne stworzone wektory
własne (Rysunek 1), a także twarz średnią.
4. Do dalszej analizy wymagane są jedynie pliki model.txt i model_mean.txt
Dokumentację do języka Python można znaleźć np. na stronie internetowej
http://docs.python.org/tutorial/. Można także skorzystać z tutoriali biblioteki NumPy, np.
http://www.scipy.org/Tentative_NumPy_Tutorial
ROZPOZNAWANIE TWARZY
Aplikacja ma zaimplementowane graficzne GUI, algorytm detekcji twarzy za pomocą dyskretnych
filtrów obszarowych oraz mechanizmy niezbędne do działania aplikacji rozpoznawania twarzy.
Zadaniem studenta jest uzupełnienie klasy FaceRecognition. Każdy obraz dostarczany do funkcji jest
w formie znormalizowanej (46x56) (takiej jak w przypadku trenowania).
Sposób działania programu jest następujący:
Po wybraniu z menu programu opcji Face recognition->Add new person aplikacja przechodzi w tryb
dodawania nowej osoby do bazy. W tym momencie pięciokrotnie wywoła się funkcja
FaceRecognition::AddNewPerson, do której przekazywany jest znormalizowany obraz twarzy.
Jeśli program nie jest w trybie dodawania nowej osoby, po każdej udanej detekcji uruchamiana jest
funkcja Recognize, służąca do rozpoznawania twarzy. Jako parametr również przekazywany jest
znormalizowany obraz twarzy.
Efekt rozpoznawania, ilość osób w bazie twarzy, jak również numer aktualnie dodawanego zdjęcia
osoby widoczny jest w pasku statusowym programu.
Szczegółowe instrukcje implementacyjne znajdują się komentarzach plików FaceRecognition.h i
FaceRecognition.cpp
Powodzenia!

Podobne dokumenty