Capita Selecta: Mens Machine Communicatie en Multimedia Recogneyes Tom Crauwels
1
Erik De Weerdt
Inleiding
Voor het vak Capita Selecta: Mens Machine Communicatie en Multimedia werden de studenten redelijk vrij gelaten in de keuze van hun project. In dit document wordt het ontwerp beschreven van een toepassing die uiteindelijk de naam Recogneyes zou gaan dragen en gebaseerd is op gezichtsherkenning. Het doel van dit systeem is om gebruikers in een oogopslag te kunnen voorzien van een hoop nuttige informatie. Welke informatie weergegeven wordt en hoe, maar ook andere kritische vragen vonden tijdens het ontwikkelingsproces hun antwoord.
2 2.1
Van idee tot concreet plan Oorspronkelijke idee¨ en
Het idee om iets met gezichtsherkinning te gaan doen, was niet de enige optie die we oorspronkelijk bekeken hebben. Na de eerste brainstorm-sessies in het begin van het academiejaar, bleven we uiteindelijk met vier idee¨en zitten: Diminished Reality met Google’s Streetview Diminished Reality houdt in om beelden aan te kunnen maken, waarin specifieke objecten verwijderd kunnen worden. In combinatie met Streetview zou het dan mogelijk worden om gebouwen uit het landschap te verwijderen en de achterliggende gebouwen of natuur te bekijken. Automatische stripgeneratie Aan de hand van een eenvoudig tekstueel verhaal kan een soort strip gegenereerd worden. Door gebruik te maken van grote online databanken en zoekdiensten, bijvoorbeeld Google Images, kunnen dan rudimentaire beeldverhalen opgebouwd worden. Automatische sc` ene-synthese Om een 3D-sc`ene aan te maken moet ofwel een 3D-modelleringspakket gebruikt worden, of moet de sc`ene tot in detail beschreven worden in een tekstbestand. Automatische sc`ene-synthese zou toelaten om op hoog niveau te beschrijven welke objecten er aanwezig zijn en hoe ze zich tot elkaar verhouden. In extremis zou een zin als “een blok met een bol op” voldoende moeten zijn om de sc`ene te genereren. Reclameborden gedreven door gezichtsherkenning Zoals in de film Minority Report, zou men aan de hand van gezichtsherkenning gepersonaliseerde (reclame)boodschappen kunnen tonen aan personen die het systeem voorbijwandelen. Uiteindelijk viel de keuze op het laatste idee, dat dan ook verder uitgewerkt werd.
1
2.2
Keuze van de software
Een eerste belangrijke beslissing was de keuze van de software. Er zijn erg veel paketten in omloop voor gezichtsherkenning, allemaal met verschillende mogelijkheden. De keuze was dus niet evident. Initi¨eel werden de volgende eisen gehanteerd, waarop elk pakket ge¨evalueerd werd. • Omdat er met een live feed wordt gewerkt, moet het mogelijk zijn om gezichten in een videostream te herkennen. • Verwacht wordt dat er meestal meer dan ´e´en persoon tegelijk voorbij het systeem zal wandelen, dus het moet mogelijk zijn om meerdere gezichten binnen hetzelfde beeld te herkennen. • Het pakket moet willekeurige foto’s als trainingsdata aanvaarden en zeker niet vertrouwen op perfecte close-ups van het gezicht. • Het pakket moet flexibel zijn in de omgang. Dit wil zeggen dat het eenvoudig moet zijn om te herkende personen op te vragen en buiten het pakket te gebruiken, maar ook dat invoer vanaf een webcam zonder veel geknoei mogelijk is. • De kostprijs moet laag zijn en bij voorkeur gratis. Van alle bekeken paketten, zeven in totaal, werden er uiteindelijk twee weerhouden om als serieus alternatief onderzocht te worden. Zowel face.com als PittPatt voldoen in grote mate aan de bovenstaande eisen en werden zodoende aan een grondige evaluatie onderworpen.
face.com face.com heeft een aantal sterke punten in de aanbieding. Zo is het pakket gratis, mits een aantal kleine beperkingen, en is een integratie met Facebook reeds voorzien. Omdat de trainingsdata naar alle waarschijnlijkheid van Facebook zou komen, werd dit als een groot pluspunt beschouwd. Verder is de API bijzonder goed gedocumenteerd, wat het ontwikkelingsproces alleen maar ten goede kan komen. Langs de andere kant is face.com een webservice en introduceert het potenti¨eel grote hoeveelheden netwerkverkeer als veel foto’s worden doorgestuurd. De rate limit, die gratis gebruikers wordt opgelegd, kan ook beperkend werken in dit geval. Hiernaast zorgde ook het ontbreken van ondersteuning voor video ervoor dat de uiteindelijke keuze ging naar het hieronder beschreven PittPatt.
PittPatt Het andere alternatief, PittPatt, heeft ook wel wat te bieden. Zo is het mogelijk om video te analyseren en is het pakket niet kieskeurig als het op trainingsdata aankomt. Dat laatste laat toe om de eerder slechte foto’s van Facebook te gebruiken om het pakket op te trainen. Verder draait de software, in tegenstelling tot face.com, volledig offline. De overhead van het doorsturen van foto’s wordt hierdoor wel ge¨elimineerd, maar de complexiteit van de herkenning wordt naar de lokale computer overgeheveld. De software bleek ook niet zo happig op 64bit-systemen, wat in een later stadium nog enige vertraging opleverde. Hoewel PittPatt niet gratis is, bestaat er wel een gratis versie voor onderzoeksdoeleinden.
2.3
Evaluatie van de mogelijkheden
Naast de keuze van de software is het ook van belang dat er wordt gekeken naar de dienst die uiteindelijk zal worden aangeboden. Omdat reclame niet echt een meerwaarde zal realiseren op de campus, was de keuze voor een soort gepersonaliseerde valven eerder vanzelfsprekend. De vraag bleef dan wel welke informatie er aangeboden zou worden. Aangezien Toledo en KULoket nogal goed afgeschermd zijn door middel van een login, bleek het idee om recente mededelingen hieruit te halen niet levensvatbaar en werd teruggevallen op vrij beschikbare informatie.
2
Het meest voor de hand liggende voorbeeld van vrij beschikbare informatie zijn de lessenroosters, zij het wel enkel de roosters per vak. Om niet direct te veel functies te implementeren, werd ervoor gekozen om initi¨eel enkel de weergave van het persoonlijke lessenrooster te implementeren. Natuurlijk werd hierbij rekening gehouden met mogelijke uitbreidingen. Mede door tijdsgebrek en de vrij positieve reacties op deze eenvoudige functionaliteit, bleef dit de enige functie van de uiteindelijke software. Het ophalen van de lessenroosters kon op twee manieren gebeuren. Ofwel werd de ontwikkelde applicatie uitgebreid met een module die een persoonlijk uurrooster samenstelt, ofwel werd de reeds bestaande Facebook-applicatie KULTimeTable gebruikt. Beide opties vereisen dat de gebruiker zelf nog aangeeft welke vakken hij of zij volgt, zodat een lessenrooster kan worden samengesteld. Rekening houdend met het gegeven dat een potenti¨eel groot aantal gebruikers de bestaande Facebook-applicatie al gebruikt, leek het een logische keuze om de lessenroosters op deze manier te verkrijgen.
3
De applicatie
Bij het ontwerp van de applicatie werd ervoor geopteerd om de implementatie op te splitsen in een offline en een online gedeelte. De gezichtsherkenning gebeurt offline, het beheer van de toepassing en de eigenlijke interface werden als webapplicatie ontwikkeld. Er zijn diverse redenen voor deze keuze, waaronder de grote interactie met Facebook en de flexibiliteit van HTML inzake interfaceontwerp. Hoe deze componenten uiteindelijk samenwerken wordt in de volgende paragrafen beschreven.
3.1
Offline
Figuur 1: Opbouw van het offline gedeelte Het offline gedeelte van de opstelling draait op een afzonderlijke pc en wordt gestart door het java programma main.java uit te voeren. Dit programma zal dan automatisch nieuwe gebruikers downloaden in een database die gebruikt kan worden door de PittPatt SDK. Het programma downloadt de foto’s van alle nieuwe gebruikers en geeft die mee als argument aan het C programma addnewperson. Dit programma scant de foto’s en groepeert al de gevonden gezichten in subjects waarvan met enige zekerheid gezegd kan worden dat het over dezelfde persoon gaat. Aangezien een gebruiker meestal zelf het meeste voorkomt in zijn profielfoto’s en foto’s waarin hij of zij getagd is, is het aannemelijk dat het subject dat het meeste voorkomt is in de foto’s de gebruiker is. Enkel dit subject wordt dan bijgehouden en toegevoed aan de database Facebook.bin. Deze database bevat voor elke gebruiker een subject met een template voor 3
elk gevonden gezicht in de initiele foto’s. Het java programma voegt dan nog de Facebook ID van de gebruiker toe aan het tekstdocument Facebook.txt zodat als een subject herkend wordt, het programma dat subject snel kan koppelen aan een Facebook ID.Dit tekstbestand wordt ook gebruikt om na te gaan welke gebruikers er nieuw zijn op de server en dus gedownload moeten worden. Het programma kan namelijk via een GET-request (admin.php?list users) de lijst met gebruikers opvragen. Om de foto’s te downloaden, verstuurt het programma een ander request (download.php?id=¡ID¿). Het java programma zal dan het C programma recogneyescam opstarten. Dit zal eerst de database inlezen en daarna elke keer een nieuwe webcamfoto nemen. In die webcamfoto zoekt het programma dan naar gezichten probeert die te matchen met de templates in de database. Voor elke matching template laat het C programma aan de het java programma weten welk subject er gevonden is. Het java programma zal dan de juiste gebruikers ID doorsturen naar de webserver (bigbrother.php?entry[]=¡ID¿). Elke tiende webcam foto zal het java programma ook even checken of er nieuwe gebruikers zijn op de webserver. Indien die er zijn, zal het java programma die downloaden en voor elk van hen weer het C programma addnewperson uit voeren. Daarna wordt recogneyescam terug gestart en worden er weer webcamfoto’s genomen.
3.2
Online
Figuur 2: Opbouw van het online gedeelte Het online gedeelte van de toepassing staat in voor het verzamelen van foto’s om de gezichtsherkenning te trainen, het beheren van deze foto’s, de registratie van gedetecteerde gebruikers, het ophalen van allerhande gegevens zoals het uurrooster en de weergave aan de voorbijkomende gebruikers. Hoe dit in zijn werk gaat, wordt ge¨ıllustreerd door figuur 2 en in de volgende paragrafen verder besproken.
3.2.1
Facebook
De belangrijkste bron van data voor onze toepassing is Facebook. Foto’s waarin de gebruiker getagd is worden gedownload om als trainingsdata te fungeren en de uurroosters worden via de KULTimeTableapplicatie verkregen. Het downloaden van de foto’s wordt gerealiseerd met een Facebook-applicatie. Wanneer een gebruiker de applicatie start, wordt hij verzocht om toegang tot zijn fotocollectie te verlenen. Vervolgens worden alle foto’s waarin de gebruiker getagd is, alsook zijn profielfoto’s, in de database
4
geladen. Een zeer beperkte hoeveelheid meta-informatie wordt opgeslagen om latere identificatie te versnellen.
3.2.2
Webapplicatie
De webapplicatie is samengesteld uit een aantal verschillende componenten. Zo bevat de Recogneyesmodule uit figuur 2 de eigenlijke interface die de gebruiker ziet. Big Brother is de module die bijhoudt welke gebruikers er aanwezig zijn. Van de eigenlijke applicatie is dit de enige module die door PittPatt aangesproken wordt. Tenslotte zorgen de modules in het Services-blok voor de aanvoer van gegevens naar de applicatie.
AJAX Tot hiertoe werd een zeer belangrijke component over het hoofd gezien: de AJAX Engine. Deze module vormt de motor van het hele systeem en leidt alles in goede banen. Het gebruik van een centrale module om alle communicatie te orchestreren vloeit voort uit het principe van losse koppeling en komt de uitbreidbaarheid ten goede. Als later besloten zou worden om toch extra gegevens te tonen, moet hiervoor enkel een module worden bijgeplaatst in het Services-blok en moet ze vanuit de engine worden opgeroepen. De service-modules, alsook Big Brother, worden door middel van AJAX aangesproken. Zodoende kan de interface continu worden bijgewerkt met de meest recente gegevens.
3.2.3
Beheer
Om de database met gebruikers effici¨ent te kunnen beheren, werd er ook een beheersinterface ontwikkeld. De interface kan zowel benaderd worden door PittPatt, die hem gebruikt om gebruikerslijsten en foto’s te verkrijgen, als door de beheerders. Naast de nodige gereedschappen om de gebruikerscollectie te onderhouden, biedt de interface ook de mogelijkheid om een herkenning te simuleren. Vooral tijdens het debuggen van de applicatie is deze mogelijkheid enigzins praktischer dan echt met een webcam te moeten werken. Figuur 3 toont de beheersinterface met 13 gebruikers in de database, goed voor 116MiB aan gegevens.
3.3
Interface
Al het voorgaande dient “slechts” ter ondersteuning van de eigenlijke gebruikersinterface. Figuur 4 toont wat een gebruiker die voor de opstelling staat op het scherm te zien krijgt, weliswaar veel groter dan op deze afbeelding. De eerstvolgende les wordt steeds als eerste weergegeven, met startuur en lokaal. Het lokaal wordt extra groot getoond gezien het hoofddoel van de toepassing: gebruikers moeten in een oogopslag kunnen zien in welk lokaal ze verwacht worden. Latere lessen worden lichtjes vervaagd getoond. Indien er een les bezig is, toont de applicatie een duidelijke melding van dat feit. Verder wordt elke rij voorafgegaan door de profielfoto van de gebruiker, zodat hij zichzelf snel kan herkennen. Als laatste toont de interface ook een QR-code voor de toepassing, zodat mogelijke gebruikers zich eenvoudig kunnen registreren.
5
Figuur 3: Beheersinterface
Figuur 4: Interface
6
4
Testresultaten
Om de kwaliteit van de toepassing te kunnen beoordelen en eventuele suggesties te verzamelen, werden een aantal gebruikerstests uitgevoerd. De resultaten hiervan worden in deze paragraaf beschreven.
4.1
Verloop van de test
Er werden enkele gebruikers gevraagd om zich te registreren op onze Facebook applicatie. Daarna konden ze voor de basisopstelling plaatsnemen. Die opstelling bestond uit de offline applicatie met een webcam op een laptop en de visuele web interface op een pc daarnaast. Na de eerste indirecte test, de tijd die nodig was om een gebruiker te herkennen, werd elke gebruiker gevraagd enkele vragen te beantwoorden over wat hij van de interface vindt en verwacht.
4.2
Resultaten van de bevraging
Wat voor extra informatie had u nog graag gezien? Enkele voorbeelden die gegeven werden: • laast ingecheckt • vrienden die laatst hebben ingecheckt • timestamp • lessen die al voorbij zijn van de dag De meeste gebruikers verwachten dat er ergens staat wanneer hij/zij voor het laatst op de campus was. Ook van hun vrienden zouden ze dit graag zien. Wat betreft lessen die al voorbij zien, dit vinden ze niet zo belangrijk. E´en iemand wilde meer informatie, zoals hoeveel keer ingecheckt, vrienden die mee ingecheckt zijn en hoeveel mensen er in het gebouw zijn. Dit zou eventueel kunnen met statistieken die apart opgevraagd kunnen worden en een uitbreiding naar Foursquare.
Verwacht u een visuele feedback van de webcam? Ongeveer de helft van de testers vond dit een nuttige toevoeging aan de interface. Een suggestie was om enkel een foto van de webcamsnapshot toe te voegen.
Had u liever een Google Calendar style look? Hiermee bedoelen we een kolom-layout waarin de huidige tijd door middel van een horizontale lijn wordt aangeduid. Iedereen vond dat de huidige manier van lessen weergeven duidelijker was.
7
Verdere opmerkingen over de layout. Niemand had nog extra opmerkingen, de layout zelf was simpel en duidelijk.
Vindt u het een nuttige applicatie? Er was 1 iemand die het niet nuttig vond. Zijn argument was dat hij zijn smartphone daarvoor gebruikte. Voor de rest vond de helft het nuttig zoals het nu is en de rest enkel als er nog meer informatie werd gegeven.
Zou u het gebruiken? M.a.w. voor de webcam gaan staan als u binnenkomt? Iedereen: ja. Al was het maar omdat het leuk is.
Welke andere informatie (niet lessen) zou u nog snel willen zien? Met andere woorden: waarvoor ga je snel even naar een pc als je op de campus bent? Mail en Facebook bleken de populairste bezigheden van een snel pc-lab bezoek. De meeste testpersonen vonden dat dit te priv´e was om op een groot scherm weer te geven. Iemand suggereerde ook om in plaats van gezichtsherkenning, de studenten laten inchecken met hun studentenkaart. Het voordeel hiervan is natuurlijk dat iedereen een studentenkaart heeft, er is geen Facebook registratie nodig en er kan geen foute herkenning optreden. De nadelen zijn natuurlijk dat er een actieve deelname van de gebruikers vereist wordt en dat er geen link meer is met Facebook.
5
Geleverde werk
Een kort schematisch overzicht.
5.1
Overzicht van de taken
Initi¨ele stappen: • Brainstormen en initi¨ele idee¨en verder beschrijven. • Gezichtsherkeningsidee kiezen. • Idee verder uitwerken en stappenplan opstellen. • Gezichtsherkenningsoftware zoeken en aanvragen (mails sturen). • Weloverwogen keuze maken. Verdieping: • PittPatt SDK leren gebruiken. 8
• Facebook applicatie. • Webserver die een database van gebruikers voorziet. • AJAX engine. • PittPatt SDK gebruiken om C programma’s te schrijven met de nodige functionaliteit. • Offline java applicatie. • Grafische interface. • Systeemtesten. • Gebruikerstesten.
5.2
Taakverdeling en tijdsbesteding
Erik Taak Initi¨ele stappen Groepsessies Totaal eerste semester Pittpatt SDK leren gebruiken Facebook applicatie Webserver AJAX engine Grafische interface Systeemtesten Gebruikerstesten Groepsessies Totaal tweede semester Totaal
Aantal uur 12 8 20 5 5 15 25 10 5 7 6 78 98
Tom Taak Initi¨ele stappen Groepsessies Totaal eerste semester Pittpatt SDK leren gebruiken Facebook applicatie C programma’s Java applicatie Systeemtesten Gebruikerstesten Groepsessies Totaal tweede semester Totaal
Aantal uur 12 8 20 10 2 23 19 6 9 6 75 95
9