Matematisk modellering fortsättningskurs Visuell variation

Relevanta dokument
Egenvärden och egenvektorer. Linjär Algebra F15. Pelle

12. SINGULÄRA VÄRDEN. (u Av) u v

Kodning av ansiktstextur med oberoende komponenter

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

Datorlaboration 2. Läs igenom avsnitt 4.1 så att du får strukturen på kapitlet klar för dig.

SKRIVNING I VEKTORGEOMETRI

Vektorgeometri för gymnasister

Bildmosaik. Bilddatabaser, TNM025. Anna Flisberg Linne a Mellblom. linme882. Linko pings Universitet

Lösningsförslag till skrivningen i Vektorgeometri (MAA702) måndagen den 30 maj 2005

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Linjär algebra kurs TNA002

Basbyten och linjära avbildningar

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Preliminärt lösningsförslag

Resultat. Principalkomponentanalys för alla icke-kategoriska variabler

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

1 Linjära ekvationssystem. 2 Vektorer

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

SF1624 Algebra och geometri Bedömningskriterier till tentamen Tisdagen den 15 december, 2009

SKRIVNING I VEKTORGEOMETRI

Exempel :: Spegling i godtycklig linje.

Multiplicera 7med A λ 1 I från vänster: c 1 (Av 1 λ 1 v 1 )+c 2 (Av 2 λ 1 v 2 )+c 3 (Av 3 λ 1 v 3 ) = 0

MVE022 Urval av bevis (på svenska)

Lösningar till utvalda uppgifter i kapitel 8

Exempel :: Spegling i godtycklig linje.

För ingenjörs- och distansstudenter Linjär Algebra ma014a ATM-Matematik Mikael Forsberg

UPPSALA UNIVERSITET Matematiska institutionen Styf. Exempeltenta med lösningar Programmen EI, IT, K, X Linjär algebra juni 2004

SKRIVNING I VEKTORGEOMETRI

Dagens ämnen. Repetition basbyten och linjära avbildningar Diagonalisering Kvadratiska former. Andragradskurvor

LÖSNINGAR TILL LINJÄR ALGEBRA kl 8 13 LUNDS TEKNISKA HÖGSKOLA MATEMATIK. 1. Volymen med tecken ges av determinanten.

Diagonalisering och linjära system ODE med konstanta koe cienter.

Konvergens för iterativa metoder

. (2p) 2x + 2y + z = 4 y + 2z = 2 4x + 3y = 6

MAM283 Introduktion till Matlab

4x az = 0 2ax + y = 0 ax + y + z = 0

SF1624 Algebra och geometri Lösningsförslag till modelltentamen DEL A

Frågorna 1 till 6 ska svaras med ett kryss för varje korrekt påstående. Varje uppgift ger 1 poäng. Använd bifogat formulär för dessa 6 frågor.

linjära ekvationssystem.

Inför tentamen i Linjär algebra TNA002.

Föreläsn. anteckn. TMV206-VT13. Vecka 6-7. Egenvärden och Egenvektorer. Kap. 8-9

Ansiktsigenkänning med MATLAB

SF1624 Algebra och geometri Lösningsförslag till tentamen Tisdagen den 15 december, 2009 DEL A

5 Linjär algebra. 5.1 Addition av matriser 5 LINJÄR ALGEBRA

SF1624 Algebra och geometri Lösningsförslag till tentamen Lördagen den 5 juni, 2010 DEL A

Lösningsförslag till skrivningen i Vektorgeometri (MAA702) Måndagen den 13 juni 2005

Föreläsning 7: Klassificering, minsta kvadratproblem, SVD, forts.

Laboration 5: Regressionsanalys. 1 Förberedelseuppgifter. 2 Enkel linjär regression DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08

SKRIVNING I VEKTORGEOMETRI

Linjär algebra på några minuter

2x + y + 3z = 4 x + y = 1 x 2y z = 3

Facit/lösningsförslag

SF1624 Algebra och geometri Tentamen Torsdag, 17 mars 2016

Linjär algebra Föreläsning 10

3 1 = t 2 2 = ( 1) ( 2) 1 2 = A(t) = t 1 10 t

Tentamen i Linjär algebra (TATA31/TEN1) ,

DEL I. Matematiska Institutionen KTH. Lösning till tentamensskrivning på kursen Linjär algebra II, SF1604, den 15 mars 2010 kl

ax + y + 4z = a x + y + (a 1)z = 1. 2x + 2y + az = 2 Ange dessutom samtliga lösningar då det finns oändligt många.

Vektorgeometri för gymnasister

Tentamen i Linjär algebra (TATA31/TEN1) ,

DIAGONALISERING AV EN MATRIS

Kravspecifikation Fredrik Berntsson Version 1.3

Vektorgeometri för gymnasister

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Vi skalla främst utnyttja omskrivning av en matris för att löas ett system av differentialekvaioner. 2? Det är komplicerat att

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

TAMS79: Föreläsning 10 Markovkedjor

A = x

Vektorerna är parallella med planet omm de är vinkelräta mot planets normal, dvs mot

Crash Course Algebra och geometri. Ambjörn Karlsson c januari 2016

Tentamen i Linjär algebra (TATA31/TEN1) , 8 13.

SF1624 Algebra och geometri Lösningsförslag till modelltentamen DEL A

Detta cosinusvärde för vinklar i [0, π] motsvarar α = π 4.

SF1624 Algebra och geometri Tentamen med lösningsförslag onsdag, 11 januari 2017

ANDRAGRADSKURVOR Vi betraktar ekvationen

MA2004 Tillämpad Matematik II, 7.5hp,

Stöd inför omtentamen i Linjär algebra TNA002.

Linjär algebra/matematik. TM-Matematik Mikael Forsberg ma014a, ma031a

Determinanter, egenvectorer, egenvärden.

Vektorgeometri för gymnasister

Tentamen i Linjär algebra (TATA31/TEN1) ,

Egenvärden och egenvektorer

Tentamen i Linjär algebra (TATA31/TEN1) ,

Linjär algebra. 1 Inledning. 2 Matriser. Analys och Linjär Algebra, del B, K1/Kf1/Bt1. CTH/GU STUDIO 1 TMV036b /2013 Matematiska vetenskaper

Frågorna 1 till 6 ska svaras med ett kryss för varje korrekt påstående. Varje uppgift ger 1 poäng.

Linjära ekvationssystem

Mat Grundkurs i matematik 1, del I

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A. (1 p) (c) Bestäm avståndet mellan A och linjen l.

MMA132: Laboration 2 Matriser i MATLAB

Avsnitt 6, Egenvärden och egenvektorer. Redan första produktelementet avslöjar att matrisen inte är en ortogonal matris. En matris 1 0.

Föreläsningsanteckningar Linjär Algebra II Lärarlyftet

6.1 Skalärprodukt, norm och ortogonalitet. TMV141 Linjär algebra E VT 2011 Vecka 6. Lärmål 6.1. Skalärprodukt. Viktiga begrepp

5.7. Ortogonaliseringsmetoder

SF1624 Algebra och geometri Bedömningskriterier till tentamen Fredagen den 22 oktober, 2010

Exempelsamling :: Diagonalisering

1 som går genom punkten (1, 3) och är parallell med vektorn.

TMV166 Linjär Algebra för M. Tentamen

Linjära ekvationssystem

LYCKA TILL! kl 8 13

Transkript:

Matematisk modellering fortsättningskurs Visuell variation Johan Hedberg, Fredrik Svensson, Frida Hansson, Samare Jarf 12 maj 2011 1

1 Sammanfattning I denna rapport undersöker vi en modell för att beskriva bilder som vektorer och tillämpa på bildigenkänning och komprimering. De metoder som vi implementerar i arbetet utnyttjar alla principalkomponentanalys. Den första, som vi kallar egenvärdesmetoden, använder de största egenvärdena till kovariansmatrisen för datan. Detta använder vi sedan för att komprimera många bilder med vissa likheter, till exempel att alla är porträtt. Vi använder det även för igenkänning av bilder på ansikten, det vill säga försöka matcha bilder av samma person, men med olika ansiktsuttryck. Eftersom egenvärdesmetoden är för långsam för större datamängder så använder vi oss av en effektivare metod där kovariansmatrisen aldrig behöver beräknas. Efter detta tillämpar vi även modellen på igenkänning av händer. 2

Innehåll 1 Sammanfattning 2 2 Problemformulering och syfte 4 3 Principalkomponentanalys 4 3.1 Effektivare algoritm för PCA.................. 5 4 Modeller 6 4.1 Ansikten.............................. 6 4.2 Händer............................... 6 5 Tillämpningar 6 6 Validering och experiment 7 6.1 Egenvärdesmetoden........................ 7 6.1.1 Komprimering...................... 7 6.1.2 Igenkänning........................ 9 6.2 Effektivare algoritm för PCA.................. 11 6.2.1 Komprimering...................... 13 6.2.2 Igenkänning........................ 14 6.3 PCA på händer.......................... 16 7 Referenslista 21 8 Bilaga 1 22 3

2 Problemformulering och syfte Inom många områden där man analyserar data uppkommer problemet att datamängden är alldeles för stor och svårhanterlig ( the curse of dimensions ). Ett av dessa områden är bildanalys. Målet blir då att kunna reducera datamängden avsevärt utan att förlora alltför mycket information. Det blir då viktigt att studera variationen som finns i bilder. Syftet med det här arbetet är att ställa upp modeller som reducerar data genom att utnyttja den visuella variationen i bilderna. För att göra detta kommer principalkomponentanalys att användas. Vi kommer att applicera modellerna på bildkomprimering och bildigenkänning, och därefter utvärdera hur bra modellerna är. 3 Principalkomponentanalys En vanlig metod som används vid modellering av visuell variation är principalkomponentanalys (PCA). Huvudidén bakom denna är att reducera antalet dimensioner på data för att förenkla komplexiteten av stora problem. Man väljer ut ett nytt koordinatsystem på så sätt att mest varians hamnar längs den första basvektorn, näst mest varians hamnar längs den andra basvektorn osv. När man sedan minskar dimensionen väljer man att ta bort de minst viktiga koordinaterna (de med lägst varians). För att PCA ska fungera ska medelvärdet vara noll. (Wikipedia, Principalkomponentanalys, 2011) (Strandmark, P. 2011) Vi inleder med att ge ett enkelt exempel på PCA för att ge en ökad förståelse hos läsaren. Vi har en datamängd med två dimensioner och ska med hjälp av PCA representera denna i en dimension. Ponera att följande data (figur 1, till vänster) erhålles i ett experiment: Figur 1: Till vänster: Vår ursprungliga data med principalkomponenterna utritade. Till höger: Vår data uttryckt i en dimension. 4

Det är egentligen inte särskilt intressant att gå från två dimensioner till en, utan detta gjordes främst för att åskådliggöra hur PCA fungerar. Det är snarare när vi arbetar med fler dimensioner som PCA blir ett användbart och kraftfullt verktyg. Om vi tittar på datan ser vi att den varierar betydligt mer i en riktning. Denna riktning är vår första principalkomponent, vilken man kan få fram genom att diagonalisera kovariansmatrisen för datan. För varje dimension i ursprungsdatan finns en principalkomponent som motsvarar en egenvektor med tillhörande egenvärde. Ju större egenvärde, desto störra varians finns i riktningen för motsvarande egenvektor. I vår egenvärdesmetod så plockas alltså de egenvektorer med störst tillhörande egenvärde ut. 3.1 Effektivare algoritm för PCA För större datamängder är egenvärdesmetoden alltför ineffektiv för att kunna användas. Därför kan en iterativ metod användas där kovariansmatrisen aldrig behöver beräknas. Till funktionen skickas en matris A in som är datamängden och ett tal som säger hur många principalkomponenter man vill ta fram från A. Metoden inleds med att ta fram en slumpmässig vektor p, som sedan konvergerar mot den första principalkomponenten i while-satsen. Detta p används sedan för att uppdatera datamängden A, och används sedan på nytt ett slumpmässigt p för att få fram nästa principalkomponent. Så här ser pseudokoden ut för att få fram principalkomponenterna. för varje komponent p = slumpmässig radvektor så länge: p är skilt från förra p t = 0 för varje kolonn a A t = t + (p a)a p = t t för varje kolonn a A a = a ((p a)p) T Nackdelen med denna metod är att den blir numeriskt instabil efter ett visst antal komponenter. Anledningen till detta är att felet additivt kommer påverka beräkningarna av efterföljande principalkomponenter. (Wikipedia, Principle Component Analysis, 2011) 5

4 Modeller Vår modell är att beskriva bilder som vektorer. Modellantagandet är att vi kan hitta sätt att representera dessa bilder med mindre mängd data. Detta utnyttjar vi sedan i några tillämpningar. 4.1 Ansikten Det kan vara intressant att utföra PCA på bilder av ansikten, då det finns många likheter för ansikten på olika personer. Det finns därför mycket data som kan plockas bort utan att man för den sakens skull förlorar särskilt mycket information. 4.2 Händer Vi väljer även att studera bilder på händer. Till skillnad från ansiktena är det formerna på händerna som vi undersöker. Eftersom det inte finns alltför många sätt som man kan forma sina händer på, så är det ganska sannolikt att mycket data kan bortses från. 5 Tillämpningar Ett av användningsområdena för PCA är bildkomprimering. Man kan med hjälp av PCA då till exempel beskriva en bild med 2000 pixlar (alltså 2000 dimsensioner) i endast de tio riktningarna med mest varians. Igenkänning av bilder är ett annat användningsområde för PCA. Istället för att jämföra alla pixlar i en bild med en annan, kan man jämföra ett visst antal koefficienter. 6

6 Validering och experiment 6.1 Egenvärdesmetoden Vår databas består av 40 bilder av 40 olika personer av storleken 67x60 pixlar.(strandmark P, 2011) Vi börjar med att lägga alla dessa bilder i en stor matris där varje rad är en bild med pixlarna lagda på rad. Sedan medelvärdesbildar vi varje pixel och subtraherar medelvärdet från vår matris. Detta görs då framtida uträkningar förenklas om vår data har medelvärdet noll. Med hjälp av kovariansmatrisen tar vi fram de m största egenvärdena och deras egenvektorer kommer bilda vårt nya basrum. Dessa egenvektorer ligger i de riktningar där variansen är som störst och därför väljer vi dessa som våra principalkomponenter. 6.1.1 Komprimering För att kunna välja m (antal principalkomponenter) så bra som möjligt kollar vi på hur stor skillnaden blir mellan orginalbild och komprimerad bild för olika m. Optimalt är att ha så få komponenter som möjligt, men ändå ha ett litet fel. Felet e beräknar vi med följande ekvation e = 1 n k n i=1 j=1 k (I i,j Ĩi,j) 2 Bilderna är av storlek n k. I i,j är bilderna före komprimering och Ĩi,j är bilderna efter komprimering. För att få en uppfattning om hur många principalkomponenter som är optimalt plottar vi felet mot antal principalkomponenter, se figur 2. Våra testbilder som vi beräknar felet på består av tio bilder på tio olika personer. Vi har visualiserat en av de komprimerade bilderna för några olika antal principalkomponenenter, se figur 3. 7

Figur 2: Felet relativt antal principalkomponenter. Figur 3: En av de 10 testbilderna komprimerad med 1, 5, 15 och 35 principalkomponenenter och orginalbilden. Vi ser att felet minskar snabbt i början när antalet principalkomponenenter ökar, men sedan avtar minskningen. Från 20 principalkomponenenter till 40 minskar inte felet så mycket och att använda 20 principalkomponenenter borde ge en relativt bra uppskattning. Det räcker med 40 principalkomponenter för att beskriva 40 ansikten utan fel. I figur 2 ser vi att felet även för 40 principalkomponenter inte blir noll. Detta beror på att testbilderna inte finns med i databasen. För att kontrollera att metoden är korrekt testar vi att skicka in en testbild som redan finns i databasen, se figur 4. Vi ser nu att felet blir noll med 40 principalkomponenter, precis som vi hade förväntat oss. 8

Figur 4: En kontrollplot. 6.1.2 Igenkänning Vi använder oss av samma databas som vid bildkomprimeringen ovan, alltså 40 bilder på 40 olika personer. Till skillnad från vid bildkomprimering består de tio testpersonerna av personer som finns med i databasen men med andra ansiktsuttryck. Vid igenkänning beskrivs testbilden med principalkomponenterna och jämförs med alla komprimerade bilder i databasen. Skillnaden mellan bilderna beräknas med den euklidiska normen. Resultatet för de olika antal principalkomponenterna visas i tabell 1. Antal PC Antal rätt 1 2 2 7 3 10 4 10 5 10 Tabell 1. Som vi kan se behövs inte fler än tre principalkomponenter för att algoritmen ska hitta rätt person i databasen. 9

I figur 5 kan vi se de inskickade bilderna och den bild som vår algoritm anser vara mest lik, då vi använt två principalkomponenter. Vår datamängd består dock bara av 40 bilder och det kan vara intressant att studera en större databas med högre upplösta bilder. Figur 5: Igenkänning med två principalkomponenter på tio testpersoner. 10

6.2 Effektivare algoritm för PCA Vi använder oss av en ny databas med fler och högre upplösta bilder som är 112x92 pixlar.(att Laboratories Cambridge, 2011) Vi behöver då en effektivare algoritm som klarar av att beräkna PCA, se bilaga 1. Även här subtraheras medelansiktet från våra bilder för att förenkla framtida uträkningar. I figur 6 kan man se detta medelansikte då vi använder oss av 390 bilder på 39 personer. Figur 6: Medelansiktet av databasen. Nästa steg i algoritmen är att ta fram principalkomponenterna. I figur 7 kan man se de 20 första principalkomponenterna (basvektorerna). 11

Figur 7: De 20 första basvektorerna. 12

6.2.1 Komprimering Vi använder oss nu av en databas som består av 390 bilder på 39 olika personer. Testbilderna består av tio olika bilder på en annan person. På samma sätt som vid tidigare komprimering studerar vi hur felet beror av antal principalkomponenter. Figur 8: Felet relativt antal principalkomponenter med vår egen algoritm. Figur 9: En av de 10 testbilderna komprimerad med 1, 5, 15 och 35 principalkomponenenter och orginalbilden. I figur 8 ser vi att vid 15 principalkomponenter börjar felkurvan planas ut och därför är 15 komponenter ett bra val. Matlab har en funktion, princomp, som gör samma sak som vår algoritm. För att jämföra vår algoritm med Matlabs egna funktion, gör vi samma feluppskattningsplot med princomp. 13

Som man kan se i figur 10 fungerar vår algoritm (se figur 8) lika bra som Matlabs funktion för upp till minst 45 principalkomponenter. Figur 10: Felet relativt antal principalkomponenter med Matlabs egna funktion. 6.2.2 Igenkänning Vår databas består nu istället av 360 bilder på 40 personer och testbilderna är en annan bild på varje person. För att kolla hur många personer som metoden hittar rätt plottar vi detta i figur 11. I figur 12 kan vi se de tio första inskickade bilderna och den bild som vår algoritm anser vara mest lik, då vi använt tio principalkomponenter. Vi ser nu att det räcker att välja antal principalkomponenter till nio för att kunna få så många rätt som möjligt vid igenkänning. 14

Figur 11: Antal rätt gissningar över antal principalkomponenter. 15

Figur 12: Igenkänning med 10 principalkomponenter på de 10 första av 40 testpersoner. 6.3 PCA på händer Vi väljer nu att titta lite närmare på bilder av händer. Vi har en databas med 40 bilder, där fyra personer har tio bilder vardera. (Stegmann, M. 2011) Alla händer är vänsterhänder och inga fingrar korsas. På lämpliga ställen har punkter märkts ut i varje bild, på så sätt att om dessa punkter sammanbinds, så får vi konturen av handen (se figur 13). 16

Figur 13: En hand med 56 punkter utmarkerade. Vi inleder med att lägga alla händer med centrum i origo, för att lättare kunna jämföra händerna med varandra. Sedan försöker vi skala om händerna så att de får samma storlek. Detta görs genom att definiera storleken S(x) som: n S(x) = (x 2 j + y2 j ). j=1 Här är x och y koordinaterna för våra punkter längs handens kontur. Sedan roterar vi händerna för att ytterligare förbättra resultaten vid en jämförelse. För att få fram rotationsmatrisen så använder vi oss utav singulärvärdesdekomposition. Vi utgår från en hand och roterar övriga händer så att de passar med denna. SVD säger att x T 1 x 2 = UDV T, där x 1 är handen som vi utgår från och x 2 är handen som ska roteras. Här är U och V unitära matriser och D är en diagonalmatris. Rotationsmatrisen som optimalt roterar x 2 kring x 1, alltså kring origo, är då: ( ) V U T cos(θ) sin(θ) = sin(θ) cos(θ) 17

(Stegmann, M., Delgado Gomez, D. 2002) Sedan använder vi oss utav vår egna funktion CompFinder, se bilaga 1, för att få fram principalkomponenter till 30 bilder. Dessa bilder utgör nu vår databas. Vi representerar sedan både dessa och de övriga tio bilderna med dessa komponenter. De övriga tio används för att testa hur bra vi kan hitta liknande händer genom att enbart jämföra händerna uttryckt i principalkomponenterna. I figur 14 ser vi resultatet. Figur 14: Tre jämförelser av händer med hjälp av principalkomponenter. Den blå konturen tillhör databasen. I figur 15 plottar vi genomsnittshanden tillsammans med samma genomsnittshand plus/minus lite utav den första och den andra principalkomponenten. 18

Figur 15: Överst ser vi genomsnitthanden. De övriga fyra är genomsnittshanden plus eller minus någon av de två första principalkomponenterna. Vi plottar sedan felet (se figur 16) med avseende på hur många principalkomponenter vi använder. Man ser att så lite som tre komponenter räcker för att göra en bra rekonstruktion. Felet är hur bra man kan konstruera testhänderna med hjälp av principalkomponenterna från de 30 övriga händerna. För att jämna ut felet har vi summerat felen för de tio händerna. 19

Figur 16: Här ser vi felet över antalet principalkomponenter. 20

7 Referenslista ATT Laboratories Cambridge (2011-03-25), The Database of Faces, http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html Stegmann, Mikkel B. (2011-04-04), Free data sets for statistical models of shape, http://www2.imm.dtu.dk/ aam/ Stegmann, Mikkel B. Delgado Gomez, David (2002) (2011-04-04), A Brief Introduction to Statistical Shape Analysis, Informatics and Mathematical Modelling, Technical University of Denmark, http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=403 Wikipedia, Principalkomponentanalys (2011-03-24), http://sv.wikipedia.org/wiki/principalkomponentanalys Wikipedia, Principle Component Analysis (2011-03-24), http://en.wikipedia.org/wiki/principal_component_analysis Strandmark, Petter. (2011-03-23), Principal Component Analysis, Lunds Universitet. Strandmark, Petter. Muntlig handledning mellan 2011-03-16 och 2011-05- 16. Doktorand, Lunds Universitet. 21

8 Bilaga 1 1 function V = CompFinder(A, comps) 2 3 % Ber knar medelv rdet av varje bild 4 meana = mean(a,2); 5 meana = meana * ones(1,size(a,2)); 6 A = A - meana; 7 V = zeros(size(a,1),comps); 8 9 % F r varje komponent... 10 for i = 1:comps 11 pprev = -1 * ones(size(p)); 12 p = rand(1,size(a,1)); 13 % R k n a ut en komponent 14 while (p pprev) 15 t = zeros(size(a,1),1); 16 for r = 1:size(A,2) 17 t = t + (p * A(:,r)) * A(:,r); 18 end 19 %Sparar f r r a p:et f r j m f r e l s e med den senaste 20 pprev = p; 21 p = t' / norm(t); 22 end 23 24 for m = 1:size(A,2) 25 A(:,m) = A(:,m) - ((p * A(:,m)) * p)'; 26 end 27 28 V(:,i) = p; 29 30 end 31 end 22