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.

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.

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.