face recognition
DESCRIPTION
Face recognition. Using PCA and EST. Jakub Barták a Zdeněk Běhan. MFF UK. Co je naším cílem. Natrénovat neuronovou síť tak aby byla schopna rozpoznat jednotlivé lidi na fotografiích splňujících nějaké základní podmínky. Problémy. Face detection Zisk vstupních dat - PowerPoint PPT PresentationTRANSCRIPT
Face recognition
Using PCA and EST
Jakub Barták a Zdeněk Běhan MFF UK
Co je naším cílemNatrénovat neuronovou síť tak aby byla
schopna rozpoznat jednotlivé lidi na fotografiích splňujících nějaké základní podmínky
ProblémyFace detectionZisk vstupních datVelikost vstupního prostoru
Face detection problem V komplexních řešeních
problému face recognition je třeba řešit problém nalezení obličeje v obrázku.
Používá se zpravidla detekce očí.
Face detection problem Další problémy:
Natočení tváře v rovině kamery & v ose těla
Částečné zakrytí tváře Osvětlení a další…
Face detection problemFace detection proto v našem případě
neřešíme Vstupní data získáváme přímým focením
proti bílé zdi za konstatního osvětlení konstantního natočení tváře (čelem do kamery) Přesto o nich nelze prohlásit že jsou ideální…
Vstupní data – zisk dat
Vstupní data – zisk datFotky 13 lidí Od každého člověka 11 fotek s různými výrazy
Vstupní data – zisk dat Problémy
Rozdílné osvětlení Máznuté fotky Žádný model není
dokonalý…. (tedy například různé natočení hlavy)
Vstupní data - preprocesing Ruční preprocesing
Nalezení obličeje a zisk čtvercové fotky se středem v obličeji Převedení z barevných fotografií na černobílé
Vstupní data - preprocesing Strojový preprocesing
Resizing na 64x64 pixelu Normalizace intenzity na rozmezí 0-255
Vstupní data - summaryMáme tedy k dispozici 143 normalizovaných
fotografiíFotografie se liší ve dvou aspektech
Výrazy v obličeji (žádoucí) Centralizace a natočení obličeje (nežádoucí)
Face recognition - úvodNaším cílem je roztřídit 143 prvků správně do
13 tříd (v každé bude 11 prvků).Hodláme využít neuronovou síť
Face recognition - úvodProblém: Velikost vstupního prostoru a jeho
řídkost Naše fotografie obsahují 4096 pixelů (64x64), kde
každý pixel může nabývat hodnot 0-255 Velikost vstupního prostoru je tedy 2564096 (což je
hodně) V prostoru této velikosti máme 143 vektorů (což je
málo)
Face recognition – PCA Vstupní prostor je však silně korelovaný.
Všechny lidské tváře mají zhruba stejný tvar – ovál s výraznými znaky typu nos, oči a ústa
Některé z těchto určujících znaků jsme si zničili variací výrazů, ale doufáme že to nebude vadit.
Pomocí PCA a EST najdeme bázi nového prostoru, která bude využívat výše zmíněné korelace a pomůže nám zmenšit dimenzi.
Principal Component Analysis (PCA)
Statistická metoda umožňující zmenšit dimenzi vstupního prostoru dat Umožňuje nalézt bázi nového prostoru jehož
bázové vektory odpovídají znakům které nejvíce určují vstupní prostor
První bázový vektor pak odpovídá nejvíce určujícímu znaku, druhý bázový vektor druhému nejvíce určujícímu znaku atd.
Eigen Space Transformation (EST)
• Využívá se při face recognition relativně často
• Umožnuje provést transformaci vstupního prostoru s minimalizací ztráty informace (ve smyslu nejmenších čverců)
Eigen Space Transformation (EST)
• Přetvoříme obrázky z matice 64x64 na vektor 1x4096 a vytvoříme matici těchto vektorů
• Máme tedy matici velikosti A=4096x143 (fotek je celkem 143)
• Naším cílem je nalézt vlastní vektory matice AxAT, které budou vytvářet bázi nového prostoru. Když je seřadíme podle velikosti vlastních čísel příslušných každému vlastnímu vektoru, dostaneme přesně bázi kterou popisuje PCA.
Eigen Space Transformation (EST)
Problémem je, že matice X= AxAT je matice velikosti 4096x4096 a spočítat v ní vlastní vektory by bylo „lehce“ obtížné
Eigen Space Transformation (EST)
Spočítáme proto vlastní vektory matice X´ =ATxA, tedy matice velikosti 143x143 což je výrazně jednodušší a pak využijeme vztahu λi = λ’i ei = λi
-1/2*A*e’I
Kde λi je vlastní číslo příslušné matici X, λ’i je vlastní číslo příslušné matici X’. ei a e’i jsou pak vlastní vektory příslušné těmto vlastním číslům.
Eigen Space Transformation (EST) A takhle vypadají výsledky (10 nejvýznamnějších vlastních
vektorů):
Eigen Space Transformation (EST) 10 nejméně významných vlastních vektorů
Eigen Space Transformation (EST)
Z takto získaných vlastních vektorů jsme vybrali 40 nejvýznamnějších a ty zvolili za bázi nového prostoru.
Pomocí této nové báze jsme aproximovali původní vektory a snížili tak dimenzi z původní 4096 na 40.
To už by neuronová síť měla zvládnout.Přesnost aproximace byla +- 0.5 bodu intenzity
Neural network training• A taky že zvládla.
• Použili jsme síť Learning Vector Quantization (LVQ) s 20 skrytými neurony a síť byla schopna se naučit rozpoznávat bez chyby během 68 epoch.
Experimenty s neuronovou sítí• Na závěr jsme se rozhodli ještě se sítí trochu
experimentovat.
• Při trénování s 13 skrytými neurony si síť pletla dvě dvojice lidí
Experimenty s neuronovou sítí…Přidali jsme další neuron do skryté vrstvy (14
celkem) Sít se zlepšila a už špatně řadí pouze jednoho
člověka. Za to si ho plete se dvěma
Experimenty s neuronovou sítí…• Na správné rozpoznání pomohlo až 20 neuronů
ve skryté vrstvě (síť se naučila za 68 epoch)
Experimenty s neuronovou sítí…Při dalších pokusech jsme rozdělili fotografie do
dvou skupin. První tvořila trénovací skupinu, druhá pak testovací. Při rozdělení 8:3 (trénovací:testovací) a původním
nastavení (20 vnitřních neuronů) si síť pletla 2 lidi Při rozdělení 5:6 již lidi 3 Při rozdělení 2:9 měla síť pořád 93% úspěšnost
Experimenty s neuronovou sítí…Rozdělení 1:10
Sít má k dispozici pouze jedinou fotografii aby se naučila rozpoznávat.
83.8% úspěšnost
Použitá literatura• Recognizing humans by gait via parametric
canonical space (Artificial Intelligence in Engineering volume 13)
University of Southampton
Slovo závěrem• Hlavní těžiště práce jednoznačně spočívalo v
redukci velikosti vstupního prostoru a to správným postupem.
• Cestou jsme narazili na bezpočet různě obtížných problému, ale nebáli jsme se je vyřešit. Jak řekl největší český vynálezce všech dob je třeba se nebát, protože někdo musí říct „Tudy ne, přátelé“
Slovo závěrem…• Pokus o spočítání vlastních čísel na matici
velikosti 4096x4096
>>eigenVectors = eig(images*images’);…2 minuty…10 minut…20 minut“f*ck”CTR+C>>
Slovo závěrem…• Pár pokusů zobrazit nějaké obrázky v Matlabu
(hlavní vlastní vektor):
Slovo závěrem…• Hlavní vlastní vektor podruhé…
Slovo závěrem…• Ani zobrazit černobílý obrázek nemusí být
triviální…
Slovo závěrem…• …
Některé pokusy se na vás zkrátka projeví…
Zdeněk Běhan a Jakub Barták
Opravdu, ale už opravdu konec…• A to je vše přátelé
• Prostor pro dotazy…