Skapa egna Neural Paintings med DeepStyle & Ubuntu

Skapa egna Neural Paintings med DeepStyle & Ubuntu / Framtida Tech

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 forskningsarbete (berättigat “En neural algoritm av konstnärlig stil“) har sparkat av en flurry 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. Uppkomsten av allt detta är att du kan träna ett stort neuralt nätverk för att göra fotografier till “neurala målningar” Det 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.

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? Sök inte mer! 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 vad 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 dual boot 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 installerad. 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 typ “sudo apt-get install git” och godkänna installatörens krav.

Nästa: vi ska till skapa några grundläggande verktyg 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. Bara Skriv “sudo apt-get installera 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 det här, 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. Bara Skriv “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 | våldsamt slag“.

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 installera libprotobuf-dev protobuf-compiler“. Då kan du installera paketet själv med “sudo luarocks installera 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.

Typ “sudo luarocks installera bild” för att se till att ditt bildpaket är aktuellt. Ange sedan “luarocks installera nn” vilket 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 hjälp av “cd Deepstyle“. Skriv nu “sudo git klon 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 modeller / 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 är i DeepStyle / Neural-Style-katalog 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 DeepStyle / Neural-Style-mappen med hjälp av webbläsaren.

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. De -gpu-1 flaggan stoppar 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.

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.

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å demutans stil, men det tog verkligen upp det mjuka, texturerade utseendet och färgpalett.

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.

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 begrepp på hög nivå och kan efterlikna endast ytliga aspekter av stilen, som de mörka, vinkliga linjerna och färgpalett.

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

Ganska enkelt: en bild av Eiffeltornet och Van Goghs andra Stjärnklar natt. 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.

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å 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änniskolik” förståelse av 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 vikt ska innehållsrekonstruktionstiden vara. Standard är 5e0.
  • -style_weight -value: Hur mycket vikt att ge till stilbilden. Standard är 1e2.
  • -style_scale - värde: Hur stor bildpatch 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 skriv in 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

Utforska mer om: Konstgjord intelligens, Digital konst, Geeky Science, Linux Desktop Environment, Science Fiction.