Lag din egen "Neural Paintings" med DeepStyle & Ubuntu

Visste du at nevrale nettverk også kan male? Forskere har trent et stort neuralt nettverk for å gjøre fotografier til nevrale malerier som ser ut som om de ble malt av kjente artister.

Visste du at nevrale nettverk også kan male?  Forskere har trent et stort neuralt nettverk for å gjøre fotografier til nevrale malerier som ser ut som om de ble malt av kjente artister.
Annonse

Nevrale nettverk kan gjøre mange ting. De kan tolke bilder, forstå våre stemmer 6 Google Nå-funksjoner som vil endre hvordan du søker 6 Google Nå-funksjoner som vil endre hvordan du søker Du kan allerede bruke Google Nå på Android-enheten din, men får du alt du kan ut av den? Å vite om disse små funksjonene kan gjøre en stor forskjell. Les mer, og oversett samtaler Hvordan Skypes Star Trek Translator Works Hvordan Skypes Star Trek Translator Fungerer Skypes nye oversettelsesfunksjon gir noe drømt om siden Star Trek - en enkel måte å kommunisere på tvers av språk. Les mer . Men visste du at de også kan male?

Et nylig forskningspapir (med tittelen "En Neural Algoritme of Artistic Style") har slått av en glede av online diskusjon med noen slående visuelle eksempler. I hovedsak diskuterer papiret en teknikk for å trene et dypt nevralt nettverk Microsoft vs Google - Hvem leder det kunstige intelligensløpet? Microsoft vs Google - Hvem leder det kunstige intelligensløpet? Kunstig intelligensforskere gjør konkrete fremskritt, og folk begynner å snakke seriøst om AI igjen. De to titanene som leder kunstig intelligensløp er Google og Microsoft. Les mer for å skille kunstnerisk stil fra bildestruktur, og kombinere stilen til ett bilde med strukturen til en annen. Resultatet av alt dette er at du kan trene et stort neuralt nettverk for å gjøre fotografier til "nevrale malerier" som ser ut som om de ble malt av kjente artister - "digitale forfalskninger" så å si.

Her er noen eksempler fra artikkelen. Det første bildet er originalen. De senere bildene er de genererte resultatene, med maleriet der stilen ble samplet, vist i miniatyr.

PaperImages

De opprinnelige forskerne har ikke gitt ut koden sin, dessverre. Imidlertid har noen uberørte programmerere replikert sine resultater de siste dagene, og deres kode er tilgjengelig, åpen kildekode på Internett. Alt du trenger å kjøre, er en Linux-maskin og litt tålmodighet.

I dag skal jeg gå gjennom hvordan du gjør det, og vise deg noen av mine egne resultater. Du kan tenke på dette som en løs oppfølger til DeepDream-opplæringen Lag dine egne kunstige feberdrømmer med Googles "DeepDream" Lag dine egne kunstige feberdrømmer med Googles "DeepDream" Har du sett de trippy-bildene som kommer ut av DeepDream? Vil du lage din egen? Se ikke lenger! Les mer . Det er litt komplisert, men alle med en Linux-maskin kan følge med - ingen koding erfaring nødvendig.

Jeg snudde et Picasso lys maleri inn i en Picasso stil maleri med #DeepStyle! pic.twitter.com/cjkEoIhVcF

- James Blaha (@ jamesblaha) 5. september 2015

Sette opp programvaren

For det første, hvis du ikke har stor hastighet eller ikke har en Linux-maskin, kan du fortsatt spille med DeepStyle ved hjelp av DeepForger Twitter bot (send det et bilde og en stil, og det vil til slutt svare med resultatene du vil). Hvis du vil behandle flere bilder raskt (og med mer kontroll over resultatene), les videre for opplæringen.

Først av, sørg for at du har en oppdatert kopi av Ubuntu (14.04 er det jeg brukte). Du skal ha minst noen ekstra gigabyte plass på harddisken. For mer informasjon, se vår veiledning om dual-oppstart Ubuntu sammen med Windows Tired Of Windows 8? Hvordan Dual Boot Windows og Ubuntu lei av Windows 8? Slik dobbeltklikker du Windows og Ubuntu Hvis du oppdager at Windows 8 ikke er din kopp te, og du har ingen mulig vei å nedgradere, kan det være lurt å dual boot med Linux for å få et alternativ ... Les Mer . Du skal også ha root privilegier, så sørg for at du gjør det før du fortsetter.

Grunnleggende verktøy

Rett på flaggermuset er dette et åpen kildekodeprosjekt, så vi vil ha Git installert. Git er gullstandarden for versjonskontrollprogramvare Hva er Git og hvorfor du bør bruke Versjonskontroll Hvis du er utvikler Hva er Git og hvorfor du bør bruke Versjonskontroll Hvis du er utvikler Som webutviklere, er det mye av tiden Vi pleier å jobbe med lokale utviklingssteder, og laster deretter opp alt når vi er ferdige. Dette er greit når det bare er deg og endringene er små, ... Les mer. Nesten alle åpne kildeprosjekter som er verdt å vite om, er vert på Github.

For å laste ned og installere Git, bare åpne en terminal og skriv " sudo apt-get install git " og godta installatørens krav.

Neste: Vi skal sette opp noen grunnleggende verktøy som trengs for å få programvaren til å fungere.

Først installerer du Lua. Dette er språket som verktøyet er skrevet inn. Det er ganske enkelt. Skriv bare " sudo apt-get install lua5.2 " og følg installasjonsprosessen.

For det andre skal vi få Luarocks. Dette er verktøyet som gjør det enklere å installere andre verktøy (ikke elsker Linux?). For denne typen, skriv " sudo apt-get install luarocks " og følg installasjonstrinnene.

Tredje, vi skal installere Luajit. Dette er en just-in-time kompilator for Lua som vil gjøre livet enklere. Skriv bare " sudo apt-get install luajit ."

Så langt så bra.

Jeg er en bot som skaper forfalskninger fra bildene dine i stil med berømte malere. Klikk for instruksjonene nedenfor! pic.twitter.com/3MpThDNwRE

- The Deep Forger (@DeepForger) 5. september 2015

rammer

Deretter skal vi installere Torch, et vitenskapelig databehandling og maskinlæringsramme som utgjør ryggraden i applikasjonen. Dessverre kan denne ikke installeres ved hjelp av apt-get (standard Ubuntu pakkebehandling).

Heldigvis har de en one-line installer som bruker noen kommandolinjemagasiner. Gå tilbake til terminalen din og skriv inn " curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash ".

Når du er ferdig, skriv " luajit -ltorch ". Dette vil ta opp fakkelgrensesnittet og kontrollere at alt ble installert riktig.

Gå ut av det.

Nå skal vi installere loadcaffe - en spesifikk pakke for nevralnett. Installer den eneste avhengigheten ved å skrive " sudo apt-get install libprotobuf-dev protobuf-compiler ". Deretter kan du installere selve pakken med " sudo luarocks install loadcaffe" .

@Johnicholas Din forfalskning sammenbrudd, avec stil av School of Rembrandt van Rijn. #DigitalArt #StyleNet pic.twitter.com/pf0sZxWkaT

- The Deep Forger (@DeepForger) 7. september 2015

Dobbeltkontrollerende avhengigheter

Til slutt skal vi fortelle oppdatere noen ting bare for å sikre at alt går jevnt.

Skriv inn " sudo luarocks install image " for å forsikre deg om at sudo luarocks install image din er oppdatert. Deretter skriver du inn " luarocks install nn " som vil gjøre det samme for din nn-pakke.

Installere Deep Style

Ok! På dette tidspunktet er vi klare til å installere selve programvaren. For renslighet skyld, opprett en ny mappe i din hjemmekatalog ('mkdir DeepStyle'). Deretter skriver du inn det ved å bruke " cd Deepstyle ". Skriv nå " sudo git clone https://github.com/jcjohnson/neural-style.git".

Deretter må vi laste ned modellen. Lag en kopp kaffe eller noe, dette vil ta en stund. Tilbake til terminalen, og skriv " sudo sh models/download_models.sh ". Det vil starte en lang, forseggjort nedlastingsprosess. Hvis det mislykkes på grunn av tillatelsesfeil, kan du prøve å gi deg lese-skrive-tillatelser på de aktuelle mappene, ved hjelp av chmod.

@ 44thats44oars bestilt denne #ProceduralArt #NeuralArt. pic.twitter.com/tbMH7gsvc8

- The Deep Forger (@DeepForger) 6. september 2015

Bruke Deep Style

Ok, det er bra å gå. Bruke programvaren er ganske enkel.

Pass på at du er i DeepStyle / Neural-stilkatalogen i terminalen. Nå skal du ha noen bilder å jobbe med. Last ned dem fra Internett (eller hva som helst), og kopier dem deretter til mappen DeepStyle / Neural-stil ved hjelp av filleseren.

Nå kan du bruke kommandolinjen til å behandle individuelle bilder. Formatet er ganske greit:

th neural_style.lua -style_image YOURPAINTINGHERE.jpg" - content_image YOURPHOTOHERE.jpg" -gpu -1

(Åpenbart må du erstatte bitene i ALL CAPS med navnene på filene dine).

Det vil få det neurale nettverket startet. Det løper i omtrent en time, og spytter ut nye delvis konvergerte bilder hvert par minutter til det er ferdig. -gpu -1 flagget stopper det fra å prøve å få tilgang til GPUen din.

Etter flere timer med å prøve (og bricking operativsystemet flere ganger) kunne jeg ikke få Ubuntu og CUDA til å leke fint med min GPU (en NVIDIA GTX 970). Hvis du har lykke til det, vil du installere CUDA og cudann.torch (se github repo for mer informasjon). Hvis ikke, det er greit - det vil fortsatt fungere med din CPU; det vil bare være litt tregere.

Hvis du har problemer med å få alt dette, bare spør meg i kommentarene, og jeg vil gjøre mitt beste for å hjelpe deg.

resultater

Her er noen bilder jeg har generert de siste par dagene. Resultatene er blandet, men mange av dem er ganske imponerende.

zack-Paden-kompositt

Klikk her for full oppløsning.

Denne er av min venn Zack på en vandringstur til Yellowstone. Stilen kommer fra et abstrakt maleri, skapt av Theresa Paden. Jeg var nysgjerrig på hvordan systemet ville gjøre med et bilde med absolutt ingen struktur. Resultatene er ganske ryddige, og du kan definitivt se likhetene med stilbildet.

Jersey City-Demuth-kompositt

Klikk her for full oppløsning.

Denne kommer med lov av en av mine favorittartister, Charles Demuth (se: Røkelse av en ny kirke, og Figur 5 i gull). Interessant er Demuth en av primære visuelle inspirasjoner for Team Fortress 2 Team Fortress 2: Free-to-Play dampspillet du må spille Team Fortress 2: Free-to-Play dampspillet du må spille er Team Fortress 2 bare et raskt spill for å teste grafikk og ytelse, eller er det et spill verdt å spille flere ganger? Les mer, som du kan se fra stilbildet.

Jeg ga det et bilde av Jersey City som jeg fant på Wikimedia. Resultatene er ... ganske bra. Det hente ikke på kantlinjen av Demuths stil, men det tok sikkert opp det myke, teksturerte utseendet og fargepaletten.

blomster-Okeefe-kompositt

Klikk her for full oppløsning.

Dette er et forsøk på å generere en syntetisk O'Keeffe, ved å bruke et ganske verdig bilde av noen blomster jeg fant. Resultatene er oppriktig spektakulære. Estetisk er dette et av mine favorittresultater. Rikken av O'Keeffes farger og former kommer tydelig fram. Blomstbladets lagde kanter blir kantene på bladene i bakgrunnen. Blomstene selv oppløses i farger, blir nesten abstrakte.

Det ville være et godt maleri hvis et menneske gjorde det. Jeg er veldig fristet til å tilbringe et par dager som gir en høyere oppløsning av denne og har den innrammet.

Shannon-Picasso-kompositt

Klikk her for full oppløsning.

Her er min venn Shannon i hennes Halloween-drakt, ved hjelp av en Picasso-utskrift. Interessant valgte enheten å male den nedre delen av ansiktet sitt hvitt (i likhet med fargeoppsettet til Picasso-brikken). Jeg er ikke sikker på om dette var et tilfeldighet eller ikke, men resultatene er slående. Det ser også ut til å ha riktig identifisert Shannons hår på venstre side, og trukket det med fargen og linjene fra håret i stilbildet. Ditto for hatten hennes.

Dette er et av stykkene der begrensningene i teknikken begynner å bli klar. Hvis Picasso faktisk maler Shannon, ville han ha kastet bort ansiktets struktur og skjevt funksjonene for å oppnå den effekten han ville ha. Dette systemet forstår ikke slike konsepter på høyt nivå, og kan etterligne bare overfladiske aspekter av stilen, som de mørke, kantede linjene og fargepaletten.

Eiffel-vangogh-kompositt

Klikk her for full oppløsning.

Ganske enkelt: et bilde av Eiffeltårnet, og Van Goghs andre Starry Night. Det gjør en god jobb som gjør skyen i en Van Gogh-ey-stil, til tross for fraværet av skyer i det opprinnelige bildet. Det gjør også en god jobb med å oversette scenen fra dag til natt.

Jeg var ikke sikker på hvorfor det bestemte seg for å gjøre spissen av Fiffel-tårnet som en brannstamme. Det ser kult ut, men det er ikke veldig forsvarlig fra inngangsdataene. Da innså jeg at stilbildet har tretten lange, vertikale gule striper i den, i form av refleksjonene i vannet. Det er en ganske massiv klynge, gitt så lite treningsdata. Den dårlige tingen har sikkert lært at en vertikal kant med høy kontrast må være en av disse refleksjonene. Du kan se mer utstående vertikale striper svakt i skyene.

tåke-vangogh-kompositt

Klikk her for full oppløsning.

Samme Van Gogh-maleri, men denne gangen ga jeg det noen faktiske stjerner å male. I dette tilfellet søyler porselen av Eagle nebula. Jeg liker resultatene - selv om du igjen kan se sin besettelse med gule striper. Hver vertikal del av søylen blir en lys, wobbly gul linje. Det er også tydelig opprørt av det grønne, som ikke skjedde i treningsdataene, og gjør sitt beste for å bli kvitt det til fordel for blå og svart.

Teknologi

Noen resultater fra dette er svært overbevisende, selv om teknikken har klare begrensninger. Noen bilder har elendig komposisjon, og systemet har problemer med flere abstrakte kunstnere som Picasso - som var villig til å forvride sitt emne, spredning av funksjonene. Algoritmen plukker opp sine vinkellinjer og sammenstøtende farger, men er fortsatt en slave til bildens pikselverdier. Det har ikke den forståelsen du trenger for å avvike for langt fra kildematerialet.

Det som fascinerer meg om alt dette er at jeg ikke tror at disse begrensningene er grunnleggende.

Tilnærmingen blir brukt her - trene et nettverk på ett bilde og bruk det til å konstruere en annen - er i utgangspunktet en slags hack. Det gir nettverket svært lite data å jobbe med. En mer avansert versjon av denne applikasjonen ville bruke et nettverk som har informasjon om mange malerier, og kanskje til og med virkelige bilder, for å gi det rikelig med kontekst om bildet det prøver å "male".

En dyp forståelse av stil kan bare eksistere i en bredere sammenheng. Du kan ikke avlede det fra et enkelt bilde. Å designe en arkitektur som gir systemet tilgang til bredere data, kan tillate det å utlede en mer "menneskelig" forståelse av bildet, og hvordan kunstnere representerer forskjellige elementer i den virkelige verden. Et slikt nettverk kan være i stand til å produsere bilder som er mer abstrakte og har en bedre sammensetning. Slike algoritmer vil slutte å være et kjølig leketøy (som dette) og bli en måte å produsere faktisk original kunst på.

Som er en veldig merkelig tanke, på noen måter.

Lag dine egne bilder

Hvis du får et skuffende resultat, kan du leke med alternativene litt for å prøve å få mer overbevisende resultater. Hele listen er på Github. De viktigste er

  • -content_weight -value Hvor mye å vekt innholdsoppbyggingstiden. Standard er 5e0.
  • -style_weight -value: Hvor mye vekt å gi til stilbildet . Standard er 1e2.
  • -style_scale - verdi: Hvor stor av bildeoppdateringer skal systemet analysere (større blir mer abstrakt). Standard er 1, 0.

Når du får alt som fungerer til din tilfredshet, vennligst legg inn dine mest interessante bilder i kommentarene. Jeg er veldig interessert i å se hva dere kommer med.

Image Credits: menneskelig hjerne maleren via Shutterstock

In this article