Skapa egna "Neural Paintings" med DeepStyle & Ubuntu

Visste du att neurala nätverk kan också måla? Forskare har utbildat ett stort neuralt nätverk för att förvandla fotografier till neurala målningar som ser ut som om de målades av kända artister.

Visste du att neurala nätverk kan också måla?  Forskare har utbildat ett stort neuralt nätverk för att förvandla fotografier till neurala målningar som ser ut som om de målades av kända artister.
Annons

Neurala nätverk kan göra en hel del saker. De kan tolka bilder, förstå våra röster 6 Google Nu-funktioner som kommer att ändra hur du söker 6 Google Nu-funktioner som kommer att ändra hur du söker Du kan redan använda Google Nu på din Android-enhet, men får du allt du kan ut av Det? Att veta om dessa små funktioner kan göra stor skillnad. Läs mer och översätt samtal Hur Skypes Star Trek Translator fungerar Hur Skypes Star Trek Translator Fungerar Skypes nya översättningsfunktion erbjuder något som drömmer om sedan Star Trek - ett enkelt sätt att kommunicera på olika språk. Läs mer . Men visste du att de också kan måla?

Ett nytt forskningspapper (med titeln "En neural algoritm av konstnärlig stil") har sparkat av en glädje av online-diskussion med några slående visuella exempel. I huvudsak diskuteras en teknik för att träna ett djupt neuralt nätverk Microsoft vs Google - Vem leder den artificiella intelligenslösen? Microsoft vs Google - Vem leder det artificiella intelligenslottet? Konstgjorda intelligensforskare gör konkreta framsteg, och folk börjar prata allvarligt om AI igen. De två titanerna som leder den artificiella intelligensloppet är Google och Microsoft. Läs mer för att skilja konstnärlig stil från bildstruktur och kombinera stilen på en bild med en annan struktur. Resultatet av allt detta är att du kan träna ett stort neuralt nätverk för att göra fotografier till "neurala målningar" som ser ut som om de målades av kända artister - "digitala förfalskningar" så att säga.

Här är några exempel från artikeln. Den första bilden är originalet. De senare bilderna är de genererade resultaten, med målningen från vilken stilen samlades visades i miniatyr.

PaperImages

De ursprungliga forskarna har inte släppt sin kod, tyvärr. Några otrygga programmerare har emellertid replikerat sina resultat de senaste dagarna, och deras kod är tillgänglig, öppen källkod på Internet. Allt du behöver köra det är en Linux-maskin och lite tålamod.

Idag ska jag gå igenom hur du gör det och visa några av mina egna resultat. Du kan tänka på detta som en lös följd till vår DeepDream-handledning Skapa dina egna artificiella feberdrömer med Googles "DeepDream" Skapa dina egna artificiella feberdrömer med Googles "DeepDream" Har du sett de trippy bilderna som kommer ut från DeepDream? Vill du göra din egen? Kolla inte vidare! Läs mer . Det är lite komplicerat, men alla med en Linux-maskin kan följa med - ingen kodande erfarenhet behövs.

Jag gjorde en Picasso-ljusmålning till en Picasso-stilmålning med #DeepStyle! pic.twitter.com/cjkEoIhVcF

- James Blaha (@ jamesblaha) 5 september 2015

Ställa in programvaran

Först och främst, om du inte har bråttom eller inte har en Linux-maskin, kan du fortfarande spela med DeepStyle med DeepForger Twitter bot (skicka den en bild och en stil och det kommer så småningom att svara med resultaten du vilja). Om du vill bearbeta fler bilder snabbt (och med mer kontroll över resultaten), läs vidare för handledningen.

Först och främst, se till att du har en uppdaterad kopia av Ubuntu (14.04 är det jag använde). Du ska ha åtminstone några extra spelningar på hårddiskutrymme. För mer information, kolla in vår handledning om dual-boot Ubuntu tillsammans med Windows Tired Of Windows 8? Hur Dual Boot Windows & Ubuntu trött på Windows 8? Hur dubbla startar Windows och Ubuntu Om du upptäcker att Windows 8 inte är helt din kopp te, och du har ingen möjlighet att nedgradera, kan det vara en bra idé att dubbla starta med Linux för att få ett alternativ ... Läs Mer . Du behöver också root-privilegier, så se till att du gör det innan du fortsätter.

Grundläggande verktyg

Rätten till fladdermusen, detta är ett open source-projekt, så vi kommer att vilja ha Git installerat. Git är guldstandard för versionskontrollprogramvara Vad är Git och varför du bör använda Version Control Om du är en utvecklare Vad är Git och varför du bör använda Version Control Om du är utvecklare Som webbutvecklare, mycket tid vi brukar arbeta på lokala utvecklingsplatser och ladda upp allt då vi är klara. Det här är bra när det bara är du och förändringarna är små, ... Läs mer. Nästan varje open source-projekt som är värd att veta om, är värd på Github.

För att ladda ner och installera Git, öppna bara en terminal och skriv " sudo apt-get install git " och acceptera installationsprogrammets krav.

Nästa: Vi ska ställa in några grundläggande verktyg som behövs för att mjukvaran ska fungera.

Först installera Lua. Detta är språket som verktyget är skrivet in. Det är ganska enkelt. sudo apt-get install lua5.2 bara " sudo apt-get install lua5.2 " och följ installationsprocessen.

För det andra kommer vi att få luarocks. Det här är verktyget som gör det enklare att installera andra verktyg (älskar du inte Linux?). För detta, skriv " sudo apt-get install luarocks " och följ installationsstegen.

För det tredje ska vi installera Luajit. Detta är en just-in-time kompilator för Lua som gör våra liv lite enklare. sudo apt-get install luajit bara " sudo apt-get install luajit ."

Än så länge är allt bra.

Jag är en bot som skapar förfalskningar från dina bilder i stil med kända målare. Klicka för instruktioner nedan! pic.twitter.com/3MpThDNwRE

- Deep Forger (@DeepForger) 5 september 2015

ramar

Därefter kommer vi att installera Torch, en vetenskaplig databehandling och maskininlärning ram som utgör ryggraden i ansökan. Tyvärr kan den här inte installeras med hjälp av apt-get (standard Ubuntu-pakethanteraren).

Lyckligtvis har de en one-line installer som använder vissa kommandoradsmagi. Återgå till din terminal och skriv in " 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 är klar skriver du " luajit -ltorch ". Detta kommer att ge upp facklarmsgränssnittet och verifiera att allt har installerats korrekt.

Avsluta med det.

Nu ska vi installera loadcaffe - ett specifikt paket för neuralt nätverk. Installera sitt enda beroende genom att skriva " sudo apt-get install libprotobuf-dev protobuf-compiler ". Då kan du installera paketet själv med " sudo luarocks install loadcaffe" .

@Johnicholas Din förfalskning uppdelning, avec stil av School of Rembrandt van Rijn. #DigitalArt #StyleNet pic.twitter.com/pf0sZxWkaT

- Deep Forger (@DeepForger) 7 september 2015

Dubbelkontroll av beroende

Slutligen ska vi förhandsoptaget uppdatera några saker för att se till att allt går smidigt.

Skriv " sudo luarocks install image " för att se till att ditt bildpaket är aktuellt. luarocks install nn in " luarocks install nn ", som kommer att göra detsamma för ditt "nn" -paket.

Installera Deep Style

OK! Vid denna tidpunkt är vi redo att faktiskt installera själva mjukvaran. För renlighet skull, skapa en ny mapp i din hemkatalog ("mkdir DeepStyle"). Skriv sedan in den med " cd Deepstyle ". Skriv nu " sudo git clone https://github.com/jcjohnson/neural-style.git".

Därefter måste vi ladda ner modellen. Gör en kopp kaffe eller något, det tar ett tag. Tillbaka till terminalen och skriv " sudo sh models/download_models.sh ". Det ska starta en lång, detaljerad nedladdningsprocess. Om det misslyckas på grund av tillståndsfel kan du försöka ge dig lässkrivningsbehörigheter i de relevanta mapparna med hjälp av chmod.

@ 44thats44oars beställde denna #ProceduralArt #NeuralArt. pic.twitter.com/tbMH7gsvc8

- Deep Forger (@DeepForger) 6 september 2015

Använda Deep Style

Okej, vi är bra att gå. Att använda mjukvaran är ganska enkel.

Se till att du befinner dig i katalogen DeepStyle / Neural-Style i terminalen. Nu ska du behöva några bilder att arbeta på. Hämta dem från Internet (eller vad som helst) och kopiera dem sedan till mappen DeepStyle / Neural-stil med hjälp av filbläddraren.

Nu kan du använda kommandoraden för att bearbeta enskilda bilder. Formatet är ganska enkelt:

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

(Självklart måste du ersätta bitarna i ALL CAPS med namnen på dina filer).

Det kommer att få det neurala nätverket påbörjat. Det kommer att springa i ungefär en timme och spotta ut nya partiellt konvergerade bilder varenda några minuter tills det slutar. -gpu -1 flaggan stannar det från att försöka komma åt din GPU.

Efter flera timmar att försöka (och brickade operativsystemet flera gånger) kunde jag inte få Ubuntu och CUDA att spela bra med min GPU (en NVIDIA GTX 970). Om du har större lycka med det, vill du installera CUDA och cudann.torch (se github repo för mer information). Om inte, det är bra - det fungerar fortfarande med din CPU; det blir bara lite långsammare.

Om du har några problem att få allt detta fungerar, fråga mig bara i kommentarerna, och jag gör mitt bästa för att hjälpa dig.

Resultat

Här är några bilder jag har skapat under de senaste dagarna. Resultaten är blandade, men många är ganska imponerande.

zack-Paden-komposit

Klicka här för full upplösning.

Den här är från min vän Zack på en vandringstur till Yellowstone. Stilen kommer från en abstrakt målning, skapad av Theresa Paden. Jag var nyfiken på hur systemet skulle göra med en bild med absolut ingen struktur. Resultaten är ganska snygga, och du kan definitivt se likheterna med stilbilden.

Jersey City-Demuth-komposit

Klicka här för full upplösning.

Den här kommer med artighet av en av mina favoritartister, Charles Demuth (se: Rökelse i en ny kyrka, och Figur 5 i guld). Intressant är Demuth en av de främsta visuella inspirationerna för Team Fortress 2 Team Fortress 2: Free-to-Play Steam Game Du måste spela Team Fortress 2: Free-to-Play Steam spel du måste spela är Team Fortress 2 bara ett snabbt spel för att testa grafik och prestanda, eller är det ett spel värt att spela upprepade gånger? Läs mer, som du kan se från stilbilden.

Jag gav den en bild av Jersey City som jag hittade på Wikimedia. Resultaten är ... ganska bra. Det hämtade inte på Demuths stil, men det tog verkligen upp den mjuka, texturerade looken och färgpalett.

blommor-OKeefe-komposit

Klicka här för full upplösning.

Den här är ett försök att skapa en syntetisk O'Keeffe, med en ganska vardaglig bild av några blommor som jag hittade. Resultaten är uppriktigt spektakulära. Estetiskt är detta ett av mina favoritresultat. Rikheten hos O'Keeffes färger och former kommer tydligt fram. Blommbladets skiktade kanter blir bladets kanter i bakgrunden. Blommorna upplöses i färger och blir nästan abstrakta.

Det skulle vara en bra målning om en människa gjorde det. Jag är väldigt frestad att spendera ett par dagar som ger en högre upplösningsversion av den här och har den inramad.

shannon-picasso-komposit

Klicka här för full upplösning.

Här är min vän Shannon i hennes Halloween kostym, genom ett Picasso-tryck. Intressant valde enheten att måla den nedre delen av hennes ansikte vita (liknar Picasso-bitens färglayout). Jag är inte säker på om detta var ett slump eller inte, men resultaten är slående. Det verkar också ha korrekt identifierat Shannons hår på vänster sida, och drog det igen med hjälp av färgen och linjen från håret i stilbilden. Ditto för hennes hatt.

Detta är en av de bitar där teknikens begränsningar börjar bli tydliga. Om Picasso faktiskt målade Shannon hade han kastat bort ansiktets struktur och snedställt egenskaperna för att uppnå den effekt han ville ha. Detta system förstår inte sådana slags koncept på hög nivå och kan efterlikna bara ytliga aspekter av stilen, som de mörka, vinkellina och färgpalett.

eiffel-vangogh-komposit

Klicka här för full upplösning.

Ganska enkelt: en bild av Eiffeltornet och Van Goghs andra Starry Night. Det gör ett bra jobb som gör molnet i en Van Gogh-ey-stil, trots avsaknaden av moln i originalbilden. Det gör också ett bra jobb att översätta scenen från dag till natt.

Jag var inte säker på varför det bestämde sig för att göra toppen av Fiffeltornet som en eldstödpanna. Det ser cool ut, men det är inte riktigt motiverat från ingångsdata. Då insåg jag att stilbilden har tretton långa, vertikala gula band i den, i form av reflektionerna i vattnet. Det är ett ganska massivt kluster, med så lite träningsdata. Den stackars sak har säkert lärt sig att en vertikal kant med hög kontrast måste vara en av dessa reflektioner. Du kan se mer utstående vertikala ränder svagt i molnen.

nebula-vangogh-komposit

Klicka här för full upplösning.

Samma Van Gogh-målning, men den här gången gav jag det några verkliga stjärnor att måla. I detta fall, pelare delen av Eagle nebula. Jag gillar resultaten - även om du än en gång kan se sin besatthet med gula ränder. Varje vertikal del av pelaren blir en ljus, wobbly gul linje. Det är också tydligt upprörd av grönan, som inte uppstod i träningsdata, och gör sitt bästa för att bli av med det till förmån för blått och svart.

Teknologi

Några resultat av detta är extremt övertygande, även om tekniken har tydliga begränsningar. Vissa bilder har elak komposition, och systemet har svårigheter med mer abstrakta konstnärer som Picasso - som gärna älskade att förvränga sitt ämne, sprida sina funktioner. Algoritmen plockar upp sina vinkellinjer och sammanstötande färger, men är fortfarande en slav till pixelvärdena för bilden. Den har inte den förståelse du behöver avvika för långt från källmaterialet.

Vad som uppskattar mig om allt detta är att jag inte tror att dessa begränsningar är grundläggande.

Tillvägagångssättet som används här - träna ett nätverk på en bild och använd det för att bygga ett annat - är i grunden ett slags hack. Det ger nätverket väldigt lite data att arbeta med. En mer avancerad version av den här applikationen skulle använda ett nätverk som har information om många målningar, och kanske till och med riktiga bilder, för att ge det gott om kontext om bilden som den försöker "måla".

Ett djupt grepp om stil kan endast existera i ett bredare sammanhang. Du kan inte härleda det från en enda bild. Att utforma en arkitektur som ger systemet tillgång till bredare data kan göra det möjligt att härleda en mer "mänsklig" förståelse för bilden och hur artister representerar olika delar av den verkliga världen. Ett sådant nätverk kan kunna producera bilder som är mer abstrakta och har en bättre sammansättning. Sådana algoritmer skulle upphöra att vara en cool leksak (så här) och bli ett sätt att producera verklig originalkonst.

Vilket är en väldigt märklig tanke på något sätt.

Skapa egna bilder

Om du får ett besvikelse resultat kan du leka med alternativen lite för att försöka få mer övertygande resultat. Den fullständiga listan är på Github. De viktiga är

  • -content_weight -value Hur mycket ska vikten av innehållsrekonstruktionstiden. Standard är 5e0.
  • -style_weight -value: Hur mycket vikt att ge till stilbilden. Standard är 1e2.
  • -style_scale - value: Hur stor av bildkorrigeringar ska systemet analysera (större blir mer abstrakt). Standard är 1, 0.

När du har allt som fungerar till din tillfredsställelse, vänligen skicka dina mest intressanta bilder i kommentarerna. Jag är verkligen intresserad av att se vad ni gör med.

Bildkrediter: mänsklig hjärnmålare via Shutterstock

In this article