Face_recognition

Download Report

Transcript Face_recognition

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
Velikost 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 problem
Face 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 dat
Fotky 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 - summary
Má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 - úvod
Naší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 - úvod
Problé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…