ab-c media weblab - experimenten met erfgoed
3 jan 2012 Hans van den Berg

Gezichten van het Rijksmuseum

Momenteel loopt Apps voor Nederland, een wedstrijd waarin ontwikkelaars nieuwe toepassingen maken met open data van overheden. Gesteund door Open Cultuur Data stellen ook enkele musea hun gegevens open voor hergebruik. Zo heeft het Rijksmuseum de collectiedatabase met bijbehorende afbeeldingen beschikbaar gesteld. Voor het weblab én als inzending voor Apps voor Nederland heb ik gezichtsherkenningstechniek toegepast op de schilderijen, tekeningen en foto's van het Rijksmuseum. Dit maakt het mogelijk ze op een nieuwe manier te bekijken en de collectie op een 'menselijke' manier te verkennen.

Vergeet na het bekijken vooral niet te stemmen op deze app!

Gezichtsherkenning

De techniek van de gezichtsherkenning begint langzaam gemeengoed te worden. De meeste moderne compactcamera's beschikken erover om gezichten automatisch in focus te houden, op veel luchthavens maakt het onderdeel uit van bewakingssystemen en ook Facebook biedt tegenwoordig de mogelijkheid om naar foto's met je vrienden erop te speuren.

Zijn mensen in staat makkelijk gezichten te herkennen, voor computers is dat minder eenvoudig. De techniek om uit pixels gezichten te destilleren heeft er zo'n 20 jaar over gedaan om algemeen bruikbaar te worden. Afgezien van algoritmes om gezichtskenmerken te identificeren zijn er namelijk veel factoren die de betrouwbaarheid van het resultaat beïnvloeden, zoals beeldresolutie, verschillende gezichtsuitdrukkingen, de vorm en houding van het gezicht en lichtomstandigheden.

gezichten

De afgelopen jaren zijn de bereikbare resultaten sterk verbeterd door o.a. de inzet van geavanceerde technieken zoals neurale netwerken. Programmatuur dat zich van zo'n netwerk bedient is in staat zichzelf aan te passen en te leren aan de hand van invoer, waardoor de herkenning steeds beter wordt. Hoe meer gezichten met goed resultaat herkend zijn, hoe meer herkend zal worden. Hierdoor wordt het bijvoorbeeld ook mogelijk slechts gedeeltelijk zichtbare gezichten te herkennen, omdat de eigenschappen daarvan door leren steeds beter in kaart zijn gebracht.

face.com

Toen ik op zoek ging naar geschikte programmatuur om gezichten op de collectiefoto's van het Rijksmuseum te laten detecteren, dacht ik (geïnspireerd door de techniek achter the real face of white australia) aanvankelijk aan het gebruik van de Python-functiebibliotheek OpenCV. Al snel werd me echter duidelijk dat zelf programmeren niet per se noodzakelijk zou zijn en dat ik gebruik zou kunnen maken van API's van partijen die gezichtsherkenning kant-en-klaar aanbieden.

Face.com viel mij al snel op als een van de grootste spelers die bovendien haar API gratis aanbiedt. Bekend van de omstreden Facebook applicatie Photo Finder, adverteren ze hun API met ondertussen meer dan 36 miljard herkende gezichten als het '#1 face recognition platform'. Hun technische aandacht gaat vooral uit naar het identificeren van gezichten in de massa's mensen op foto's binnen sociale netwerken, om deze te vergelijken met eerder herkende en reeds bekende gezichten. Het systeem aan de hand van een voorbeeldset trainen behoort ook tot de mogelijkheden. Mij ging het voor dit weblab in eerste instantie alleen om de mogelijkheid om gezichten op foto's te vinden en deze met een eigen programma als pasfoto's uit te snijden.

 

 

 

 

Op basis van een voorgelegde foto of set foto's retourneert de API een resultaat waarin per herkend gezicht een groot aantal gegevens is vastgelegd, waaronder de posities van de beide ogen, de neus, de kin, de mond, de beide oren en ook een inschatting van de kijkrichting en het geslacht van de persoon. Met een dergelijke rijkdom aan gegevens zou het voor mij in theorie makkelijk zijn om mijn doelstelling te halen. De grote vraag was echter of een op moderne gezichten en moderne media getraind systeem wel voldoende in staat zou zijn om gezichten op oude kunstwerken te herkennen!

Indrukwekkende resultaten

Ik koos ervoor uit de ruim 98.000 beschikbare werken van het Rijksmuseum aan de API de redelijk hanteerbare set van 18.000 tekeningen, schilderijen, foto's en miniaturen voor te leggen. De resultaten zijn ronduit indrukwekkend te noemen. Op 4.200 daarvan werden door de API zo'n 7.800 gezichten gevonden. Enkele uitzonderingen daargelaten, bleken op de overige werken vrijwel geen afbeeldingen van personen aanwezig. Niet alleen werden duidelijk afgebeelde gezichten op de voorgrond herkend, ook figuren op de achtergrond, gedeeltelijk afgebeeld of in schaduwen weggewerkt werden door de software gezien. Het maakte bovendien voor de gezichtsherkenning weinig uit of een persoon gefotografeerd, geschilderd of getekend was. Sterker nog, zelfs in schetsmatige penseelstreken werden nog de gezichten herkend en ook doodshoofden en enkele huisdieren ontsnapten niet aan de aandacht. Dit had ik echt niet verwacht. Ook de herkenning van geslacht en kijkrichting blijkt aardig goed gelukt. Het valt de detectieroutines niet echt te verwijten dat hier en daar een foutje is gemaakt door al die vreemde pruiken, hoeden, haardracht en kostuums... Het eindresultaat is hoe dan ook een fraai en afwisselend palet aan oude gezichten dat het bladeren door de hier gepresenteerde collectie tot een ware ontdekkingstocht maakt.

Presentatie met HTML5

Voor de presentatie van de 7.800 gezichten heeft mijn collega Arjan een HTML5-toepassing gemaakt. Uitgangspunt is een schermvullend 'grid' van gezichten, die random worden gekozen. Daardoor wordt de verscheidenheid goed zichtbaar. Met behulp van de knop 'meer' verschijnen er telkens weer nieuwe gezichten. Het is mogelijk te filteren op eeuw of soort kunstwerk. Dankzij de gegevens van face.com kan er ook gefilterd worden op geslacht (man/vrouw) en kijkrichting. Dit is zoals gezegd niet altijd feilloos geïdentificeerd.

Als je een persoon aanklikt wordt het originele kunstwerk getoond, met daarnaast alle gezichten die erop herkend zijn. Soms is dit één gezicht maar op bijvoorbeeld een schuttersstuk kunnen het er wel twintig zijn. Na aanklikken zoomt het beeld in op de persoon in z'n originele context. Voor deze functionaliteit is jQuery Smooth Zoom Pan gebruikt. Dit pakt mooi uit doordat het Rijksmuseum de afbeeldingen in goede kwaliteit en hoge resolutie beschikbaar heeft gesteld. Er is natuurlijk ook een beschrijving van het kunstwerk beschikbaar, zoals het Rijksmuseum die biedt, waarin soms de namen van de afgebeelde personen staan vermeld.

In de presentatie zijn enkele nieuwe HTML5-technieken gebruikt, zoals overvloeiers met CSS3 en de mogelijkheid om in recente browsers over te schakelen naar volledig scherm zonder knoppenbalken of randen, wat tot voor kort was voorbehouden aan Flash. Ook is de toepassing geoptimaliseerd voor de iPad; daar kun je de gezichten als webapp toevoegen aan het beginscherm, waarna deze schermvullend opent. Als je de iPad schudt worden er nieuwe gezichten getoond.

Vervolg

Het gebruik van gezichtsherkenningstechniek op oude schilderijen, tekeningen en prenten biedt interessante mogelijkheden. Het herkennen en in verband brengen van dezelfde personen op verschillende afbeeldingen zou een interessante vervolgstap kunnen zijn. En wat te denken van de mogelijkheid om een foto van jezelf te laten vergelijken met personen die afgebeeld zijn in allerlei museale collecties... Mede dankzij open collectiedatabases zoals die van het Rijksmuseum behoort het voorheen ondenkbare nu tot de mogelijkheden.

 

logo face.com

Update 30 juli 2012: face.com

In juni 2012 is face.com gekocht door Facebook. Als gevolg hiervan zal face.com zich vanaf nu met haar gezichtsherkenningproducten specifiek op Facebook-toepassingen gaan richten. Daarom is de gratis ontwikkel-API die we gebruikt hebben voor de detectie van de rijksmuseumgezichten niet langer beschikbaar. Wellicht is Cloudinary een alternatief.

Reageren

Hans van den BergHans van den Berg
ab-c mediae-mailwebsiteTwitter
4 weblabs
zoom visualisaties panoramafotografie mobiel zoektechniek 3d augmented reality stereofotografie geo gps mashups
achtergrond Een van zin Cornelis Kruseman, 1830
Rijksmuseum
twitter rss info