Neurale netwerken kunnen veel dingen doen. Ze kunnen afbeeldingen interpreteren, onze stemmen begrijpen 6 Google Now-functies die uw manier van zoeken wijzigen 6 Functies van Google Nu die uw manier van zoeken zullen veranderen U gebruikt Google Now misschien al op uw Android-apparaat, maar haalt er alles uit wat u uit kunt brengen het? Weten over deze kleine functies kan een groot verschil maken. Meer lezen en conversaties vertalen Hoe Skype's Star Trek-vertaler werkt Hoe Skype's Star Trek-vertaler werkt De nieuwe vertaalfunctie van Skype biedt iets waar je van droomt sinds Star Trek - een moeiteloze manier om in verschillende talen te communiceren. Lees verder . Maar wist je dat ze ook kunnen schilderen?
Een recent onderzoekspaper (getiteld "A Neural Algorithm of Artistic Style") heeft een golf van online discussie op gang gebracht met enkele opvallende visuele voorbeelden. In essentie bespreekt de paper een techniek om een diep neuraal netwerk te trainen Microsoft versus Google - Who Leads the Artificial Intelligence Race? Microsoft vs Google - Wie leidt de kunstmatige-intelligentie-race? Kunstmatige intelligentieonderzoekers boeken tastbare vooruitgang en mensen beginnen weer serieus over AI te praten. De twee titanen die de artificiële intelligentierace leiden zijn Google en Microsoft. Meer lezen om de artistieke stijl van de afbeeldingsstructuur te scheiden en de stijl van de ene afbeelding te combineren met de structuur van een andere. Het resultaat van dit alles is dat je een enorm neuraal netwerk kunt trainen om foto's om te zetten in 'neurale schilderijen' die eruitzien alsof ze zijn getekend door beroemde artiesten - 'digitale vervalsingen', om zo te zeggen.
Hier zijn enkele voorbeelden uit het artikel. De eerste afbeelding is het origineel. De latere afbeeldingen zijn de gegenereerde resultaten, waarbij het schilderij waarvan de stijl is bemonsterd, in miniatuur wordt weergegeven.
De oorspronkelijke onderzoekers hebben hun code helaas niet vrijgegeven. Sommige onverschrokken programmeurs hebben de afgelopen dagen hun resultaten echter gerepliceerd en hun code is beschikbaar, open source op internet. Het enige wat je nodig hebt om het uit te voeren, is een linux-machine en een beetje geduld.
Vandaag zal ik je helpen om dat te doen en enkele van mijn eigen resultaten laten zien. Je kunt dit zien als een los vervolg op onze DeepDream-tutorial Create Your Own Artificial Fever Dreams met Google's "DeepDream" Creëer je eigen kunstmatige koortsdromen met Google's "DeepDream" Heb je de trippy-beelden uit DeepDream gezien? Wilt u uw eigen maken? Zoek niet verder! Lees verder . Het is een beetje ingewikkeld, maar iedereen met een Linux-machine kan meegaan - geen codeerervaring nodig.
Ik heb een Picasso-schilderij in Picasso-stijl veranderd met #DeepStyle! pic.twitter.com/cjkEoIhVcF
- James Blaha (@jamesblaha) 5 september 2015
De software instellen
Ten eerste, als je geen grote haast hebt of geen Linux-machine hebt, kun je nog steeds spelen met DeepStyle met de DeepForger Twitter-bot (stuur het een afbeelding en een stijl, en het zal uiteindelijk antwoorden met de resultaten die je hebt willen). Als u meer afbeeldingen snel wilt verwerken (en met meer controle over de resultaten), lees dan verder voor de zelfstudie.
Ten eerste, zorg ervoor dat je een up-to-date exemplaar van Ubuntu hebt (14.04 is wat ik gebruikte). Je zou op zijn minst een paar extra optredens op de harde schijf moeten hebben. Zie voor meer informatie onze tutorial over Ubuntu voor dubbel opstarten naast Windows Tired Of Windows 8? How To Dual Boot Windows & Ubuntu Moe van Windows 8? Hoe Dual Boot Windows & Ubuntu te gebruiken Als je ontdekt dat Windows 8 niet helemaal jouw ding is, en je hebt geen haalbare weg naar downgrade, dan is het misschien een goed idee om dual boot met Linux te gebruiken om een alternatief ... Lees verder Meer . Je zult ook root-rechten nodig hebben, dus zorg ervoor dat je het doet voordat je verder gaat.
Basis hulpmiddelen
Recht van de knuppel, dit is een open-sourceproject, dus we willen Git geïnstalleerd willen hebben. Git is de gouden standaard voor versiebeheersoftware Wat is Git en waarom zou je versiebeheer moeten gebruiken als je een ontwikkelaar bent Wat is Git en waarom zou je versiebeheer moeten gebruiken als je een ontwikkelaar bent Als webontwikkelaar, vaak we werken meestal op lokale ontwikkelsites en uploaden vervolgens alles wanneer we klaar zijn. Dit is prima als je alleen bent en de veranderingen klein zijn, ... Lees meer. Vrijwel elk open source-project dat het waard is om te weten, wordt gehost op Github.
Om Git te downloaden en te installeren, opent u gewoon een terminal en typt u " sudo apt-get install git
" en stemt u in met de vereisten van de installateur.
Volgende: we gaan enkele basishulpmiddelen instellen die nodig zijn om de software te laten werken.
Installeer eerst Lua. Dit is de taal waarin de tool is geschreven. Het is vrij eenvoudig. Typ gewoon " sudo apt-get install lua5.2
" en volg het installatieproces.
Ten tweede gaan we Luarocks kopen. Dit is de tool die het gemakkelijker maakt om andere tools te installeren (vind je niet Linux leuk?). Hiertoe typt u " sudo apt-get install luarocks
" en volgt u de installatiestappen.
Ten derde gaan we Luajit installeren. Dit is een just-in-time-compiler voor Lua die ons leven een beetje eenvoudiger zal maken. Typ gewoon " sudo apt-get install luajit
."
Tot zover goed.
Ik ben een bot die vervalsingen uit je foto's maakt in de stijl van beroemde schilders. Klik voor instructies hieronder! pic.twitter.com/3MpThDNwRE
- The Deep Forger (@DeepForger) 5 september 2015
frameworks
Vervolgens gaan we Torch installeren, een wetenschappelijk computer- en machine learning-framework dat de ruggengraat vormt van de applicatie. Helaas kan deze niet worden geïnstalleerd met apt-get (de standaard Ubuntu-pakketbeheerder).
Gelukkig hebben ze een installatieprogramma met één regel dat gebruikmaakt van een opdrachtregel. Keer terug naar uw terminal en voer " curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash
curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash
".
Als je klaar bent, typ je " luajit -ltorch
". Hierdoor wordt de interface van de toorts weergegeven en wordt gecontroleerd of alles correct is geïnstalleerd.
Ga daar weg.
Nu gaan we loadcaffe installeren - een neuraal netwerkspecifiek pakket. Installeer de enige afhankelijkheid door " sudo apt-get install libprotobuf-dev protobuf-compiler
" te typen. Vervolgens kunt u het pakket zelf installeren met behulp van " sudo luarocks install loadcaffe"
.
@Johnicholas Je inzinking in valsheid, avec-stijl door School of Rembrandt van Rijn. #DigitalArt #StyleNet pic.twitter.com/pf0sZxWkaT
- The Deep Forger (@DeepForger) 7 september 2015
Dubbele afhankelijkheden controleren
Ten slotte gaan we sommige dingen preventief bijwerken om er zeker van te zijn dat alles soepel verloopt.
Typ ' sudo luarocks install image
' om ervoor te zorgen dat uw afbeeldingspakket up-to-date is. Voer vervolgens " luarocks install nn
" in die hetzelfde zal doen voor uw 'nn'-pakket.
Deep Style installeren
Alright! Op dit moment zijn we klaar om de software zelf te installeren. Maak voor de netheid een nieuwe map aan in je thuismap ('mkdir DeepStyle'). Voer het vervolgens in met behulp van " cd Deepstyle
". Typ nu " sudo git clone https://github.com/jcjohnson/neural-style.git".
Vervolgens moeten we het model downloaden. Maak een kop koffie of zoiets, dit zal een tijdje duren. Terug naar de terminal en typ " sudo sh models/download_models.sh
". Dat begint een lang, uitgebreid downloadproces. Als het mislukt vanwege machtigingsfouten, probeer dan met behulp van chmod read-write-machtigingen voor de relevante mappen te geven.
@ 44thats44oars gaf opdracht tot #ProceduralArt #NeuralArt. pic.twitter.com/tbMH7gsvc8
- The Deep Forger (@DeepForger) 6 september 2015
Deep Style gebruiken
Oké, we zijn goed om te gaan. Het gebruik van de software is vrij eenvoudig.
Zorg ervoor dat je in de DeepStyle / neural-style directory in de terminal bent. Nu zul je wat afbeeldingen nodig hebben om aan te werken. Download ze van internet (of wat dan ook) en kopieer ze vervolgens met behulp van de bestandsbrowser in de map DeepStyle / neural-style .
Nu kunt u de opdrachtregel gebruiken om afzonderlijke afbeeldingen te verwerken. Het formaat is vrij eenvoudig:
th neural_style.lua -style_image YOURPAINTINGHERE.jpg" - content_image YOURPHOTOHERE.jpg" -gpu -1
(Het is duidelijk dat u de blokken in ALLE KAPPEN moet vervangen door de namen van uw bestanden).
Dat zal het neurale netwerk gestart krijgen. Het loopt ongeveer een uur en spuwt om de paar minuten nieuwe gedeeltelijk geconvergeerde afbeeldingen totdat het is voltooid. De vlag -gpu -1
dat deze geen toegang probeert te krijgen tot je GPU.
Na een aantal uur proberen (en het besturingssysteem meerdere keren in de maling te nemen) kon ik Ubuntu en CUDA niet laten spelen met mijn GPU (een NVIDIA GTX 970). Als je daar meer geluk mee hebt, wil je CUDA en cudann.torch installeren (zie de github repo voor meer informatie). Zo niet, dat is prima - het zal nog steeds werken met je CPU; het zal gewoon een beetje langzamer zijn.
Als je problemen hebt om dit allemaal te laten werken, vraag het me gewoon in de comments en ik zal mijn best doen om je te helpen.
resultaten
Hier zijn enkele afbeeldingen die ik de afgelopen dagen heb gemaakt. De resultaten zijn gemengd, maar veel ervan zijn behoorlijk indrukwekkend.
Klik hier voor de volledige resolutie.
Deze is van mijn vriend Zack tijdens een wandeltocht naar Yellowstone. De stijl komt van een abstract schilderij, gemaakt door Theresa Paden. Ik was benieuwd hoe het systeem zou werken met een afbeelding zonder enige structuur. De resultaten zijn redelijk netjes en je kunt zeker de overeenkomsten zien met het stijlbeeld.
Klik hier voor de volledige resolutie.
Deze komt met dank aan een van mijn favoriete artiesten, Charles Demuth (zie: Wierook van een nieuwe kerk, en figuur 5 in goud). Interessant is dat Demuth een van de belangrijkste visuele inspiraties is voor de kunst van Team Fortress 2 Team Fortress 2: Het gratis te spelen Steam-spel dat u moet spelen Team Fortress 2: het gratis te spelen Steam-spel dat u moet spelen Team Fortress 2 gewoon een snel spel om graphics en prestaties te testen, of is het een game die herhaaldelijk de moeite waard is om te spelen? Lees meer, zoals u kunt zien aan de stijlafbeelding.
Ik gaf het een beeld van Jersey City dat ik op Wikimedia vond. De resultaten zijn ... redelijk goed. Het nam de hoekigheid van Demuths stijl niet op, maar het pakte zeker de zachte, getextureerde look en het kleurenpalet op.
Klik hier voor de volledige resolutie.
Deze is een poging om een synthetische O'Keeffe te genereren, met behulp van een redelijk alledaagse foto van enkele bloemen die ik vond. De resultaten zijn eerlijk gezegd spectaculair. Esthetisch gezien is dit een van mijn favoriete resultaten. De rijkdom aan O'Keeffe's kleuren en vormen komt duidelijk naar voren. De gelaagde randen van de bloembladen worden de randen van de bladeren op de achtergrond. De bloemen zelf lossen op in kleuren en worden bijna abstract.
Het zou een goed schilderij zijn als een mens het zou doen. Ik ben erg geneigd om een paar dagen door te brengen om een versie met een hogere resolutie van deze versie te maken en deze te laten inlijsten.
Klik hier voor de volledige resolutie.
Hier is mijn vriendin Shannon in haar Halloween-kostuum, door middel van een Picasso-afdruk. Interessant is dat het apparaat ervoor koos het onderste deel van haar gezicht wit te schilderen (vergelijkbaar met de kleurlay-out van het stuk Picasso). Ik weet niet zeker of dit toeval was of niet, maar de resultaten zijn opvallend. Het lijkt ook het haar van Shannon correct te hebben geïdentificeerd aan de linkerkant en opnieuw getekend met de kleur en lijnen van het haar in de stijlafbeelding. Idem voor haar hoed.
Dit is een van de stukken waar de beperkingen van de techniek duidelijk worden. Als Picasso eigenlijk Shannon schilderde, zou hij de structuur van haar gezicht hebben weggegooid en de functies hebben scheefgetrokken om het gewenste effect te bereiken. Dit systeem begrijpt die soorten concepten op hoog niveau niet en kan slechts oppervlakkige aspecten van de stijl imiteren, zoals de donkere, hoekige lijnen en kleurenpalet.
Klik hier voor de volledige resolutie.
Vrij eenvoudig: een foto van de Eiffeltoren en de andere sterrennacht van Van Gogh. Het doet goed werk om de wolk in een Van Gogh-achtige stijl weer te geven, ondanks de afwezigheid van wolken in het oorspronkelijke beeld. Het doet ook goed werk van het vertalen van de scène van dag naar nacht.
Ik wist niet zeker waarom het besloot om de punt van de Fiffeltoren als een vuurkolom te maken. Het ziet er cool uit, maar het is niet echt te rechtvaardigen van de invoergegevens. Toen besefte ik dat het stijlbeeld dertien lange, verticaal gele stroken bevat, in de vorm van reflecties in het water. Dat is een behoorlijk massieve cluster, gegeven zo weinig trainingsgegevens. Het arme ding heeft waarschijnlijk geleerd dat een hoog contrast verticale rand een van die reflecties moet zijn. Je ziet meer vreemde verticale strepen vaag in de wolken.
Klik hier voor de volledige resolutie.
Hetzelfde schilderij van Van Gogh, maar deze keer gaf ik het een aantal echte sterren om te schilderen. In dit geval het pijlersgedeelte van de adelaarsnevel. Ik vind de resultaten leuk - hoewel je opnieuw de obsessie met gele strepen kunt zien. Elk verticaal deel van de pilaar wordt een heldere, wiebelige gele lijn. Het is ook duidelijk van streek door de green, die niet voorkomt in de trainingsgegevens, en doet zijn best om er vanaf te komen in het voordeel van blauw en zwart.
Technologie
Sommige resultaten hiervan zijn buitengewoon overtuigend, hoewel de techniek duidelijke beperkingen heeft. Sommige afbeeldingen hebben een slechte compositie, en het systeem heeft moeite met meer abstracte artiesten zoals Picasso - die zijn inhoud graag verdraaide en zijn eigenschappen verstrooide. Het algoritme neemt zijn hoekige lijnen en botsende kleuren op, maar is nog steeds een slaaf van de pixelwaarden van de afbeelding. Het heeft niet het begrip dat je nodig hebt om te ver van het bronmateriaal af te wijken.
Wat me opwindt over dit alles is dat ik denk dat die beperkingen niet fundamenteel zijn.
De aanpak die hier wordt gebruikt - train een netwerk op één afbeelding en gebruik het om een ander samen te stellen - is fundamenteel een soort hack. Het geeft het netwerk heel weinig gegevens om mee te werken. Een geavanceerdere versie van deze applicatie zou een netwerk gebruiken met informatie over veel schilderijen, en misschien zelfs echte afbeeldingen, om het veel context te geven over het beeld dat het probeert te "schilderen".
Een diep begrip van stijl kan alleen in een bredere context bestaan. U kunt het niet van een enkele afbeelding afleiden. Het ontwerpen van een architectuur die het systeem toegang geeft tot bredere gegevens kan het mogelijk maken om een meer "menselijk" inzicht in het beeld te verkrijgen, en hoe kunstenaars verschillende elementen van de echte wereld vertegenwoordigen. Een dergelijk netwerk kan mogelijk beelden produceren die abstracter zijn en een betere samenstelling hebben. Dergelijke algoritmen zouden ophouden een cool speelgoed te zijn (zoals dit) en een manier worden om werkelijke, originele kunst te produceren.
Dat is in sommige opzichten een heel eigenaardige gedachte.
Je eigen afbeeldingen maken
Als je een teleurstellend resultaat krijgt, kun je wat spelen met de opties om overtuigende resultaten te krijgen. De volledige lijst staat op de Github. De belangrijke zijn
- -content_weight -waarde Hoeveel weegt de inhoudsreconstructie-term. Standaard is 5e0.
- -style_weight -value: Hoeveel te geven gewicht aan het stijlbeeld. Standaard is 1e2.
- -style_scale - waarde: hoe groot aantal afbeeldingspatches moet het systeem analyseren (Groter wordt abstracter). Standaard is 1.0.
Zodra u alles tot uw tevredenheid heeft verwerkt, plaatst u uw meest interessante afbeeldingen in de opmerkingen. Ik ben echt geïnteresseerd om te zien wat jullie bedenken.
Image Credits: menselijk breinschilder via Shutterstock