Neuronové sítě, grafický design a death metal

Ve středu 28. března 2017 jsem hovořil na setkání Singapurského kreativního kódu o svých experimentech s neuronovými sítěmi, grafickým designem a death metalem. Hovořil také celkový hrdina Andreas Schlegel a jeho snímky najdete zde. Níže je popis mé řeči. Můžete vidět více experimentů na mém instagramu, nebo mě následovat na twitteru.

V současné době se snažím rozvíjet některé základní znalosti o tom, jak pracovat s neuronovými sítěmi a strojovým učením, abych mohl později provést nějakou hlubší formu dotazování nebo použít techniky v projektech. A nejlepší způsob, jak to udělat, se zdál být jen zašpiněný a ponořit se do mě.

Mnohé z těchto průzkumů jsou zcela otevřené a nejsou ve skutečnosti praktické. Ale existuje spousta vedlejších věcí, které jsem se naučil po cestě, které byly tak užitečné. Pokusím se tyto věci sdílet po celou dobu.

Dám vám krátký přehled o tom, jak jsem se do toho dostal, pak několik časných průzkumů, poté se dostanu ke školení a generování death metalových log.

Tvář generovaná společností DCGAN při pohledu na obaly alb

Abych dal trochu kontextu, moje pozadí je v grafickém designu. Jsem opravdu vizuální člověk, což dělám pro svou práci. Pokud jde o kód, rozhodně nejsem zručný technik, ale vždy jsem měl zájem o technologii a vždy hledám způsoby, jak je smíchat. Můj zájem o technologii není jen z vizuálního hlediska, i když je to určitě součástí a já si užívám nepředvídatelný výstup jako nový zdroj vizuálního jazyka; ale také z kritického hlediska: do jaké míry mohou tyto nové technologie změnit moji roli designéra? A co můj proces? Jaký může být můj účel v budoucnosti? Před několika lety jsem psal o AIGA a to mě přimělo k prozkoumání.

Vezmeme roboty do školy designu, Jon Gold

Můj zájem o správné zkoumání automatizace a designu začal, když jsem četl tento článek od designéra jménem John Gold. Říká se tomu „Vezení robotů do školy designu“.

V něm nastiňuje svou vlastní práci, ve které provádí určitou analýzu běžně používaných dvojic písem a algoritmicky generuje nápady pro nové dvojice písem, které možná předtím nezohlednil. Je to dobrý příklad toho, jak něco, co se zdá být tak velké a děsivé, lze aplikovat na velmi těsné problémy a být skutečně nápomocní.

Obrazové pole pro třídu „hub“, Kyle McDonald

Později jsem našel článek Kyle McDonalda nazvaný „Návrat ke strojovému učení“. V tomto okamžiku jsem se díval na kurz Coursery Andrewa Nga a byl jsem velmi vyděšený, takže nalezení tohoto krásně napsaného a ilustrovaného zápisu bylo neocenitelné. Díky tomu se mi strojové učení najednou zdálo přístupné, nevrlý designér, který by mohl ječmen používat terminál, natož aby trénoval NN.

Je tu spousta velmi užitečných odkazů. V podstatě jsem prošel článkem metodickým zkoumáním každého z nich. Jsou tu všechny věci, o kterých jste všichni pravděpodobně dříve slyšeli, jako je přenos hlubokých snů a nervových stylů, ale v tuto chvíli se mi zdálo, že se nad mou hlavou všechno čeká.

Jeffrey Thompson

Jeden z odkazů vám představuje Char-RNN Andrej Karpathy a Torch-RNN Justina Johnsona. Oba jsou opakující se neuronové sítě, které mohou brát jako vstup korpus dat a během tréninkového období se začnou učit lineární strukturu dat - v tomto případě text.

Už jsem nevěděl, co je to opakující se neuronová síť. A opravdu mám stále jen nejasné porozumění. Ale znělo to jako magie a já jsem byl nadšený.

Na pochodni Torch-RNN Github se objevil odkaz na úžasný tutoriál od chlapa jménem Jeff Thompson, který vám krmil lžíci, jak nastavit vše - pochodeň, CUDA, všechny ty kecy. Takže jsem udělal. A zázračně to fungovalo. Nemohu vám říct, jak užitečný byl tento tutoriál. Až dosud jsem se zoufale snažil dostat Tensorflow do běhu, četl jsem návody o Theano a Caffe a neměl jsem vůbec štěstí. Dodnes používám pochodeň, a to z jednoduchého důvodu, že je to jediná věc, kterou jsem mohl dostat do provozu.

Výše je ukázkový text poté, co byl vyškolen na kompletní díla Shakespeara panem Thompsonem. A je to návykové, trénink na hodinu nebo tak, stačí napsat příkazy a získat zpět text, který zní jako hlavní muž.

Trénink na Shakespeare je však trochu nudný. Chtěl jsem něco víc… drobného?

Výcvik lolů

Takže jsem našel web s několika strašidelnými vtipy a na ty jsem je vyškolil.

RNN mají divný humor

Sooooo. Dlouho jsem to necvičil a to generovalo výše. Ale byl jsem ohromen, že ačkoliv je to nesmyslné, tam byla nějaká struktura. Volání a odpověď, dokonce i některá vlastní slova. Je snadné pochopit, proč Shakespeare tuto techniku ​​dobře prokázal, vzhledem k tomu, že výše uvedené zvuky jsou jako nějaká středověká standupová rutina. Od té doby jsem zde našel několik zabijáckých příkladů jiného generovaného textu.

Na své cestě k logům death metalu jsem prozkoumal několik dalších sítí, o nichž se práce zmíní.

Nejprve Darknet od PJ Reddie, což je skvělý klasifikátor objektů, se kterým můžete svůj terminál běžet jako věc C ++ (což je způsob, jak jsem vytvořil výše), nebo nyní existuje OFXDarknet, se kterým můžete pracovat v OpenFrameworks. Klasifikuje statické obrázky nebo videa a můžete použít předem trénované modely na řadě různých datových sad. Ve videu výše jsem použil předškolený model, ale spojený s nesprávnou sadou popisků objektů, což je samozřejmě hloupé. Ale našel jsem to docela neočekávané a zajímavé.

Trochu jsem tuto chybu následoval a poslal Darknet na psychologický test. To bylo provedeno pomocí addonu OFXDarknet pro OpenFrameworks. Darknet má rád dort.

Ukázka Pix2Pix

Další je Pix2Pix. Pravděpodobně jste to všichni už viděli na výše uvedených webových stránkách nebo prostřednictvím nádherné práce Maria Klingemanna. Je to spousta zábavy.

Obrazové páry pro výcvik

Trénujete Pix2Pix na dvojicích obrázků, jako je ten na levé straně. Jeden obrázek funguje jako vodítko a druhý jako cílový obraz. Síť začne rozpoznávat vztahy mezi páry a nakonec jí můžete poskytnout orientační obrázek a pokusí se vygenerovat cíl.

edge2handbags

Stejně jako u Darknetu existují i ​​některé předem trénované modely, které lze stáhnout a hrát.

Jedním z nich, který mě zaujal, byl dataset edge2handbags. Tento soubor dat je vytvořen z tun obrázků kabelek z Amazonu a vyškolen pomocí algoritmu vytvořeného obrysu jako obrazového páru. Příklady výstupů jsou docela ohromující.

Takže jsem tady jako kabelky. Miluji malířský pocit z toho, i když je to také docela drzé.

Zde je třeba zmínit některé periferní věci: program je příliš velký na to, aby mohl běžet na GPU mého počítače. Prostě to nemůže trvat, tak jsem se musel naučit, jak nastavit instanci Amazon GPU, což není tak snadné, jak by to mohlo být. Použil jsem tento, protože má sadu nástrojů CUDA již nastavenou a připravenou k použití. Také práce s ImageMagick a ffmpeg tato videa značně usnadnila, a dokud jsem neprováděla tento projekt, nikdy jsem o žádném z nich neslyšela. Stále používám ImageMagick k předzpracování datových sad pro trénink. Je to vynikající.

Chvíli jsem zkoumal Pix2Pix, hlavně proto, že je zde spousta místa pro průzkum a experimentování. Existuje přísná sada kritérií, na která se musíme držet, ale díky tomu je použitelná. Můžete mít nekonečné zábavy s ním. Výše uvedené je video vytvořené z datového souboru vyškoleného na dvojici obrazů maps2satellite převzatých z map Google. Vytvořil jsem filmový záznam mého přiblížení do mého rodného města (shoutout Slough!), Pak jsem pomocí ffmpeg rozdělil toto na jednotlivé snímky. Pak jsem dávkově zpracoval obrázky přes Pix2Pix a spojil výstupy do videa, opět pomocí ffmpeg.

A samozřejmě, jako designér, si člověk nemůže pomoct, ale kurva s typografií. Tady je výstup vytvořený vložením průvodních obrázků ve tvaru písmen do datového souboru fasád. Chtěl bych se pokusit najít použití pro tyto šílené dopisy.

Ahoj m8

Pak jsem našel DCGAN. To je ten, se kterým stále rád hraji. Trénujete DCGAN v databázi obrazů a poté jej požádejte o vytvoření nových z modelu. Je to kontradiktorní síť, což znamená, že během tréninku ve skutečnosti trénujete dvě sítě tohoto typu vévody-it-out a pokusíte se navzájem proklouznout. Můžete si o tom přečíst na Githubu a souvisejícím papíru.

Jeden z modelů, který si můžete stáhnout, byl předem vyškolen na 10000 obrázcích celebrit. Což je zábava. Skvělá věc je, že můžete vytvářet nové obrázky několika způsoby. Můžete vytvářet jednotlivé obrázky, jako je ten výše.

Ahoj m8s

Nebo pokud máte málo přátel, můžete vytvořit tapisérii nových, jako je tato. Hedvábný šátek, někdo?

Můj oblíbený způsob, jak s ním pracovat, je, že síť vytvoří řadu obrázků, které „krokují“ mezi dvěma generovanými výstupy, a poté je spojí do videí jako výše.

Teď jsem se cítil pohodlněji s tím, jak to všechno funguje, a chystal jsem se vyzkoušet svou vlastní síť.

Jsem designér a jsem také líný. Našel jsem tento dataset log. Opravdu hrozná loga. Je to opravdu klipart. Chtěl jsem ale vidět, co se stalo, když jsem na ně trénoval DCGAN a pokusil se něco přivést na výstup.

Cvičil jsem přes noc, asi (asi) asi 2000 iterací za 7 hodin. Skvělá věc je, že můžete sledovat výstup během tréninku a zkontrolovat, zda vše běží hladce. Vlevo můžete vidět některé výstupy během tréninku. Všimněte si, že již rozpoznává některé vizuální vzory, například kruhové tvary ve středu rámečku nebo kousky typografie kolem okrajů log.

Loga!

Dobře, takže to není stoprocentně úžasné, ale tohle mě odvedlo pryč. Snaží se dát text do středu kruhů a má rozumnou představu o formě. Existují oblouky a swooshe, kruhy a trojúhelníky. To mě ohromilo.

Začal jsem znovu myslet na Shakespeara a na to, jak moje vtipy RNN zněly jako tlustý mnich z roku 1523, když se snažili být komikem. Uvědomil jsem si, že datový soubor Shakespeare se zdá být přiměřeně soucitný s chybami ve generovaném výstupu - dokonce i věci, které nepřijdou, když Shakespeare vyjde znít Ye Olde Worlde, pokud je trénujete dostatečně špatně (což jsem udělal). Tak jsem začal přemýšlet o podobných souborech dat, které bych mohl použít s DCGAN…

KOV

Nevím, jestli znáte loga death metalu, ale berou jako bod hrdosti svou nečitelnost. Tady je pár pěkných. Vyškrábal jsem jich 500 ze spodní části hlavně Pinterest. Je tu něco zajímavého v tom, že umělá síť vytváří loga death metalu. Je to pravděpodobně jeden z více esoterických druhů hudby v okolí, díky čemuž je to podle mě nápadně lidské - musíte si toho vážit nejen z fonetického hlediska, ale také z kulturního hlediska. Stroje to zjevně nemohou udělat, ale přesto se zdálo jako jeden z nejvhodnějších druhů vizuálních pokusů o napodobení. Možná je to kvůli úrovni složitosti, že vnímáme neuronové sítě jako takové: nemůžeme snadno generovat tato loga procedurálně, takže možná je vhodnější použít „organičtější“ metodu, jako je neuronová síť?

V polovině tréninku

Uprostřed školení a náš přítel DCGAN se již začíná seznamovat s formami log. Myslel jsem si, že kdybych to prohodil tisíci dalšími iteracemi, pak by z toho vyšlo něco působivého.

Mýlil jsem se.

Po asi 2000 iteracích se vše opakovalo. Můj dataset je relativně malý a hádám, že sítí jsou učící se vzory, které se často opakují a jen je vydávají. Zjistil jsem, že návrat k kontrolnímu bodu kolem 1400 iterací mi poskytl nejlepší výstup. Na pravé straně můžete vidět několik velmi lo-res log. Program DCGAN je nastaven tak, aby trénoval obrázky 64 pixelů čtverečních. Můžete provést úpravy kódu, a to až 128 nebo 256, ale narazit na problémy školení. To bylo vyřešeno přidáním vrstvy bílého šumu do architektury sítě. Tady je dobrá nit.

Myslím, že výsledky hovoří samy za sebe. Vlevo máte dvě lepší loga, která jsem dokázal vytvořit, a dvě fantastická loga death-metalu vpravo. Nikdo brzy nevyjde, zejména Christophe Szpajdel.

Mým dalším krokem je prozkoumat audioGANy a zjistit, jestli dokážu generovat nějakou death metalovou hudbu. Pak budu mít kovovou noc. A jste všichni pozváni.