Seminár Robotik.SK Ako nučiť robot rozpoznávť kto je kto pomocou knižnice Dlib Andrej Lúčny Ktedr plikovnej informtiky FMFI UK lucny@fmph.unib.sk http://di.fmph.unib.sk/w/andrej_lucny www.robotik.sk/seminr/2018/cviko7-fces.zip www.robotik.sk/seminr/2018/cviko8-fces.zip
vár i jej črty máme, čo ďlej? Od minulého cvičeni vieme, že Dlib obshuje HOG detektor tváre (obdĺžnik detektor čŕt tváre (bodky Ako to terz môžeme využiť n určenie osoby, ktorej tvár n obrze vidíme? V prvom rde potrebujeme trnsformovť tvár do určitého normálneho tvru 2
Hľdáme: invrintné vyjdrenie obrzu Aká reprezentáci je rovnká pre tieto obrázky? 3
Locl Binry Ptterns Invrint: k je jeden pixel svetlejší od druhého n jednom obrze, bude tento vzťh zchovný j obrze so zmenenou jsnosťou, kontrstom či ostrosťou. 0 0 0 1 0 0 1 0 Kždému pixelu vieme prirdiť jeho LBP číslo od 0 do 255 00000101 5 4
Locl Binry Pttern Histogrm Kždý pixel má svoj LBP číslo od 0 do 255 Spočítme koľko je kých: npr. 587 krát 0, 32 krát 1, 564 krát 2, ni rz 3,... dv krát 127, dostneme histogrm 3F 2E 01... FF 256 bytov ento histogrm normlizujeme tk, že jedným bytom vyjdríme reltívnu početnosť 5
Locl Binry Pttern Histogrm 3F 2E 01 03... FF Aby sme zchytili j priestorové rozloženie, môžeme obrz štruktúrovť n oblsti npr. obrz 64x64 pokryjeme mriežkou 8x8 pre kždú čsť spočítme jej LBP, tieto potom spojíme do vektor z sebou, čiže v tomto prípde dostneme 64 x 256 = 16384 bytov 16384 bytov 6
Locl Binry Pttern Histogrm LBPH sú len málo odolné voči posunutiu vôbec nie voči otočeniu či zväčšeniu/zmenšeniu Obrz preto musíme vzhľdom n tieto trnsformácie normlizovť vo vlstnej réžii Pomocou Fcil Lndmrk detektoru ľhko určíme otočenie i lepší výrez obrzu než nám dá HOG detektor (ktorému mierne posunutie nevdí Potom stčí vyrovnný otočený výrez zmenšiť n štndrdnú veľkosť (npr. 64x64, čím riešime zväčšenie zmenšenie 7
Predsprcovnie FceAligner 8
Predsprcovnie normlizujeme veľkosť n 64 x 64 normlizujeme rotáciu posunutie nás netrápi 9
Dtset pre Mchine lerning z určitého pohľdu n konkrétnu tvár terz vieme dostť približne rovnký LBPH bez ohľdu n to, či je bližšie lebo ďlej od kmery, či je nklonená vľvo, vprvo lebo je rovno Iný LBPH dostneme, keď zmeníme uhol pohľdu n tvár. Jednu tvár nám ted bude reprezentovť vicero snímok tváre z rôznej strny... 3F 2E... FF 2A 2E... 00 3E 2E... F0 3F 2A... EF 33 22... FF 3F 20... FE 3F 23... EF 00 01... AA 01 00... AE 02 00... AC 0 0 0 0 0 0 0 1 1 1...
Liner Discriminnt Anlysis (LDA N nučenie s funkcie prirďujúcej k LBPH správne ID s dá použiť kákoľvek metód strojového učeni Dobré výsledky dáv LDA V nšom prípde LDA klsifikuje dát v 256 rozmernom priestore do vicerých ktegórii, všk spôsob jej fungovni si priblížime n dvojrozmernom priestore dvoch ktegóriách Podsttou LDA je nájsť tkú lineárnu trnsformáciu priestoru, ktorá njlepšie rozlišuje (diskriminuje dné vzorky pri redukcii dimenzie priestoru. 11
Liner Discriminnt Anlysis (LDA Uvžujme tieto vzorky dvoch ktegórii 12
Liner Discriminnt Anlysis (LDA LDA ich dokáže trnsformovť ich súrdnice tk... 13
Liner Discriminnt Anlysis (LDA... že po redukcií dimenzie možno ktegórie ľhko rozlíšiť 14
Liner Discriminnt Anlysis (LDA Pri trnsformácii priestoru dát LDA uvžuje len lineárne trnsformácie, pri dvojrozmerných dátch ide ted o stĺpcový vektor (oznčme w 1 ' x x, 1 2 w x 2 čo znmená, že x ' w x 1 1 w x 2 2 Kždú zmenená súrdnic je určitou lineárnou kombináciou pôvodných súrdníc 15
Liner Discriminnt Anlysis (LDA Ktorá z možných je njlepši pre dné vzorky? á, ktorá ktegórie ( b njlepšie diskriminuje. LDA hľdá tkú, pre ktorú ndobúd mximum: J ( 2 b ( 2 ( ( b 2 čo je približne vtedy, keď je vzdilenosť priemerov ktegórii µ čo njväčši rozptyl vzoriek σ 2 čo njmenší 16
Liner Discriminnt Anlysis (LDA i ( x, x 1 2 1 n 1 n i ( 2 i i i 2 σ b b i µ b x 2 µ σ i x 1 17
Liner Discriminnt Anlysis (LDA 1 n i i 2 1 ( ( i i n w1 w2 2 µ µ b σ σ b i b i x 18
Liner Discriminnt Anlysis (LDA Ako nájsť pre ktorú ndobúd J( mximum? J( je diferencovteľná, možno si ju predstviť ko kopec n vrchole ktorého je vodorovný v podľ kždej zo svojich priestorových súrdníc w 1, w 2 Riešime ted sústvu dvoch rovníc o dvoch neznámych: dj( dw i 0 o s v princípe vždy nejko dá, le v nšom špeciálnom prípde s dá k riešeniu dostť j (výpočtovo ľhšie. 19
Liner Discriminnt Anlysis (LDA Dá s totiž ukázť, že riešením tejto sústvy rovníc je mtic zložená z tzv. vlstných vektorov určitej mtice. A vlstné vektory vieme veľmi efektívne spočítť. Ako n to prídeme? Skúmjme njprv ko s µ k µ σ ku σ, t.j. čo robí s priemerom rozptylom vzoriek hľdná trnsformáci : ( b b 1 n b 2 i i ( b S ( určuje rozptyl medzi ktegórimi b 20
Liner Discriminnt Anlysis (LDA i i n 2 2 ( 1 ( i i n 2 ( 1 i i n 2 ( 1 i i i n ( ( 1 n i i i ( ( 1 S n 1 S kovrinčná mtic, určuje rozptyl vzoriek v rámci ktegórie S n b b b 1 ( 2
Liner Discriminnt Anlysis (LDA 22 S n S n S b b 1 1 n S n S S b b / / ( 2 2 2 ( ( ( ( b b J S b S S b
Liner Discriminnt Anlysis (LDA Riešime: S b dj( d d d 0 d d d d S S S S S 0 b b 0 S S b 2S S 2S 0 S S b S b b 0 vlstná hodnot M S J( S b 1 S b S J ( M vlstný vektor M 23
Keď trnsformujeme tieto body pomocou nejkej mtice A
Keď trnsformujeme tieto body pomocou nejkej mtice A
vlstné vektory α A = A α = λ α tk n svoj násobok s zobrzi tzv. vlstné vektory
= 1/2 = 3/2 vlstné hodnoty α A = A α = λ α vlstné hodnoty udávjú ich zväčšovnie či zmenšovnie
vlstné vektory vieme efektívne vypočítť Pre dimenziu 1,2,3 4 primo vzorcom Pre 5 vic iterčným lgoritmom, v njjednoduchšej verzii vezme kýkoľvek vektor zobrzuje ho mticou, kým s nezobrzí (skoro n seb, potom s v už len z n neho kolmých vektorov hľdá ďlší tký, ž s nájdu všetky. Ale sú k dispozícii lgoritmy o mnoho rfinovnejšie rýchlejšie. Pomocou vlstných vektorov s počít všeličo, npr. j rovnice piteho vyšších stupňov,... A keďže ho použív LDA, fáz trénovni zo vzoriek je pri LDA v porovnní s inými metódmi strojového učeni - neobvykle rýchl. 28
n=20; =stdnorml_rnd([n,2]; =.*[1,0.3]; t=pi/3; R = [cos(t -sin(t; sin(t cos(t]; =*R; =.+[3,4]; nb=20; b=stdnorml_rnd([nb,2]; b=b.*[1.2,0.4]; t=pi/4; R = [cos(t -sin(t; sin(t cos(t]; b=b*r; b=b.+[2,2]; plot((:,1,(:,2,"r.",b(:,1,b(:,2,"b."; xis([0,6,0,6]; m=men(; mb=men(b; s=cov(; sb=cov(b; s=s/n+sb/nb; z=inv(s*sb; [w,lmbd] = eig(z; Pri LDA ted zo vzoriek spočítme správnu mticu, nájdeme jej vlstné vektory ten s väčšou vlstnou hodnotou definuje tú správnu trnsformáciu w=*w'; wb=b*w'; plot(w(:,1,w(:,2,"r.",wb(:,1,wb(:,2,"b."; xis([0,6,0,6]; plot(w(:,1,zeros(n,1,"r.",wb(:,1,zeros(nb,1,"b."; xis([0,6,0,1]; 29
Liner Discriminnt Anlysis (LDA Pomocou tohto triku LDA dokáže rozlišovť ktegórie ktoré definuje pomocou vzoriek to j pri väčšej dimenzii priestoru väčšom počte ktegórií. Smozrejme len ntoľko dokonle, ko to povh vzoriek umožňuje. 30
LDA dimenzi > 2 Pri väčšej dimenzii postupujeme nlogicky. Nájdeme vlstné vektory hodnoty príslušnej mtice tie vlstné, ktoré mjú význmne veľké vlstné hodnoty, zložíme po stĺpcoch do mtice, ktorá bude mticou prechodu k priestoru s redukovnou dimenziou. Prx ukzuje, že výrzných vlstných hodnôt je oveľ menej než je pôvodná dimenzi, tkže redukci dimenzie je výrzná. 31
LDA vic ktegórii Pri vicerých ktegóriách s dá vymyslieť podobný postup. Minimlizujeme pri ňom ( i i J ( 2 ( i i 2 kde i je ktegóri µ je priemer všetkých vzoriek 32
rénovnie 3F 2E... FF 2A 2E... 00 3E 2E... F0 3F 2A... EF 33 22... FF 3F 20... FE 3F 23... EF 00 01... AA 01 00... AE 01 00... AE 0 0 0 0 0 0 0 1 1 1 Sdy fotiek roztriedené podľ osoby n fotke sprcujeme n skupiny LBPH, kždej skupine prirdíme určité ID pomocou LDA ntrénujeme model, ktorý tieto osoby rozlišuje. rinrecognizer 33
estovnie ento model môžeme potom použiť tk, že v kždom obrázku z kmery hľdáme tvár, k nej príslušný LBPH ten vložíme do modelu nech povie jeho ID. Pritom je vhodné stbilizovť fcil lndmrky (npr priemerovť viceré posledné hodnoty i predikovné ID (npríkld medián z vicerých posledných hodnôt estrecognizer 34
estovnie 35
On-line rozpoznávnie Keďže trénovnie je rýchle, môžeme oprviť chyby zistené pri testovní, hneď ko ich zistíme, pretrénovť model vylepšovť ho. OnlineRecognizer 36
Metódu LDA (pre dve ktegórie vymyslel Ronld Fisher v roku 1936 LBPH nvrhli. Ojl, M. Pietikäinen, nd D. Hrwood v roku 1994
Open source knižnic n strojové učenie počítčové videnie Autor: Dvis King Boost Softwre License Linux, indows, Mc CUDA bsed Od roku 2002
Open source knižnic n počítčové videnie Intel, illow Grge, Itseez (Gry Brdski BSD Licenci 2500 rôznych lgoritmov C++, Jv, Python indows, Linux, Android Je to fkt rýchle spoľhlivé Podpor CUDA OpenCL Veľ pekných zdrojákov s dá získť z registráciu zdrm z článkov n www.lernopencv.com ich projekte n GitHub-e
Nbudúce... Poznáme j iné metódy rozpoznávni tvárí, zložené n hlbokom učení. Sieť ResNet bol nučená dť k obrázku jeho kód, pričom podobné obrázky mjú podobné kódy čím s obrázky vic líši, tým rozličnejšie kódy by mli dostť. o s dá využiť pre rozpoznnie tváre 40
Ďkujeme z pozornosť Seminár Robotik.SK Ako nučiť robot rozpoznávť kto je kto pomocou knižnice Dlib Andrej Lúčny Ktedr plikovnej informtiky FMFI UK lucny@fmph.unib.sk http://di.fmph.unib.sk/w/andrej_lucny