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…