måndag 25 november 2013
Vecka 47
I veckan har jag fixat ett antal mindre problem med rapporten, skrivit färdigt introduktionen, lagt till några sektioner som saknades från teorikapitlet, lagt till en beskrivning av testsystemet och lagt till några testresultat som saknades. Nästa vccka tänker jag börja konvertera rapporten till latex. Efter det saknas bara abstract och eventuella mindre justeringar. När dessa är skrivna ska jag skicka rapporten till Petter för en andra gång. Såvida de sista revideringarna drar ut på tiden ligger jag ungefär i fas med schemat. Jag har inte kommunicerat med någon den här veckan.
måndag 18 november 2013
Vecka 46
Jag fick feedback från Petter på det jag hade skrivit hittills, så under veckan har jag arbetat med att åtgärda en del av de problem han upptäckt. Jag har även gått igenom hela rapporten och annoterat med referenser där det verkat lämpligt. Slutligen har jag skrivit ett utkast till "future work"-sektionen i avslutningen samt några mindre generalla modifikationer här och där i rapporten. Under processen att annotera med referenser har jag lärt mig mer om de akademiska fält projektet berör. Jag upplever arbetet som trögt, och det är mentalt påfrestande att behöva lägga in en relativt stor ansträngning för ett mycket litet konkret resultat. Det kan t. ex. krävas att lusläsa stora delar av en akademisk text för att åtgärda en mindre oklarhet i beskrivningen av en algoritm som inte nödvändigtvis är direkt relaterad till arbetet. Enligt planeringen ska rapporten vara färdig i slutet av november. Jag skulle vilja säga att jag ligger i slutskedet nu, men som sagt finns det många små detaljer som behöver åtgärdas och ibland är det svårt att bedöma hur mycket tid och ansträngning de kräver. Jag måste dessutom konvertera rapporten till latex. Därmed anser jag inte att jag kan garantera att en slutgiltig version är färdig innan november är slut. Däremot ser jag inte detta som ett större problem, då jag ändå inte kommer kunna försvara arbetet förrän tidigast i slutet av januari. Jag har haft lite emailkorrespondens med Petter under veckan, och vi planerar att träffas på tisdag.
måndag 11 november 2013
Vecka 44-45
På grund av studier inför en resttenta och vissa personliga omständigheter har jag inte arbetat på examensprojektet dessa två veckor. Jag har dock fått feedback från Petter på det material jag redan skrivit och kommer fortsätta nästa vecka med att färdigställa rapporten.
måndag 28 oktober 2013
Vecka 43
I veckan har jag huvudsakligen skrivit på testsektionen. Jag har kört och dokumenterat ett test som jämför prestandan hos olika algoritmer mellan dataset med olika egenskaper, och börjat köra tester av den roterande ansiktsdetektorn. Jag har även filat på introduktionssektionen och börjat skriva avslutningen. Jag måste fortfarande fixa referenser genom hela rapporten, konvertera den till Latex-format och formatera layouten. Jag funderar på att eventuellt designa fler tester, men jag tänkte vänta på feedback från Petter först. Även om rapporten förmodligen inte behöver brutalt mycket mer arbete verkar det inte som att jag kommer kunna försvara förrän i slutet av januari, så det finns åtminstone gott om tid att finputsa den om det skulle bli nödvändigt. Att skriva analysen av testresultaten har gett mig lite bättre insikt i implementationens styrkor och svagheter. Bortsett från lite mailkorrespondens om bakgrunden till projektet med Johanna och Emil på Codemill har jag inte kommunicerat med någon.
fredag 25 oktober 2013
Vecka 42
Jag glömde att skriva ett inlägg i början av denna vecka så det här inlägget kommer lite sent. Förra veckan spenderade jag huvudsakligen till att färdigställa kapitlet med systembeskrivningen av APIet. Dokumentationen har varit förutsägbar, så jag kan inte påstå att jag fått några nya erfarenheter. Jag ligger bra till i planeringen, och siktar väl på att bli färdig lite i förväg. Det jag skrivit hittills är dock bara det första utkastet, och det är svårt att säga hur lång tid det kommer ta att revidera texten och layouten, så det känns bra att ha en buffert. Jag träffade Petter i början av veckan, och vi avstämde mest bara om hur arbetet fortgår.
söndag 13 oktober 2013
Vecka 41
I veckan har jag skrivit på rapporten. Jag har färdigställt en sektion om object tracking till teorikapitlet och skrivit första halvan av ett kapitel som beskriver de utbyggnader jag utvecklat till existerande algoritmer, dvs integrationen av CAMSHIFT och ansiktsigenkänning samt den roterande detektorn. I början av nästa vecka ska jag skriva färdigt det kapitlet och sedan börja skriva en systembeskrivning av biblioteket. Jag var tvungen att läsa på om object tracking för att kunna skriva teorisektionen och det var lärorikt. Det kan vara nyttigt att ha uppslag för vidareutveckling när jag ska skriva diskussionen senare. Som tidigare ligger jag fortfarande i fas med tidsplaneringen. Jag har inte kommunicerat med någon annan i veckan.
måndag 7 oktober 2013
Vecka 40
I början av veckan arbetade jag med att förfina det kommandoradsbaserade gränssnittet och testa små modifikationer av den tracking-baserade igenkännaren. Efter mötet med Johanna och Petter spenderade jag resten av veckan med att skriva en sektion i teori-kapitlet som introducerar object tracking. Jag ska framförallt fokusera på att skriva den kommande tiden, och försöka få rapporten till ett mer moget tillstånd. Skulle det då finnas tid över till annat kan jag kanske bygga ut arbetet lite mer. Jag läste en översiktlig object tracking-artikel och fick därmed insikt i vilka hänsynstaganden som måste göras när man konstruerar en generell tracking-algoritm samt de olika metoder som förekommer i litteraturen. Jag ligger i fas med tidsplanen. Jag träffade Petter (CS) i tisdags och vi avstämde bara om det som jag gjort på senaste tiden och mina planer för den närmsta framtiden. Jag berättade som hastigast om projektet på mötet med Johanna och Petter (Codemill) i torsdags.
måndag 30 september 2013
Vecka 39
Jag inledde veckan med att börja samla nyhetsrapporter från SVT Play för att skapa ett nytt dataset. Jag hade sedan tidigare bokat möte med Johanna och Petter på Codemill om ev. anställning torsdag v. 40 och i torsdags fick jag veta mer om exjobbet. Jag tänkte att det kunde vara lämpligt att uppdatera GUIet inför det mötet, vilket jag inte gjort sen jag refaktoriserade systemdesignen. Jag fick dock problem med en bugg i GCC när jag under vissa omständigheter försökte kombinera vissa STL-klasser med vissa Qt-klasser. För det första misstänker jag att jag inte skulle hunnit åtgärda det här problemet och dessutom hinna återuppbygga GUIet från grunden anpassat efter den nya designen innan torsdag v40, och dessutom slog det mig att GUIet egentligen inte skulle vara särskilt användbart i slutändan, eftersom jag inte har någon aning om vilka slutanvändarna kommer vara och vilka behov de har. Jag beslutade därför att skrota GUIet helt och hållet, betrakta det existerande systemet mer som ett API och skriva ett enklare kommandoradsbaserat gränssnitt som exempelapplikation, men som ändå demonstrerar de viktigaste funktionerna i koden. Om och när koden senare ska utvecklas till en fullfjädrad produkt kan APIet ligga bakom ett mer genomtänkt gränssnitt som är anpassat efter de faktiska slutanvändarna. Bortsett från mindre finputsningar tror jag att jag ska börja skriva på allvar efter mötet på torsdag. Alternativt avslutar jag SVT Play-datasettet och inkluderar det i testningen och börjar skriva sedan. Jag ska träffa Petter (handledare) imorgon och Johanna och Petter (Codemill) på torsdag så jag får se om de har några användbara insikter. Bortsett från att boka in mötet har jag inte haft några andra kommunikationer.
torsdag 26 september 2013
Vecka 38
Jag glömde att skriva ett inlägg vid veckoskiftet, så här kommer inlägget för förra veckan. Jag spenderade i stort sett hela veckan med att samla frontal- och profilklipp av olika skådespelare från HBO-serien The Newsroom, samt längre klipp från mötesscener med resonemanget att de skulle kunna likna inspelade konferenser från företag. Jag har inte annoterat datan, men genom visuell inspektion så verkar det som att de variabla bakgrunderna i scenerna från serien orsakar problem med detektion och igenkänning i allmänhet, och speciellt CAMSHIFT-metoden. Många falska positiva uppstår i detektionen och detta är speciellt problematiskt för CAMSHIFT eftersom den försöker tracka alla detekterade "ansikten" baserat på färgdistributionen i den initiala regionen. Om den är felaktig blir hela sekvensen korrumperad. Jag har därför tänkt samla in data med mindre störningsmoment och börja arbeta med den. Som Petter föreslog förra veckan ska jag leta upp videofiler med nyhetsankare istället. Den typen av video är betydligt mer lik mitt initiala testset som jag fått någorlunda bra resultat med. När dessa tester gjorts planerar jag att börja skriva ihop rapporten.
måndag 16 september 2013
Vecka 37
I veckan har jag testat CAMSHIFT-metoden mer utförligt samt förberett den nya testdatabasen. Jag har dessutom utvecklat en ensemble-igenkännare som kombinerar resultat från flera underliggande igenkänningsalgoritmer. Med den existerande testdatabasen fungerar CAMSHIFT-metoden och en underliggande Fisherface-igenkännare mycket bra. Detta är under förutsättning att ett stort antal samples kan tillhandahållas till Fisherface (t. ex. genom att läsa från en gallerivideoinspelning), att bildförhållande i galleriet är identiskt med testvideon och att testvideon innehåller en individ som finns med i galleriet. Metoden är däremot dålig på att avgöra att en individ inte finns med i galleriet. I första hand är det ett problem med den underliggande igenkännaren, den identifierar helt enkelt okända individer som någon person i galleriet. Jag hade en idé om hur man skulle kunna eliminera problemet i den CAMSHIFT-baserade metoden genom att, istället för att bero på att den underliggande igenkännaren kan identifiera en okänd individ, kräva att en given identitet figurerar i en "track" (en serie associerade regioner över ett antal frames i sekvens) med tillräckligt hög frekvens för att identiteten ska associeras med tracken. Detta skulle bara fungera om en okänd individs identitet associeras med ett flertal andra individer i galleriet med någorlunda jämn fördelning. Istället tenderar de underliggande igenkännarna att identifiera en okänd individ som en specifik individ i galleriet hellre än de andra, så det fungerar inte. I nuläget har jag inget uppslag för hur man ska lösa det problemet, så istället planerar jag att gå vidare och testa hur metoden fungerar om det finns flera personer i bilden samtidigt. Till det ändamålet har jag förberett en ny testdatabas som jag ska använda i veckan. Utöver det har jag byggt en ensemble-igenkännare, som integrerar flera underliggande igenkännare som röstar om vilken identitet som är den riktiga. Jag har dock inte haft tid att studera huruvida metoden presterar signifikant bättre eller sämre än de individuella igenkännarna.
Jag har lärt mig att det är mycket problematiskt att skilja på kända och okända individer med någon högre precision i allmänhet, och att det verkar inkompatibelt med min CAMSHIFT-metod. Jag har 2.5 månader kvar på projektet, och jag funderar på att börja skriva ihop rapporten snart. Jag upplever det som att det är svårare att få nya idéer och tiden skulle kanske kunna användas effektivare till det mer konkreta arbetet med att skriva. Jag kanske dessutom kan få nya uppslag medan jag skriver. Jag ska dock studera hur de existerande metoderna fungerar med den nya testdatabasen först. I veckan har jag inte kommunicerat med någon annan.
Jag har lärt mig att det är mycket problematiskt att skilja på kända och okända individer med någon högre precision i allmänhet, och att det verkar inkompatibelt med min CAMSHIFT-metod. Jag har 2.5 månader kvar på projektet, och jag funderar på att börja skriva ihop rapporten snart. Jag upplever det som att det är svårare att få nya idéer och tiden skulle kanske kunna användas effektivare till det mer konkreta arbetet med att skriva. Jag kanske dessutom kan få nya uppslag medan jag skriver. Jag ska dock studera hur de existerande metoderna fungerar med den nya testdatabasen först. I veckan har jag inte kommunicerat med någon annan.
onsdag 11 september 2013
Vecka 36
I veckan har jag börjat implementera och testa CAMSHIFT-metoden, och preliminära tester verkar lovande. Jag har dock varit sjuk från torsdag kväll fram till igår tisdag, så jag har inte hunnit göra någon genomgående utredning än. I veckan ska jag fokusera på att testa metoden genomgående med den existerande testdatabasen och att färdigställa den nya testdatabasen så att jag kan använda den också. I kombination borde jag kunna avgöra ganska pålitligt om det är värt att gå vidare. I nuläget trackar metoden bara objekt framåt i tiden, men verkar resultaten lovande ska jag utöka den med kapaciteten att söka bakåt också.
Jag har lärt mig att metoden verkar fungera i princip. Jag har inte använt några negativa subjekt (dvs, subjekt som inte finns med i galleriet) i testerna hittills, men med enbart positiva subjekt har jag uppnått betydligt högre precision än tidigare med försumbar tidsförlust.
Schemasituationen har inte förändrats sen förra veckan även om det är tråkigt att jag förlorat flera dagar till förkylningen. Jag har inte haft kontakt med någon annan i veckan.
Jag har lärt mig att metoden verkar fungera i princip. Jag har inte använt några negativa subjekt (dvs, subjekt som inte finns med i galleriet) i testerna hittills, men med enbart positiva subjekt har jag uppnått betydligt högre precision än tidigare med försumbar tidsförlust.
Schemasituationen har inte förändrats sen förra veckan även om det är tråkigt att jag förlorat flera dagar till förkylningen. Jag har inte haft kontakt med någon annan i veckan.
tisdag 3 september 2013
Vecka 35
I veckan har jag framförallt refaktoriserat systemdesignen för att göra den mer modulär. FD- och FR-modulerna opererar numera på enstaka frames och en ny typ av toppnivåmodul, ITechnique, hanterar laddning och streaming av videofiler. Den enklaste instantieringen av denna typ utför bara detektion och igenkänning på varje frame individuellt, i tur och ordning, men jag har planerat att skriva en annan instans som utnyttjar object tracking i stil med det jag beskrev förra veckan. I och med denna nya design blir det nu möjligt att plugga in en godtycklig FR-algoritm utan att behöva copy-pasta hela modulen. Det borde även bli enklare att bygga andra metoder, som att t. ex. köra frontal och profil-detektion parallellt, eller att bygga en ensemble-igenkännare som utnyttjar flera olika algoritmer. Jag har även införskaffat ett nytt dataset som jag dock inte haft tid att utnyttja än.
Under veckans gång dök det upp ett antal nya buggar, varav vissa krävde att jag lärde mig mer om hur OpenCV fungerar för att åtgärda, vilket antagligen kommer förebygga framtida problem också.
Jag anser att jag ligger i fas med planeringen, jag har påbörjat arbete med object tracking tidigare än den initiala planen men har kanske inte lagt fullt lika mycket tid på profildetektion. Rapporten behöver också mer arbete, men jag tycker inte att det är så pass sent än att jag måste börja tänka på att knyta ihop den, eftersom jag bara just passerade halvvägsstrecket.
Jag har tagit hjälp från min bror Ludvig med att utveckla det nya datasettet. Utöver det har jag inte haft någon kontakt med någon utifrån.
måndag 26 augusti 2013
Vecka 34
Förra veckan implementerade jag en GUI-modul till Wawo-modulen. Jag tittade även på OpenBR, men hade problem med att installera den på Ubuntu 12.04. Den verkar i ett ganska tidigt utvecklingsstadium och är kanske inte lämplig att användas i en kommersiell produkt pga det. Däremot hittade jag en object tracking-algoritm, CAMSHIFT, implementerad i OpenCV, som utvecklades specifikt för att tracka människor och ansikten och som fungerar i realtid. Den följer objektet baserat på distributionen av färger i den initiala regionen och därmed är den vara relativt robust mot förändringar i orientation hos det följda ansiktet. Preliminära tester med webcam tyder på att den fungerar väldigt bra i det här hänseendet. Jag har en idé till en utbyggnad av de existerande metoderna som utnyttjar object tracking för att identifiera ansiktet även i vissa frames där de grundläggande detektions- och igenkänningsalgoritmerna inte klarar av det pga orientationsförändringar. Jag ska försöka implementera och testa den nu i veckan. Idén fungerar i princip både för att tracka objekt framåt och bakåt i tiden, men det finns ett stort praktiskt problem med att tracka objekt bakåt, vilket är de vanligaste videoformaten. Eftersom de inte lagrar hela frames i sekvens, utan endast vissa nyckelframes samt skillnaderna mellan nyckelframes och frames som följer efter dem innebär det att man snabbt och lätt kan hämta nästa frame, men inte den föregående. Det är t. ex. mycket svårare att spela en videofil baklänges än framlänges. Såvitt jag kan avgöra så är det enda rimliga sättet att göra det på att helt enkelt buffra alla frames medan filen spelas framlänges. Problemet med detta är att det kräver extremt mycket arbetsminne. En minut video i 720p kräver t. ex. okomprimerat ca 4.7 Gb. Det skulle kanske fungera att buffra hela videon i RAM för kortare lågupplösta filmer, men helt orealistiskt för längre klipp. En lösning skulle kunna vara att lagra bufferten på disk, men det kommer då å andra sidan bli betydligt långsammare. Jag ska försöka implementera och testa alla varianter förutsatt att tid finns.
I veckan har jag lärt mig mer om OpenBR samt hur CAMSHIFT-algoritmen fungerar, och hur man använder dess implementation i OpenCV. Jag följer tidsplanen till den utsträckning jag pratade om förra veckan. Träffade Petter i tisdags.
I veckan har jag lärt mig mer om OpenBR samt hur CAMSHIFT-algoritmen fungerar, och hur man använder dess implementation i OpenCV. Jag följer tidsplanen till den utsträckning jag pratade om förra veckan. Träffade Petter i tisdags.
måndag 19 augusti 2013
Vecka 33
I veckan har jag byggt Wawo-modulen, och den verkar fungera bra. Rudimentära tester tyder på bättre prestanda än Eigenfaces med färre samples. Nästa vecka ska jag först bygga en GUI-modul till Wawo, vilket borde gå fort nu när GUI-systemet är på plats. Efter det ska jag titta på OpenBR och försöka bygga en OpenBR-modul också. Efter det ska jag ägna mig åt att testa och försöka förbättra de existerande teknikerna. Jag har lärt mig mer om hur Wawo-biblioteket fungerar och vad det klarar av.
Enligt schemat ska jag vara klar med portningen av pluginet nu, och det kan man nog säga att jag är. Dessutom ska jag börjat testa, och det har jag gjort kontinuerligt under implementationen, så jag är tekniskt sett inte efter där heller. Jag ska ha börjat skriva resultat-sektionen och det har jag inte, men jag har börjat skriva om den experimentella designen, och det är direkt relaterat. Resultatet i sig borde mest bara vara att fylla i data och kanske kommentera den lite grann. I övrigt hade jag åsidosatt tid för att arbeta med att lägga till stöd för profil-igenkänning, och Haar-cascade-detektorn kan ju faktiskt redan göra det med rätt träningsdata. Därmed kan alla tekniker jag implementerat hittills redan göra det. Det återstår bara att testa och kanske försöka integrera profil- och frontaligenkänning och det kan jag baka in i den generella testningen, så med det i åtanke har jag mer tid på mig än vad det verkat som tidigare.
Jag har inte haft kontakt med någon annan, bortsett från något enstaka e-mail om Wawo-filer, men jag ska ha ett möte med handledarna på tisdag.
måndag 12 augusti 2013
Vecka 32
I veckan har jag i stort sett färdigställt GUIet. Nästa vecka ska jag börja med Wawo-modulen. Efter det överväger jag att ta en andra titt på OpenBR. Jag läste en artikel som indikerar att de använder en egen algoritm som kan vara värd att evaluera.
Jag har lärt mig mer om GUI-programmering i Qt under veckan, vilket känns nyttigt i allmänhet. I veckan hann jag med ungefär det jag förutspådde förra veckan, så ingenting har förändrats sen dess. Jag hade ett möte med Petter i onsdags.
Jag har lärt mig mer om GUI-programmering i Qt under veckan, vilket känns nyttigt i allmänhet. I veckan hann jag med ungefär det jag förutspådde förra veckan, så ingenting har förändrats sen dess. Jag hade ett möte med Petter i onsdags.
måndag 5 augusti 2013
Vecka 31
Som jag nämnde sist så har jag återigen bara haft halva veckan på mig. Jag fixade i alla fall buggen med filformatet från förra veckan och så har jag påbörjat implementationen av ett GUI i Qt till programmet. Jag valde ett GUI över ett CLI eftersom det är lättare att hålla programmet kompatibelt med flera plattformar, och det kan kanske vara mer användarvänligt. Dessutom har jag förmodligen fått tillgång till de nödvändiga Wawo-filerna nu, även om jag inte haft tid att testa dem än. Ska påbörja det så snart GUIet är färdigt.
I veckan har jag återbekantat mig med grunderna till Qt och hur man får det att samarbeta med CMake. Jag har arbetat med det någon enstaka gång tidigare, men det var länge sedan.
Jag ligger fortfarande efter med att avsluta implementationen av standalone-programmet, och enligt planeringen ska jag börja skriva resultatsektionen fr. o. m nästa vecka, vilket jag betvivlar att jag hinner. Om jag däremot hinner avsluta GUIet och åtminstone påbörja Wawo-modulen i veckan (och förutsatt att Wawo fungerar nu) kanske jag kan börja testningen veckan därefter och då borde jag inte vara så långt efter.
Som vanligt har jag inte kommunicerat med någon annan än folk på Codemill via mail rörande Wawo-filer.
I veckan har jag återbekantat mig med grunderna till Qt och hur man får det att samarbeta med CMake. Jag har arbetat med det någon enstaka gång tidigare, men det var länge sedan.
Jag ligger fortfarande efter med att avsluta implementationen av standalone-programmet, och enligt planeringen ska jag börja skriva resultatsektionen fr. o. m nästa vecka, vilket jag betvivlar att jag hinner. Om jag däremot hinner avsluta GUIet och åtminstone påbörja Wawo-modulen i veckan (och förutsatt att Wawo fungerar nu) kanske jag kan börja testningen veckan därefter och då borde jag inte vara så långt efter.
Som vanligt har jag inte kommunicerat med någon annan än folk på Codemill via mail rörande Wawo-filer.
onsdag 31 juli 2013
Vecka 30
Förra veckan ägnade jag mig åt att testa och åtgärda mindre problem med det nya datasettet samt efter förslag från Petter lägga till information om ansiktsregioner i annotations-filformatet. Jag stötte dock på en bugg under utvecklingen av det som jag fastnade på i onsdags. Fr. o. m torsdag fram till idag (onsdag v31) har jag varit upptagen med en personlig grej och inte kunnat jobba på exjobbet vilket innebär att jag inte gjort många framsteg den senaste tiden. Jag har dessutom fortfarande inte fått tillgång till de nödvändiga filerna till Wawo-biblioteket.
Jag har inte lärt mig något speciellt under veckan, att implementera en parser till ett filformat är en ganska mundan uppgift.
Eftersom det jag arbetar på nu kan ses som en del av implementationen av standalone-programmet och inte direkt relaterat till testningen, och eftersom jag fortfarande inte kunnat implementera Wawo-modulen betraktar jag det som att fortfarande ligger efter i planeringen. Efter att filformatet fungerar som det ska tänker jag bygga ett CLI, och sedan fortsätta med testrelaterade uppgifter.
Jag har inte lärt mig något speciellt under veckan, att implementera en parser till ett filformat är en ganska mundan uppgift.
Eftersom det jag arbetar på nu kan ses som en del av implementationen av standalone-programmet och inte direkt relaterat till testningen, och eftersom jag fortfarande inte kunnat implementera Wawo-modulen betraktar jag det som att fortfarande ligger efter i planeringen. Efter att filformatet fungerar som det ska tänker jag bygga ett CLI, och sedan fortsätta med testrelaterade uppgifter.
måndag 22 juli 2013
Vecka 29
I veckan har jag påbörjat implementationen av Wawo-modulen. Jag upptäckte dock att det saknas filer från den version av Wawo-biblioteket jag fått tillgång till, så jag kan inte slutföra det än. Istället har jag implementerat en utbyggnad av kaskaddetektorn. Kaskaddetektorn med "full frontal"-träningsdata fungerar utmärkt så länge som ansiktet tittar rakt in i kameran, men den är väldigt känslig för om huvudet böjs åt sidan, dvs, roterat runt kamerans riktningsaxel. För att åtgärda det har jag skapat en algoritm som stegvis roterar varje frame och applicerar detektion på den roterade bilden, varefter de detekterade regionerna roteras tillbaka till original-orientationen och den slutgiltiga detekterade regionen är genomsnittet av dessa roterade regioner. Initiala tester indikerar att den modifierade algoritmen ger bättre precision, men eftersom varje frame måste behandlas ett flertal gånger (en gång för varje rotationssteg) blir den långsammare med en konstant faktor. Slutligen så har jag skapat ett nytt dataset baserat på klipp från filmen Night of the Living Dead som ligger i den publika domänen. Tanken är att ha åtminstone ett dataset som liknar den typ av data som programmet kan tänkas användas till i verkligheten. Det består för närvarande av ett antal korta klipp från filmen som innehåller ett till fyra kända ansikten i ett stort antal olika orientationer och ljusförhållanden från en databas med fem individer, såväl som ett klipp utan ansikten och ett klipp med ett okänt ansikte. Galleriet består av 6-9 stillbilder per person som alla är hämtade från Google Images, varav den stora majoriteten är från filmen. Ingen större hänsyn har tagits till kvalitet eller upplösning på galleribilderna, vilket borde reflektera ett normalt användningsscenario. Jag har skapat referensannoteringar, men inte hunnit testa datasettet än.
I veckan har jag fått lite bättre förståelse för hur Wawo fungerar, samt hur bra detektionsalgoritmen fungerar under olika förhållanden, och vilken typ av testdata som kan användas för kommersiella projekt.
På grund av detta ständiga strul med Wawo ligger jag naturligtvis fortfarande efter med implementationen av standalone-programmet. Jag ska även skriva en sektion i rapporten om hur Wawo fungerar. Jag borde dessutom skapa något slags UI för att man ska kunna räkna programmet som oberoende funktionellt. Efter det ska jag utförligt testa de implementerade metoderna på det nya datasettet och jämföra med resultat från det gamla, och antingen hitta eller skapa mer testdata, eller bygga ut implementationen med fler metoder.
Jag skulle ha träffat Petter och Tomas i tisdags, men pga kommunikationsproblem blev det aldrig av, så åtminstone jag och Petter kommer träffas tisdag v30 istället. Annars har jag bara haft mailkontakt med Rickard för att försöka reda ut Wawo-trasslet.
I veckan har jag fått lite bättre förståelse för hur Wawo fungerar, samt hur bra detektionsalgoritmen fungerar under olika förhållanden, och vilken typ av testdata som kan användas för kommersiella projekt.
På grund av detta ständiga strul med Wawo ligger jag naturligtvis fortfarande efter med implementationen av standalone-programmet. Jag ska även skriva en sektion i rapporten om hur Wawo fungerar. Jag borde dessutom skapa något slags UI för att man ska kunna räkna programmet som oberoende funktionellt. Efter det ska jag utförligt testa de implementerade metoderna på det nya datasettet och jämföra med resultat från det gamla, och antingen hitta eller skapa mer testdata, eller bygga ut implementationen med fler metoder.
Jag skulle ha träffat Petter och Tomas i tisdags, men pga kommunikationsproblem blev det aldrig av, så åtminstone jag och Petter kommer träffas tisdag v30 istället. Annars har jag bara haft mailkontakt med Rickard för att försöka reda ut Wawo-trasslet.
måndag 15 juli 2013
Vecka 28
Under den här veckan har jag identifierat problemet att annotera en video med ansiktsigenkänning över tid som ett multilabel classification-problem, i kontrast med binär eller multipel klassifikation. Som följd har jag hittat ett antal olika prestandamått för den typen av problem i litteraturen som jag dokumenterat i rapporten. Jag har dessutom implementerat en annoteringsklass som kan beräkna dessa mått i förhållande till en "sann" annotering. Utöver det så har jag satt mig in i face detection-metoden cascade classification with Haar-like features som jag också beskrivit detaljerat i rapporten.
Insikten om vilken typ av teoretiskt problem jag har att göra med har varit mycket värdefull, det kommer göra det lättare att söka i litteraturen i fortsättningen. Det är även värdefullt att vara insatt i hur face detection-metoden fungerar i detalj eftersom prestandan på ansiktsigenkänning är direkt beroende av detektionsprestandan och kommer göra det lättare att hitta bra parameterkonfigurationer. Jag har äntligen fått tillgång till Wawo-biblioteket men jag hann inte börja implementera Wawo-modulen förra veckan, vilket jag enligt schemat borde vara klar med vid det här laget. Det är med andra ord det jag tänker fokusera på nu. Tekniskt sett var det meningen att jag skulle återskapa hela ansiktsigenkänningspluginet vilket också inkluderar en OpenBR-modul. Dock så verkar det som att det bara anropar OpenCV för ansiktsdetektion och igenkänning, så det är antagligen redundant och ingenting jag tänker lägga tid på nu. Efter det är det meningen att jag ska börja testa. Jag har dock bara tillgång till en testdatabas som antagligen inte är så representativ för det applikationen ska användas till (ett subjekt i varje video som sitter still rakt framför kameran och är närvarande under hela videon), så jag kommer behöva hitta och manuellt skapa annoteringar för fler dataset. Går det inte att få tillgång till standard-set med de egenskaper jag är intresserad av måste jag skapa mitt eget. Jag har inte haft någon kontakt med någon annan i veckan förutom Rickard som fixade Wawo till mig.
Insikten om vilken typ av teoretiskt problem jag har att göra med har varit mycket värdefull, det kommer göra det lättare att söka i litteraturen i fortsättningen. Det är även värdefullt att vara insatt i hur face detection-metoden fungerar i detalj eftersom prestandan på ansiktsigenkänning är direkt beroende av detektionsprestandan och kommer göra det lättare att hitta bra parameterkonfigurationer. Jag har äntligen fått tillgång till Wawo-biblioteket men jag hann inte börja implementera Wawo-modulen förra veckan, vilket jag enligt schemat borde vara klar med vid det här laget. Det är med andra ord det jag tänker fokusera på nu. Tekniskt sett var det meningen att jag skulle återskapa hela ansiktsigenkänningspluginet vilket också inkluderar en OpenBR-modul. Dock så verkar det som att det bara anropar OpenCV för ansiktsdetektion och igenkänning, så det är antagligen redundant och ingenting jag tänker lägga tid på nu. Efter det är det meningen att jag ska börja testa. Jag har dock bara tillgång till en testdatabas som antagligen inte är så representativ för det applikationen ska användas till (ett subjekt i varje video som sitter still rakt framför kameran och är närvarande under hela videon), så jag kommer behöva hitta och manuellt skapa annoteringar för fler dataset. Går det inte att få tillgång till standard-set med de egenskaper jag är intresserad av måste jag skapa mitt eget. Jag har inte haft någon kontakt med någon annan i veckan förutom Rickard som fixade Wawo till mig.
söndag 7 juli 2013
Vecka 27
Jag har varit sjuk i veckan så jag har fått relativt lite gjort. Jag har dock skrivit en detaljerad beskrivning av de algoritmer som jag hittills utnyttjat i implementationen till rapporten, dvs Eigenfaces, Fisherfaces och Local Binary Patterns Histograms. För att göra det har jag varit tvungen att fördjupa min förståelse för dem, vilket antagligen kommer bli nyttigt senare, då det kan vägleda mig i designen av testerna. Jag skulle säga att jag fortfarande ligger efter i tidsplaneringen. För det första ska jag ha färdigställt implementationen av standalone-versionen av pluginet till slutet av nästa vecka, och det ser svårt ut just nu eftersom jag fortfarande inte fått tillgång till Wawo-biblioteket. Jag har dessutom inte implementerat en OpenBR-modul, vilket också är en del av pluginet. För det andra ska jag ha färdigställt litteraturstudien av prestandatestningen, och även om jag har skrivit en ganska detaljerad introduktion till fältet och algoritmerna jag använt hittills har jag fortfarande ingen ordentlig experimentell design. Petter har flera gånger framhållit att det vore bra med true/false positive/negative-mätningar och Tomas har föreslagit en ROC-kurva. Problemet är att båda måtten är baserade på binär klassifikation, och det finns ingen uppenbar intuitiv generalisering till multipla klasser. Ett annat problem jag stött på när jag letat efter alternativa mått är att OpenCV-biblioteket bara tillhandahåller rank-1 klassifikationen och ett distansmått vars definition är lite otydlig medan många mått kräver rank 1 till rank-N klassifikationerna med tillhörande väldefinierade distansmått. Detta begränsar mina möjligheter kraftigt. Jag ska dock spendera kommande vecka med att fördjupa mig i det här problemet ytterligare, samt skriva ett kapitel i rapporten som beskriver den experimentella designen. Får jag dessutom tillgång till Wawo under veckan hinner jag kanske börja implementera Wawo-modulen också.
måndag 1 juli 2013
Vecka 26
Denna vecka har jag främst arbetat med implementationen. Jag har lagt till stöd för ansiktsigenkänning med Fisherfaces och Local Binary Pattern Histograms (LBPH). Har arbetat en del med systemets arkitektur för att dels göra det enkelt att byta ut komponenter som ansiktsdetektion, ansiktsigenkänning, bildnormalisering, etc, och dels göra det enkelt att mata in parametrar till dem. Ansiktsigenkänningsmodulen är i princip helt oberoende av OpenCV, men inte detektion eller normalisering. Det är antagligen möjligt att koppla loss även dem, men det är inget jag tänker lägga energi på för tillfället. Jag har även börjat skriva introduktionskapitlet till rapporten, men jag saknar en del fakta för att färdigställa det och väntar på svar om det från berörda parter. Jag fick access till vidispine-pluginets källkod i veckan och jag har bekantat mig med den, samt extraherat en face tracking-metod från den till min egen kod. Tydligen utnyttjas redan några olika bibliotek i pluginet, dvs inte enbart Wawo utan även OpenCV och OpenBR, och jag ska skriva motsvarande moduler till Vidiface. Dock fanns inte Wawo-biblioteket själv med i plugin-repot och jag måste forsätta leta efter det. Har åtminstone möjlighet att studera dess API genom plugin-koden.
Kan inte säga att jag lärt mig så jättemycket under veckan, fast jag fått mer insikt i min egen systemdesign. Har ju även äntligen fått koll på hur vidispine-pluginet fungerar, så det kan man väl se som en erfarenhet. Ibland känns det lite svårt att veta vilka aspekter jag bör fokusera på nu när stommen i koden är etablerad, och det gör arbetet tyngre mentalt.
Om man kollar på tidsplaneringen så har jag två veckor på mig att slutföra några olika saker. Främst så ska jag extrahera Vidispine-pluginet till ett standalone-program, och i det målet återstår följande:
Jag ska även avsluta problembeskrivningen i rapporten, och det är som sagt påbörjat. Fördjupningsstudien ska också avslutas, och det innebär att jag ska avsluta introduktionerna till ansiktsdetektion och ansiktsigenkänning. Jag bör även gå in i detalj runt det metoder jag kommer att använda, men det känns lättare att göra senare. Har bara kommunicerat med Tomas, Rickard och Johanna via mail om att få access till källkod och generell information om projektet.
Kan inte säga att jag lärt mig så jättemycket under veckan, fast jag fått mer insikt i min egen systemdesign. Har ju även äntligen fått koll på hur vidispine-pluginet fungerar, så det kan man väl se som en erfarenhet. Ibland känns det lite svårt att veta vilka aspekter jag bör fokusera på nu när stommen i koden är etablerad, och det gör arbetet tyngre mentalt.
Om man kollar på tidsplaneringen så har jag två veckor på mig att slutföra några olika saker. Främst så ska jag extrahera Vidispine-pluginet till ett standalone-program, och i det målet återstår följande:
- Wawo-modul.
- OpenBR-modul.
- UI
- Output
Jag ska även avsluta problembeskrivningen i rapporten, och det är som sagt påbörjat. Fördjupningsstudien ska också avslutas, och det innebär att jag ska avsluta introduktionerna till ansiktsdetektion och ansiktsigenkänning. Jag bör även gå in i detalj runt det metoder jag kommer att använda, men det känns lättare att göra senare. Har bara kommunicerat med Tomas, Rickard och Johanna via mail om att få access till källkod och generell information om projektet.
fredag 21 juni 2013
Vecka 25
Den här veckan har jag börjat implementera på allvar. I början av veckan satte jag upp en utvecklingsmiljö bestående av CMake, Google Testing Framework och Git. Resten av dagarna har jag ägnat åt att implementera den första versionen av standalone-applikationen som jag under projektet tänker referera till som VidiFace. Eftersom jag inte fått tillgång till källkoden för Vidispine-pluginet än så bygger den nuvarande versionen helt och hållet på OpenCV-rutiner. Den nuvarande versionen stödjer ansiktsdetektion med cascade classifier with Haar-like features och ansiktsigenkänning med Eigenfaces. Systemdesignen är modulär, så det ska vara enkelt att bygga ut systemet med alternativa metoder för detektion eller igenkänning, oberoende av varandra. T. ex. ska jag bygga en igenkännings-modul baserad på Wawo så snart jag får tillgång till källkoden till det existerande Vidispine-pluginet. OpenCV stödjer även några andra igenkänningsalgoritmer som jag tänker inkludera. Jag har skapat ett enkelt testprotokoll med ansiktsvideodatabasen NRC-IIT och ett ad hoc-precisionsmått jag uppfunnit själv. Jag har lärt mig en hel del om OpenCV denna vecka, vilket verkar vara väldigt nyttigt inte bara för ansiktsigenkänningen utan även för allt som har att göra med bild- och videobehandling. Har även lärt mig hur Eigenfaces och den relaterade Fisherface-algoritmen fungerar i lite större teknisk detalj, vilka jag förmodligen kommer ha med i den slutgiltiga analysen. Det känns som att jag gjort en signifikant insats till implementationen av standalone-applikationen med tillhörande modulär design den här veckan, vilket är ett av huvudmålen för denna period. Jag har ytterligare tre veckor på mig att avsluta den fasen, samt att skriva en introduktion till rapporten och de kapitel i rapporten som relaterar direkt till fördjupningsstudien. Nästa vecka tänker jag fortsätta att ägna åt att lägga till fler ansiktsigenkänningstekniker till implementationen. Efter det bör jag ha tillräckligt med material för att avsluta majoriteten av fördjupningsstudien. Dessutom bör exjobbsförslaget vara godkänt av institutionen vid det laget, så jag kan skriva introduktionen utan att behöva göra alltför stora revisioner senare. Jag hade ett kort möte med Petter i tisdags. Allt rullar på just nu, så vi hade inte så mycket att diskutera.
fredag 14 juni 2013
Vecka 24
Nu har jag jobbat i drygt en vecka, och fokus har legat mest på fördjupningsstudien. Jag har läst reviews om face recognition, face recognition i video, face detection och face tracking, samt skrivit sammanfattande texter om var och en av dem. Jag tänkte att de texterna skulle kunna ligga till grund för en introduktion till ämnesområdet i rapporten. Jag har fått en översiktlig bild av ämnesområdet, men jag har inte gått in alltför djupt i någon enskild algoritm. Har gått igenom och implementerat exemplen i en tutorial om face recognition i OpenCV. Jag planerar att adaptera det som ett alternativ till Wawo som FR-motor till Vidispine-applikationen. Har dock inte fått tillgång till källkoden till det existerande pluginet än, men förhoppningsvis borde det inte dröja länge till. Idag skickade jag ett mail till Sebastian Gröhn som arbetade med FR-pluginet till Vidispine tidigare och bad honom om hjälp att få tillgång till källkoden. Utöver det träffade jag Tomas som hastigast i måndags bara för att stämma av om handledningen, men annars har jag arbetat själv hela veckan. Specifikationen är tekniskt sett inte godkänd än, väntar fortfarande på feedback från handledarna innan jag skickar in den till CS, men förutsatt att tidsplanen blir accepterad så ligger jag i fas. Under juni är det meningen att jag ska ägna mig åt att utföra en litteraturstudie om avvägningen mellan precision och prestanda för FR-algoritmer, dokumentera den samt extrahera Vidispine-pluginet till ett standalone-program och skapa en modulär design till det, och det jag gjort under veckan är i linje med det.
onsdag 5 juni 2013
Test
Detta är ett testinlägg i min projektdagbok till mitt examensarbete i Teknisk Datavetenskap vid Umeå Universitet. Kan dock lika gärna nämna att jag börjat arbeta med exjobbspecifikationen, samt att jag väntar på att få en introduktion och tillgång till källkoden på Vidispine-projektet. När specen är färdig har jag tänkt inleda min litteraturstudie i ansiktsigenkänning. Jag tänkte att jag kunde dedikera ett kapitel i rapporten till ansiktsigenkänning i allmänhet och kanske ett annat kapitel till den underliggande teoretiska modellen för Wawo som tydligen är facial recognition-motorn som Vidispine utnyttjar. I det kapitlet kan jag diskutera hur den kan manipuleras för att förbättra Vidispine-systemets prestanda och kvalitet, och sedan testa det i praktiken.
Prenumerera på:
Kommentarer (Atom)