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.
onsdag 31 juli 2013
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.
Prenumerera på:
Kommentarer (Atom)