Waar een dagelijks fietstochtje van twee Magnus consultants langs het Museumplein al niet toe kan leiden. Verwonderd door de duizenden toeristen die elke dag met kokers van replica’s van Hollandse Meesters uit de Museumshop van grote musea liepen, kwamen Dennis en Thomas op een idee: het creëren van een Artificial Intelligence (AI) model dat zo realistisch mogelijke portretfoto’s kan genereren in de stijl van een Van Gogh portret. Want waarom kopen al deze mensen een replica? Zou het niet veel leuker zijn om een eigen portret te hebben? En dan geheel in de stijl van een bestaand Van Gogh portret, dat je net in het museum hebt gezien? Vroeger was persoonlijke kunst alleen weggelegd voor een kleine, welgestelde groep mensen. Stel dat het mogelijk zou zijn om een AI model te ontwikkelen dat realistische Van Gogh portretten kan genereren op basis van een input afbeelding, maar dan vele malen beter dan de zoveelste filter in een foto-app. Dan is een eigen Van Gogh portret niet meer weggelegd voor een select groepje, maar voor iedereen! Hiermee was het idee voor een Van Gogh applicatie geboren.

In de stijl van Van Gogh

Nadat het idee was ontstaan, werd er met hun ervaring in beeldherkenning en AI modellen, snel toegewerkt naar een minimale werkende variant. Hierbij werd als doel gesteld dat het eindproduct – de eigen Van Gogh portretten – wel daadwerkelijke portretten zijn en geen filters. Van de persoon in kwestie moeten alle details kloppen: de ogen in de stijl van de ogen van het gekozen Van Gogh portret, de mond zoals de mond, etc. Ook kleine details zoals een opvallende twinkel in de ogen of een bepaalde verfstreek op je neus moeten terugkomen. Om deze variant te ontwikkelen, is gebruik gemaakt van publiek beschikbare, rechtenvrije datasets van portretfoto’s van mensen en de werken van Vincent van Gogh, beschikbaar gesteld door het Van Gogh museum. Uit de eerste onderzoeken kwam redelijk snel naar voren dat de schilderstijl van Vincent van Gogh zich beter voor dit idee leende dan bijvoorbeeld schilders uit de Gouden Eeuw, die realistisch schilderden. De expressieve en impressionistische schilderstijl van Van Gogh maakt gebruik van veel kleuren en is zeer herkenbaar in de resulterende portretten. Een eerste model werd ontwikkeld om de publieke portretfoto’s om te toveren in ware Van Gogh portretten.

Samenwerking met het Van Gogh Museum Amsterdam

Hoe onderwerp je een resultaatafbeelding van het ontwikkelde model nu aan een kwalitatieve keuring op de stijlelementen van Vincent Van Gogh? Magnus heeft hiervoor de handen ineengeslagen met de houder van de grootste Van Gogh collectie ter wereld: het Van Gogh Museum Amsterdam. Het ontwikkelen van een compleet digitaal product waarmee iedereen zijn eigen Van Gogh portret kan krijgen, sloot perfect aan op de digitale ambities van het museum. Een samenwerkingsverband werd gesloten: het Van Gogh Museum levert de hoge resolutie Van Gogh afbeeldingen en expertise op het gebied van kunst en Magnus levert de technische expertise en ontwikkelt de AI modellen.

Van conceptversie naar eindproduct

De conceptversie van het product was een initieel model, getraind op enkele honderden portretafbeeldingen, dat enkel afbeeldingen van 256×256 pixels genereert. Deze conceptversie is vervolgens omgetoverd tot een modern product dat realistische Van Gogh portretten kan genereren tot een resolutie van wel meer dan 4000×4000 pixels. Om hiertoe te komen werd het initiële product op iteratieve wijze steeds verder ontwikkeld, waarbij de resolutie en kwaliteit van de resultaatafbeeldingen steeds hoger werden. Nadat Magnus en het Van Gogh Museum allebei tevreden waren met de portretten die de modellen konden genereren, kwam de volgende technische uitdaging. Hoe transformeer je dit tot een schaalbaar product dat in een kwestie van seconden afbeeldingen van het gewenste kwaliteitsniveau kan genereren?

Bij het ontwikkelen van een dergelijke applicatie komt de jarenlange ervaring van Magnus op het gebied van het draaien van zelf-ontwikkelde applicaties in productieomgevingen goed van pas. Samen met de collega’s van Black en hun expertise met OIL, waarin dagelijks miljoenen orders worden verwerkt, is een schaalbare Cloud omgeving opgezet in Microsoft Azure. De infrastructuur hiervan wordt in grote lijnen toegelicht in de volgende sectie.

Schaalbare AI oplossingen met Kubernetes

Om een AI model in een schaalbare omgeving te kunnen draaien wordt er gebruik gemaakt van container technologie (Docker). Hiermee is het mogelijk om binnen circa een minuut een extra instantie van het model bij te schalen, in het geval extra rekencapaciteit benodigd is. Hiervoor wordt allereerst een extra grafische reken-node (GPU) bijgeschaald, zodat er ook voldoende rekenkracht is om twee instanties van het model te draaien. Het op- en afschalen van de reken-nodes en het lanceren van een extra instantie van het model gebeurt volledig automatisch met Azure Kubernetes Services. Dit is een open-source tool in een door Microsoft beheerde omgeving en werkt als volgt: zodra de vraag naar meer Van Gogh portretten in een vooraf ingestelde tijdsspanne toeneemt, wordt de rekenkracht opgeschaald en zal aan de toegenomen vraag kunnen worden voldaan. Als deze vraag op een later moment weer afneemt, wordt de rekenkracht automatisch afgeschaald, zodat alleen de benodigde rekencapaciteit om aan de vraag te kunnen voldoen daadwerkelijk wordt gebruikt. Microsoft heeft in een artikel op de Azure website (Engelstalig) de gebruikte software & hardware componenten van onze applicatie uitgebreid toegelicht.

Een steeds groter wordende digitale collectie

De ontwikkelde applicatie is bijna een jaar geleden gelanceerd en toegankelijk voor iedereen met een WeChat account. De virtuele Vincent van Gogh heeft inmiddels enkele tienduizenden gebruikers van een digitaal portret voorzien. Een aantal dat de echte Vincent Van Gogh nooit had kunnen voltooien in zijn tijd. Met elk nieuw portret dat de virtuele Van Gogh schildert, wordt het onderliggende AI model een stukje slimmer. Het model kan met steeds meer detail de gezichtskenmerken schilderen, zoals bijvoorbeeld de ogen (zie voorbeeld hieronder) en blijft leren! Na een succesvolle eerste kennismaking met de virtuele Van Gogh op WeChat, zijn Magnus & het Van Gogh Museum bezig om de digitale schilder beschikbaar te maken voor iedereen via de website van het Van Gogh Museum. Verder worden er binnenkort meer nieuwe portretten gelanceerd en wordt de resolutie van de afbeeldingen verhoogd tot wel 4K. Dit betekent nog meer detail en zijn zelfs de digitale verfstreken zichtbaar op de portretten! Hiermee kan straks iedereen zijn/haar foto op een digitale print laten afdrukken en zichzelf of iemand anders laten vereeuwigen aan de muur. Benieuwd naar de ontwikkelingen van de virtuele Van Gogh? Blijf de LinkedIn pagina van Magnus en Magnus.nl in de gaten houden en mis niets!

Kunstmatige afbeeldingen genereren met een GAN, hoe werkt dat?

Het halen van informatie uit afbeeldingen gebeurt al vele jaren. Een standaard neuraal netwerk kan een afbeelding (feitelijk een matrix van enen en nullen) omzetten in een voorspelling. Bijvoorbeeld: is deze afbeelding een foto van een kat (1) of geen kat (0)? In dit voorbeeld is er een neuraal netwerk getraind op duizenden afbeeldingen (foto’s van katten & geen katten), elk gelabeld met het label ‘kat’ of ‘geen kat’ en heeft het netwerk een zogenaamde ‘mapping’ geleerd tussen kattenfoto’s en het label ‘kat’.

In een Generative Adverserial Netwerk, ook wel afgekort als GAN, gebruik je niet één maar twee neurale netwerken die met elkaar concurreren. Het eerste neurale netwerk, de ‘discriminator’, leert tijdens het trainen net als het bovenstaande voorbeeld om foto’s van katten te herkennen en te classificeren als ‘kat’ of ‘geen kat’. Hiervoor gebruik je een dataset van kattenafbeeldingen. Tegelijkertijd train je een tweede neuraal netwerk, de ‘generator’ om output te creëren (lees: afbeeldingen). Deze worden gebruikt om de discriminator om de tuin te leiden: afbeeldingen die lijken te komen uit de oorspronkelijke dataset van katten, maar dat niet zijn. De input voor het ‘generatieve’ netwerk kunnen één of meerdere afbeeldingen zijn, het netwerk retourneert als output één afbeelding. De twee neurale netwerken in de GAN strijden als het ware met elkaar: De generator probeert de discriminator te laten denken dat de output afbeeldingen van het netwerk ‘echte’ afbeeldingen uit de dataset zijn. De discriminator probeert de afbeeldingen die daadwerkelijk uit de oorspronkelijke dataset van kattenafbeeldingen komen te onderscheiden van de ‘neppe’ afbeeldingen die de generator genereert. Tijdens het trainen van beide modellen zal de discriminator steeds beter worden in het onderscheiden van echte en neppe afbeeldingen. En zal de generator steeds beter worden in het genereren van realistische afbeeldingen van katten.

GAN’s gebruiken voor het genereren van kunst

Het hierboven beschreven concept kan niet alleen worden gebruikt voor het creëren van kunstmatige afbeeldingen van katten, maar ook voor het creëren van kunstmatige Van Gogh portretten. Tijdens het trainen van de GAN leert de discriminator om kunstmatige Van Gogh portretten te onderscheiden van daadwerkelijke Van Gogh portretten. De generator leert ondertussen om zo realistisch mogelijke kunstmatige Van Gogh portretten te genereren. Uiteindelijk wordt in de Van Gogh toepassing alleen het generator netwerk van de GAN gebruikt. Deze heeft geleerd om op basis van een portretfoto en een Van Gogh portret een realistisch output portret te genereren in de stijl van het gekozen Van Gogh portret.

Meer weten over AI oplossingen van Magnus? Neem contact op met Thomas Heeneman.

13 + 9 =