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