Stylizácia obrázkov pomocou neurónových sietí: Žiadny mysticizmus, len Mattan. Ostagram: Neural Network-založená služba, kombinácia fotografií a ozdoby v umeleckých majstrovských majstrovských majstrov

Stylizácia obrázkov pomocou neurónových sietí: Žiadny mysticizmus, len Mattan. Ostagram: Neural Network-založená služba, kombinácia fotografií a ozdoby v umeleckých majstrovských majstrovských majstrov
Stylizácia obrázkov pomocou neurónových sietí: Žiadny mysticizmus, len Mattan. Ostagram: Neural Network-založená služba, kombinácia fotografií a ozdoby v umeleckých majstrovských majstrovských majstrov

Od roku 2015 nemecký výskumníci z University of Tubingen predložili svoj výber štýlu slávnych umelcov na iné fotografie, služby sa začali objavovať, že táto príležitosť bola speňažná. Na západnom trhu bol spustený, a na ruštine - jeho úplnú kópiu.

Do záložiek

Napriek tomu, že Ostagram spustil v decembri, začal rýchlo získať popularitu v sociálnych sieťach v polovici apríla. V rovnakej dobe, tam bolo menej ako tisíc ľudí v projekte vo VKontakte 19. apríla.

Ak chcete použiť službu, musíte pripraviť dva obrázky: fotografiu, ktorá sa má spracovávať, a obrázok s príkladom štýlu pre prekrytie na pôvodnom obrázku.

Služba má bezplatnú verziu: vytvorí obraz v minimálnom rozlíšení až do 600 pixelov pozdĺž najdlhšej strany obrazu. Užívateľ dostane výsledok iba jednej z iterácií filtra aplikovaného na fotografiu.

Platené verzie dva: Premium dáva obraz až 700 pixelov pozdĺž najdlhšej strany a vzťahuje sa na obraz 600 iterácií spracovania neurónovej siete (čím viac iterácie, zaujímavejšie a intenzívnejšie spracovanie). Jedna takáto snímka bude 50 rubľov.

Vo verzii HD môžete nastaviť počet iterácií: 100 bude stáť 50 rubľov a 1000 - 250 rubľov. V tomto prípade bude mať obraz rozlíšenie až do 1200 pixelov pozdĺž najdlhšej strany a môže sa použiť na tlač na plátne: Ostagram ponúka takúto službu s dodávkou z 1800 rubľov.

Vo februári, zástupcovia Ostagramu, ktorí nebudú akceptovať žiadosti o spracovanie obrazu od užívateľov "z krajín s rozvinutým kapitalizmom", ale potom prístup k spracovaniu fotografií pre používateľov "VKONTAKTE" z celého sveta. Súdiac podľa kódu Ostagramu zverejneného na Github, Sergej Morugin, 30-ročný rezident Nižný Novgorod bol zapojený do svojho vývoja.

TJ kontaktoval obchodný riaditeľ projektu, ktorý bol predstavený Andrey. Podľa neho sa Ostagram objavil pred Instapaintingom, ale bol inšpirovaný podobným projektom VIPART.

Vývoj Ostagramu sa zaoberal skupinou študentov z NSTU. Alekseeva: Po počiatočnom testovaní na úzkej skupine priateľov na konci roka 2015 sa projekt rozhodol zverejniť. Spracovanie obrazu bolo spočiatku úplne zadarmo, a to bolo plánované zarobiť peniaze na predaj tlačených obrazov. Podľa Andrei sa ukázalo, že tesnenie je najväčším problémom: Fotografie ľudia liečení nervovými vozidlami zriedka vyzerajú pekne pre ľudské oči, a konečný klient potrebuje, aby sa dosiahol výsledok na dlhú dobu pred podaním na plátno, čo vyžaduje veľké zdroje stroja .

Pre spracovanie obrazu, tvorcovia Ostagramu chceli použiť servery Amazon Cloud, ale po príleve používateľov sa ukázalo, že náklady na nich by prekročili tisíc dolárov denne s minimálnym návratom investícií. Andrei, súčasne byť investorom projektu, prenajatý serverový výkon v Nižnom Novgorode.

Publikum projektu je asi tisíc ľudí denne, avšak v niektorých dňoch dosiahla 40 tisíc ľudí na úkor prechodov z zahraničných médií, ktorí sa už podarilo všimnúť projekt pred domácim (Ostagram dokonca podarilo vzrastať s európskymi DJS) . V noci, keď je prevádzka nízka, spracovanie obrazu sa môže uskutočniť za 5 minút a deň na obsadenie až hodinu.

Ak už skôr zahraničným užívateľom vedome obmedzený prístup k spracovaniu obrazu (na spustenie speňažovania začať s Ruskom), teraz Octagram už počíta na západnom publiku.

Doteraz sú vyhliadky na návratnosť podmienená. Ak každý užívateľ zaplatil za spracovanie 10 rubľov, potom by to bolo varné. [...]

Sme veľmi ťažko speňažiť v našej krajine: sme pripravení počkať na týždeň, ale nebude za to zaplatiť penny. Európania na to sú priaznivejšie - pokiaľ ide o platbu za zrušenie, zlepšenie kvality - preto je orientácia na trhu.

Andrei, Reprezentatívny Ostagram

Podľa Andreiho tímu Ostagram pracuje na novej verzii stránky s veľkou zaujatosťou v socialite: "Bude to podobné jednej dobre známej službe, ale čo robiť." Projekt sa už zaujímal o zástupcov Facebooku v Rusku, ale pred rokovaniami o predaji nedosiahli službu.

Príklady služieb

V páche na webovej stránke Ostagramu je tiež možné vidieť kombináciu, z ktorých obrázky sa ukázali na konečné obrázky: je to často ešte zaujímavejšie ako výsledok. V rovnakej dobe, filtre sú obrázky používané ako účinok na spracovanie - môžu byť uložené na ďalšie použitie.

Pozdravte vám, HABR! Určite ste si všimli, že téma štýlových fotografií pre rôzne umelecké štýly sa aktívne diskutuje v týchto. Čítanie všetkých týchto populárnych článkov, môžete si myslieť, že pod kapotou týchto aplikácií sa mágia deje, a neurónová sieť naozaj fantázie a prekreslí obraz od nuly. Tak sa stalo, že náš tím čelí podobnej úlohe: v rámci vnútorného firemného hackaton sme urobili video štylizáciu, pretože Aplikácia pre fotografie už bola. V tomto príspevku, budeme pochopiť, ako táto sieť "redraws" obrazy a budeme analyzovať články, vďaka ktorým sa stal. Odporúčam sa zoznámiť s posledným príspevkom pred čítaním tohto materiálu a všeobecne s základmi konvolučných nervových sietí. Čakáte na malý vzorec, malý kód (príklady budem viesť k theano a lasagne), ako aj mnoho obrázkov. Tento príspevok je postavený v chronologickom postupe vzhľadu výrobkov a teda myšlienky sami. Niekedy ho zriedím našim nedávnym skúsenostiam. Tu je chlapec z pekla na pritiahnutie pozornosti.


Vizualizácia a porozumenie konvolučných sietí (28. november 2013)

V prvom rade stojí za zmienku článku, v ktorom boli autori schopní preukázať, že neurónová sieť nie je čierna krabička, ale celkom interpretovateľná vec (mimochodom, dnes možno povedať nielen o konvolučutických sieťach pre počítač Vízia). Autori sa rozhodli naučiť sa interpretovať aktiváciu neurónov skrytých vrstiev, na to použili dekonvolučnú neurálnu sieť (deconvnet) navrhnutý o niekoľko rokov skôr (mimochodom, ten istý Zayler a Fergus, ktoré sú autormi, a to publikácie). Dekonvolučná sieť je v skutočnosti rovnaká sieť s kŕčmi a blogovaním, ale aplikovaný v opačnom poradí. V pôvodnej operácii deconvnet sa sieť použila v režime tréningu bez učiteľa na generovanie obrázkov. Tentokrát ho autori použili jednoducho pre opačný priechod zo značiek získaných po priamom prechode cez sieť, na pôvodný obrázok. V dôsledku toho sa ukáže obraz, ktorý možno interpretovať ako signál, ktorý spôsobil túto aktiváciu na neurónoch. Samozrejme, že otázka vzniká: Ako urobiť opačný prechod cez konvolúciu a nelinearitu? A najmä cez max-ťahanie, určite nie je invertovaná prevádzka. Zvážte všetky tri komponenty.

Reverzné relu.

V konvolučistických sieťach ako aktivačná funkcia sa často používa Relu (x) \u003d max (0, x)ktorý robí všetky aktivity na vrstve nie je negatívna. V súlade s tým, keď prechod cez nelinearity, je tiež potrebné získať negatívne výsledky. Na to autori ponúkajú používať rovnaké relu. Z hľadiska architektúry Theano je potrebné prepísať funkciu gradientu operácie (nekonečne cenný notebook je v Lazaganových receptoch, odtiaľ zvládnete podrobnosti o tom, čo je určené pre modifikáciu triedy).

Trieda ZeilerbackProp (modifikáciaPropProp): Def Grads (Self, vstupy, OUT_GRADS): (INP,) \u003d vstupy (GRD,) \u003d OUT_GRADS #RETURN (GRD * (GRD\u003e 0). Návrat (self.Nonlinearity (GRD),) # Použite danú nelinearitu

Reverzný vrták

Je tu trochu komplikovanejší, ale všetko je logické: stačí aplikovať transponovanú verziu rovnakého kameru, ale na výstupy z REELU namiesto predchádzajúcej vrstvy používanej na priamom prechode. Ale obávam sa, že slovami to nie je tak zrejmé, budeme sa pozrieť na vizualizáciu tohto postupu (ešte nájdete viac vizualizácie balíkov).


Rezané s krokom \u003d 1

Rezané s krokom \u003d 1 Reverzná verzia

Rezané s Stride \u003d 2

Rezané s Stride \u003d 2 Reverzná verzia

Reverzné ťahanie

Toto je táto operácia (na rozdiel od predchádzajúcej) vo všeobecnosti nie je obrátené. Ale stále sme chceli prejsť maximum v opačnom prechode. Na tento účel Autori ponúkajú používať mapu, kde došlo k maximálnemu priamej priechodu (max. Pri inverznom priechode sa zdá, že vstupný signál je prevedený na približne šetriť štruktúru zdrojového signálu, je naozaj ľahšie vidieť, čo opísať.



Výsledok

Algoritmus vizualizácie je veľmi jednoduchý:

  1. Urobiť priamy priechod.
  2. Vyberte pre nás.
  3. Zabezpečte aktiváciu jedného alebo viacerých neurónov a resetujte zvyšok.
  4. Vykonajte spätný výstup.

Každý sivý námestie v obrázku nižšie zodpovedá vizualizácii filtra (ktorý sa používa na konvolúciu) alebo hmotnosti jedného neurónu a každý farebný obraz je súčasťou pôvodného obrazu, ktorý aktivuje zodpovedajúci neurón. Pre jasnosť, neuróny vnútri jednej vrstvy sú zoskupené do tematických skupín. Vo všeobecnosti to bolo zrazu, že neurónová sieť sa naučí presne to, čo Hewubel a Weizel napísal o štruktúre vizuálneho systému, pre ktorú bola Nobelová cena v roku 1981 poctená. Vďaka tomuto článku sme dostali vizuálnu reprezentáciu toho, čo sa naučíte konvolučnej neurónovú sieť na každej vrstve. Je to tieto vedomosti, ktoré vám umožnia neskôr manipulovať s obsahom generovaného obrazu, ale pred tým, že nasledujúce niekoľko rokov prešli zlepšovaním metód "Zražiny" neurónových sietí. Okrem toho autori článku navrhli spôsob, ako analyzovať, ako je lepšie vybudovať konvolučnú architektúru neurónovej siete na dosiahnutie najlepších výsledkov (hoci, imagenet 2013 nevyhrali, ale dostali sa do top; Up.: Taki sa ukáže, aby sa vyhral, \u200b\u200bClarifai sú, sú to).


Vizualizácia Fich


Tu je príklad vizualizácie aktivácie pomocou Deconvnet, dnes tento výsledok je už tak, ale potom to bol prelom.


Mapy Slania s použitím deconvNet

Hlboké Involučné siete: Vizualizácia modelov klasifikácie obrazu a mapy Slavencie (19. apríl 2014)

Tento článok je venovaný štúdiu metód pre vizualizáciu poznatkov uzavretých v konvolučnej neurologickej sieti. Autori ponúkajú dva spôsoby vizualizácie na základe zostupu gradientu.

Vizualizácia modelu triedy

Predstavte si, že máme vyškolenú neurónovú sieť na vyriešenie úlohy klasifikácie pre určitý počet tried. Označuje hodnotu aktivácie výstupného neurónu, ktorá zodpovedá triede c.. Potom nám ďalšia úloha optimalizácie vám dáva presne obraz, ktorý maximalizuje vybranú triedu:



Táto úloha sa ľahko rozhoduje pomocou theeano. Zvyčajne sa pýtame rámec, ktorý sa má odvodiť podľa parametrov modelu, ale tentoraz sa domnievame, že parametre sú pevné a derivát sa odoberá prostredníctvom vstupného obrazu. Nasledujúca funkcia vyberie maximálnu hodnotu výstupnej vrstvy a vráti funkciu, ktorá vypočíta derivát vstupného obrazu.


Def Compile_salivencia_Funkcia: "" "zostavuje funkciu na výpočet mapov signálovania a predpokladaných tried pre daný minibatch vstupných obrázkov." "" INP \u003d NET ["vstup"]. vstup_Var outp \u003d lasagne.layers.get_output (NET ["FC8 "], Determinists \u003d True) Max_outp \u003d T.MAX (OUTP, AXIS \u003d 1) Slatiek \u003d Theano.Grad (Max_outp.sum (), WRT \u003d INP) Max_CLASS \u003d T.ARGMAX (OUTP, AXIS \u003d 1) Vrátiť theano. Funkcia ()

Pravdepodobne ste videli stážistové podivné obrázky so psami psov - deepdream. V pôvodnom článku, autori používajú nasledujúci proces na generovanie obrázkov, ktoré maximalizujú vybranú triedu:

  1. Inicializujte počiatočný obraz nuly.
  2. Vypočítajte hodnotu derivátu na tomto obrázku.
  3. Zmeňte obraz pridaním výsledného obrazu z derivátu.
  4. Späť na bod 2 alebo ukončite cyklus.

Takéto takéto obrázky sa získavajú:




A ak inicializujete prvý obraz skutočnej fotografie a spustite rovnaký proces? Ale na každej iterácii si vyberieme náhodnú triedu, resetujte zvyšok a vypočítajte hodnotu derivátu, potom to bude taký hlboký sen.


UPOZORNENIE 60 MB


Prečo toľko tváre psov a očí? Všetko je jednoduché: v prípade takmer 200 psov z 1000 tried majú oči. Ako aj mnoho tried, kde majú ľudia len.

Ťažba triedy

Ak je tento proces inicializovaný skutočnou fotografiou, zastavte sa po prvej iterácii a popierame hodnotu derivátu, potom dostaneme takýto obraz pridaním, ktorý k pôvodnému jednému, zvýšime hodnotu aktivácie vybratej triedy .


Mapy fyzióny s použitím derivátu


Opäť výsledok "SO-SO". Je dôležité si uvedomiť, že je to nový spôsob, ako vizualizovať aktivácie (Nič nám nebráni pred upevnením aktivačných hodnôt, ktoré nie sú na poslednej vrstve, ale všeobecne na akúkoľvek vrstvu siete a vezmite derivát vstupného obrazu). Nasledujúci článok bude kombinovať oba predchádzajúce prístupy a dáva nám nástroj na prispôsobenie služby kyvadlovej dopravy do štýlu, ktorý bude opísaný neskôr.

String pre jednoduchosť: všetky konvolučné siete (13. apríl 2015)

Tento článok vo všeobecnosti nehovorí o vizualizácii, ale že nahradenie vyrovnávacej konvolúcie s veľkou slamou nevedie k strate kvality. Ale ako vedľajší produkt ich výskumu, autori ponúkli nový spôsob vizualizácie funkcie, ktorý aplikoval na presnejšiu analýzu toho, čo sa naučíte model. Ich myšlienka je nasledovná: Ak len vezmeme derivát, potom s dekonvolúcimi, tieto funkcie, ktoré boli na vstupnom obraze, sú menšie ako nula (použitie relue pre vstupný obraz) nie je v priebehu dekonvolúcie. A to vedie k tomu, že na prevánenom chrbte sa objavia záporné hodnoty. Na druhej strane, ak používate deconvnet, potom iná relus je prevzatá z relusového derivátu - to umožňuje neprejsť negatívne hodnoty, ale ako ste videli výsledok, sa ukáže "tak-tak". Ale čo ak kombinujete tieto dve metódy?




Class GuidedbackProp (modifikáciaPropProp): Def Grad (Self, vstupy, OUT_GRADS): (InP,) \u003d vstupy (GRD,) \u003d OUT_GRADS DTYPE \u003d INP.DTYPE návrat (GRD * (InP\u003e 0) .Aspan (DTYPE) * \u003e 0) .Aspatpe (DTYPE),)

Potom sa ukáže úplne čistý a interpretovateľný obraz.


Mapy Slavencie s použitím spätného chápania

Choďte hlbšie.

Teraz si o tom premýšľajte, čo nám dáva? Dovoľte mi pripomenúť, že každá koučovacia vrstva je funkciou, ktorá prijíma trojrozmerný tenzor a výstup k výstupu tiež poskytuje trojrozmerný tenzor, snáď ďalšia dimenzosť d. X. w. X. h.; d.epth je počet neurónov vo vrstve, každý z nich generuje dosku (funkciu mapy) w.igth X. h.oSEM.


Pokúsme sa držať nasledujúci experiment na sieti VGG-19:



conv1_2.

Áno, skoro nevidíte nič, pretože Plocha receptu je veľmi malá, to je druhá konvaalácia 3x3, v tomto poradí, celková plocha je 5x5. Ale zvýšenie, uvidíme, že funkcia je len gradient detektor.




conv3_3.


conv4_3.


conv5_3.


pool5.


A teraz si predstaviť, že namiesto maximum na RAID, budeme mať derivátovú hodnotu všetkých prvkov kocky na vstupnom obraze. Potom sa zrejmé, že oblasť receptov skupiny Neuron bude pokrývať všetok vstupný obraz. Pre skoré vrstvy uvidíme jasné karty, z ktorých dospejeme, že ide o detektory kvetov, potom gradienty, potom hranice a tak ďalej v smere komplikácií vzorov. Hlbšia vrstva, tým viac nudného obrazu sa ukazuje. To je vysvetlené skutočnosťou, že hlbšie vrstvy, zložitejší vzor, \u200b\u200bktorý zistia, a komplexný vzor sa javí ako menej často, jednoduché, preto aktivačná mapa upevnená. Prvá metóda je vhodná na pochopenie vrstiev komplexnými vzormi a druhá je len pre jednoduchú.


conv1_1


conv2_2.


conv4_3.


Môžete si stiahnuť kompletnejšiu aktivačné databázu pre niekoľko obrázkov a.

Neurónový algoritmus umeleckého štýlu (2 sep 2015)

Takže, prešiel niekoľkými rokmi od okamihu prvej úspešnej trepačnej neurónovej siete. My (v zmysle - v ľudstve) Existuje mocný nástroj na rukách, čo umožňuje pochopiť, čo sa učí neurónovej siete, a tiež odstrániť to, čo sa nám nepáči, aby sa naučili. Autori tohto článku vyvíjajú metódu, ktorá umožňuje jednému obrazu vytvárať podobnú aktivačnú kartu pre cieľový obraz, a možno ani jedna vec - to je základom štydizácie. Slúžime biely hluk na vstupe a podobný iteračný proces ako v hlbokom sních, prezentujeme tento obrázok tomuto obrazu, ktorého príznaky sú podobné cieľovému obrazu.

Strata obsahu

Ako už bolo uvedené, každá vrstva neurónovej siete produkuje trojrozmerný tenzor nejakej dimenzie.




Zaznamenaný i.Vrstva z vchodu ako. Potom, ak minimalizujeme vážené diféry súčtu medzi vstupným obrazom a nejaký obrázok, ktorým sa snažíme c., potom presne ukazuje, čo potrebujete. Pravdepodobne.



Pre experimenty s týmto článkom je možné použiť tento magický notebook, vyskytujú sa výpočty (na GPU aj CPU). GPU sa používa na výpočet funkcie neurónovej siete a hodnoty nákladovej funkcie. Theano dáva funkciu, ktorá môže vypočítať gradient cieľovej funkcie eval_grad. V obraze x.. Potom je to všetko podávané v LBFGs a iteratívny proces sa spustí.


# Inicializujte s hlukovým obrazom Generaded_Image.Set_Value (Floatx (NP.Random.Uniform (-128, 128, (1, 3, Image_w, Image_w)))) x0 \u003d generované_image.get_Value (). Asype ("Float64") XS \u003d xs.APHEND (X0) # Optimalizovať, šetrí výsledok pravidelne pre I v rozsahu (8): vytlačiť (i) scipy.optimize.fmin_l_bfgs_b (eval_loss, x0.flatten (), fprome \u003d eval_grad, maxfun \u003d 40) x0 \u003d generated_image.get_Value (). Axy ("Float64") XS.Pappend (x0)

Ak začneme optimalizáciu takejto funkcie, potom rýchlo dostaneme obrázok podobný cieľu. Teraz môžeme obnoviť obrázky podobné obrázku obsahu.


Strata obsahu: CONV4_2



Optimalizácia procesov




Jednoduché všimnite si dve funkcie prijatého obrázka:

  • farby boli stratené - to je výsledok skutočnosti, že v špecifickom príklade používali len vrstvu CONV4_2 (alebo inými slovami, hmotnosť W sa s ním použila, a pre zostávajúce nulové vrstvy); Ako si pamätáte, je to včasné vrstvy, ktoré obsahujú informácie o farbách a gradientových prechodoch, a neskôr obsahujú informácie o väčších položkách, ktoré sledujeme - farby sú stratené a neexistuje žiadny obsah;
  • niektoré domy "išli", t.j. Priame riadky mierne skrútené - to je preto, že je obsiahnutá menej informácií o priestorovej polohe funkcie (výsledok použitia zväzku a útesov).

Pridanie skorých vrstiev okamžite opravuje situáciu s kvetmi.


Strata obsahu: CONV1_1, CONV2_1, CONV4_2


Dúfam, že pre tento bod ste sa cítili, že môžete spravovať, čo bude zvrátené na obrázku z bieleho hluku.

Štýl.

A tak sme sa dostali k najzaujímavejšiemu: A čo nám, aby sme prešli štýlom? Čo je štýl? Je zrejmé, že štýl nie je, že sme optimalizovali v obsahovej strate "E, pretože existuje veľa informácií o priestorových pozíciách funkcií. Takže prvá vec, ktorú treba urobiť, je akýmkoľvek spôsobom odstrániť tieto informácie zo získaných reprezentácií každá vrstva.


Autor ponúka nasledujúcim spôsobom. Vezmeme tenzor na výjazde z nejakej vrstvy, budeme rozšíriť na priestorové súradnice a zvážiť matricu kovariancie medzi zomriemi. Označujú túto konverziu ako G.. Čo sme vlastne urobili? Je možné povedať, že sme počítali, ako často sa znamenia vo vnútri kocky nachádzajú v pároch, alebo inými slovami, aproximovali sme distribúciu značiek v zomrie s multidimenzionálnou normálnou distribúciou.




Potom sa strát štýl zadá nasledujúcim spôsobom, kde s. - Toto je nejaký obrázok so štýlom:



Pokúsme sa o vincentu? V zásade získame niečo očakávať, že hluk v štýle Van Gogha, informácie o priestorovej polohe funkcií je úplne stratené.


Vincentný




A čo ak si namiesto štýlu dal fotografiu? Ukazuje už známe vlastnosti, známe farby, ale priestorová poloha je úplne stratená.


Fotografia so strátou štýlu


Určite si premýšľal, prečo sme vypočítali kovariančnú maticu, a nie niečo iné? Koniec koncov, existuje mnoho spôsobov, ako súčet znamení, takže sa stratia priestorové súradnice. To je naozaj otvorená otázka, a ak si vezmete niečo veľmi jednoduché, výsledok sa dramaticky nezmení. Poďme skontrolovať, vypočítame kovariančnú maticu, ale jednoducho priemernú hodnotu každého kocky.




jednoduchá strata štýlu

Kombinovaná strata

Samozrejme, že túžba vzniká na zmiešanie týchto dvoch funkcií nákladov. Potom budeme vygenerovať z bieleho hluku, že budú známky z obsahu-obrazu (ktoré majú väzbu na priestorové súradnice) a "štýl" znamenia, ktoré nie sú viazané na priestorové súradnice, t.j. Dúfame, že údaje o obsahu obsahu zostanú neporušené od svojich miest, ale budú redrawn s požadovaným štýlom.



V skutočnosti existuje aj regularizátor, ale budeme ho definovať pre jednoduchosť. Zostáva odpovedať na ďalšiu otázku: Aký druh vrstiev (hmotnosť) používajú pri optimalizácii? A obávam sa, že nemám odpoveď na túto otázku a autori podľa článku. Majú návrh na použitie nasledovného, \u200b\u200bale neznamená to vôbec, že \u200b\u200biná kombinácia bude fungovať horšie, príliš veľa vyhľadávacieho priestoru. Jediné pravidlo, ktoré vyplýva z chápania modelu: nemá zmysel vziať susedné vrstvy, pretože Nebudú sa od seba navzájom nelíšia, pretože štýl sa pridáva cez vrstvu z každej skupiny CONV * _1.


# Definovať straty straty strát \u003d # Content Straty strát.Append (0,001 * Content_LOSS (FOTO_FEASTURES, GEN_PERUSTRÁCIE, "CONV4_2")) # Štýl Straty strát.Append (0.2E6 * style_loss (Art_Features, Gen_Features, "CONV1_1")) Straty.Pappend (Art_Features, Gen_Features, "CONV2_1")) Straty.APPEND (0.2E6 * Style_loss (Art_Features, Gen_Features, "CONV3_1")) Straty.APPED (0.2E6 * Style_loss (Art_Features, Gen_Features, "CONV4_1")) Straty.Pappend ( 0.2E6 * style_loss (Art_Features, Gen_Features, "CONV5_1")) # Celková variácia Penalty Straty.APPEND (0.1E-7 * TOTAL_VARIACE_LOSS (Generaded_image)) TOT_LOSS \u003d SUMA (Straty)

Konečný model môže byť zastúpený v nasledujúcom podobe.




Ale výsledok domov s Van Goghom.



Pokus o kontrolu procesu

Pamätajme na predchádzajúce časti, už dva roky pred súčasným článkom, ostatní vedci skúmali, čo sa naozaj učí neurónovej siete. Ozbrojený všetkými týmito článkami, môžete liečiť vizualizáciu vlastností rôznych štýlov, rôzne obrázky, rôzne povolenia a veľkosti, a pokúsiť sa pochopiť, ktoré vrstvy s akou váhou. Ale aj obklady vrstiev plne kontroluje, čo sa deje. Problém tu je viac koncepčný: nie sme optimalizáciou tejto funkcie! Ako sa pýtate? Odpoveď je jednoduchá: Táto funkcia minimalizuje zvyškové ... No, rozumiete. Ale čo naozaj chceme, je, že sa nám páči obrázok. Konvexná kombinácia obsahu a strát strát nie je meradlom skutočnosti, že naša myseľ považuje krásne. Treba poznamenať, že ak budete pokračovať v štylizácii príliš dlho, nákladová funkcia prirodzene klesá nižšie a nižšie, ale estetická krása výsledku prudko klesá.




No, v poriadku, je tu ďalší problém. Predpokladajme, že sme našli vrstvu, ktorá odstráni označenia, ktoré potrebujete. Predpokladajme, že niektoré trojuholníkové textúry. Táto vrstva však stále obsahuje mnoho ďalších príznakov, ako sú kruhy, ktoré naozaj nechceme vidieť na výslednom obraze. Všeobecne povedané, ak by ste si mohli najať milión Číňanov, mohli by ste predstaviť všetky funkcie štýlu štýlu, a kompletná prosperita jednoducho poznamenávajú tie, ktoré potrebujeme, a len ich zahrnúť do nákladovej funkcie. Ale zrejmé dôvody to nie je také jednoduché. Ale čo ak len odstránime všetky kruhy, ktoré nechceme vidieť výsledok, zo štýlu štýlu? Potom jednoducho nepracujú aktivujú zodpovedajúce neuróny, ktoré reagujú na kruhy. A samozrejme, potom na výslednom obraze sa nezobrazí. Rovnaké s kvetmi. Predstavte si svetlý obraz s množstvom farieb. Distribúcia farieb bude veľmi chybná počas priestoru, to isté bude distribúcia výsledného obrazu, ale v procese optimalizácie, tie vrcholy, ktoré boli na origináli, sú pravdepodobne stratené. Ukázalo sa, že tento problém rieši jednoduchý pokles farieb farebnej palety. Distribučná hustota väčšiny farieb bude nula a vo viacerých častiach bude veľké vrcholy. Tak, manipuláciou originálu vo Photoshope, manipulujeme so znakmi, ktoré sú získané z obrázku. Osoba je ľahšie vyjadriť svoje túžby vizuálne, než sa pokúsiť formulovať ich v jazyku matematiky. Až do. V dôsledku toho dizajnéri a manažéri, vyzbrojení Photoshop a skripty na vizualizáciu príznakov, dosiahnuté časy trikrát výsledok je lepší ako matematika s programátormi.


Príklad manipulácie farby a veľkosti funkcií


A môžete si urobiť jednoduchý obrázok ako štýl



výsledok








A tu je widget, ale len s požadovanou textúrou

Texture Networks: Syntéza napájania textúr a štylizovaných obrázkov (10 Mar 2016)

Zdá sa, že by sa to mohlo zastaviť, ak nie jeden nuans. Štylizačný algoritmus opísaný vyššie funguje veľmi dlho. Ak si uvedomíte, že LBFGS začína na CPU, proces trvá päť minút. Ak prepíšete tak, že obe optimalizácia prejde na GPU, proces bude trvať 10-15 sekúnd. Nie je to dobré. Snáď autori tohto a ďalšieho článku si mysleli o tom istom. Obe publikácie vystúpili nezávisle s rozdielom 17 dní po takmer roku po predchádzajúcom článku. Autori súčasného článku, ako aj autorov predchádzajúceho, boli zapojení do generácie textúr (ak práve vynulujete stratu štýlu približne, bude úspešná). Ponúkali, že optimalizovať nie je obraz získaný z bieleho hluku, ale nejakú neurónovú sieť, ktorá generuje štylizovaný obraz.




Teraz, ak proces štylizácie nezahŕňa žiadnu optimalizáciu, vyžaduje sa len priama pasáž. A optimalizácia sa vyžaduje len raz na cvičenie generátora siete. Tento článok používa hierarchický generátor, kde každý druhý z. Veľkosť je väčšia ako predchádzajúca a zachytáva sa od hluku v prípade výroby textúry a z určitej obrazovej základne pre stylist. Je rozhodujúce použiť niečo iné od tréningovej časti imajne, pretože Funkcie vo vnútri straty siete sú vypočítané sieťou vyškolenou len na tréningovej časti.



Percepčné straty pre transfer štýlu v reálnom čase (27 mar 2016)

Ako možno vidieť z mena, autori, ktorí boli neskoro len 17 dní s myšlienkou generujúcej siete, boli zapojení do zvýšenia rozlíšenia obrazu. Zdá sa, že boli inšpirovaní úspešnosťou zvyškového vzdelávania na poslednej udalosti.




V súlade s tým, zvyšný blok a blokový blok.



Teraz, teraz máme vo vašich rukách okrem kontrolnej štydizácie, je tiež rýchly generátor (vďaka týmto dvom článkom, čas generácie jedného obrazu sa meria s desiatkami MS).

Koniec

Informácie z uvažovaných článkov a kód autorov, ktoré sme použili ako východiskový bod, aby sme vytvorili ďalšiu aplikáciu na styling prvej video štylizačnej aplikácie:



Generovať niečo také.


Početné a nie úplne odlíšiteľné esencie sa objavujú na najbežnejších fotografiách. Najčastejšie pre niektorý dôvod psov. Tento obraz internetu začal vyplniť v júni 2015, keď bol zahájený Deepdream z Google - jeden z prvých otvorených služieb založených na neurónových sieťach a určený na spracovanie obrazu.

Stáva sa to približne ako: algoritmus analyzuje fotografie, nájde fragmenty, ktoré mu pripomínajú akékoľvek známe objekty - a skresľujú obraz v súlade s týmito údajmi.

Spočiatku bol projekt zaslaný ako otvorený kód, a potom online služby vytvorené na internete, vytvorené na rovnakých princípoch. Jedným z najpohodlnejších a najobľúbenejších je Generátor s hlbokým sen: Malé spracovanie fotografií tu trvá len asi 15 sekúnd (skorší užívatelia museli počkať viac ako hodinu).

Ako sa neurónové siete naučia vytvoriť takéto obrázky? A prečo, mimochodom, sú to tzv?

Neurónové siete na ich zariadení napodobňujú skutočné neurónové siete živého organizmu, ale robia to s pomocou matematických algoritmov. Vytvorením základnej štruktúry ho môžete trénovať podľa metód strojového vzdelávania. Ak hovoríme o rozpoznaní obrázkov, potom tisíce obrázkov je potrebné preskočiť cez neurónovú sieť. Ak je úloha neurosette iná, potom sa tréningové cvičenia líšia.

Algoritmy pre hranie šachu, napríklad, analyzovať šachové hry. Ten istý algoritmus Alphago z Google Deepmind v čínskej hre Go - ktorý bol vnímaný ako prielom, pretože je oveľa ťažšie a stojí za to viac ako šach.

    Vyhrávanie s zjednodušeným modelom neurónovej siete a je lepšie pochopiť jeho zásady.

    YouTube má tiež sériu personalizovanej ruky valčeky O tom, ako neurónové siete fungujú.

Ďalšou populárnou službou je Dreamscope, čo nemôže nielen snívať o psoch, ale tiež napodobňuje rôzne malebné štýly. Obrázok spracovanie tu tiež nastane veľmi jednoduché a rýchlo (asi 30 sekúnd).

Zdá sa, že algoritmická časť služby je modifikácia programu neurálneho štýlu, ktorý už sme.

V poslednej dobe bol program, ktorý realisticky maľuje čiernobiele obrázky. V predchádzajúcich verziách, podobné programy sa vyrovnali s ich úlohou veľa ďaleko, a bol považovaný za veľký úspech, ak aspoň 20% ľudí nemôže odlíšiť skutočný obraz z obrazu na maľovanú počítačom.

Okrem toho, sfarbenie tu trvá len asi 1 minútu.

Rovnaká vývojová spoločnosť tiež spustila službu, ktorá rozpoznáva rôzne typy objektov v obrázkoch.

Tieto služby sa môžu zdať len vtipné zábavy, ale v skutočnosti je všetko oveľa zaujímavejšie. Nové technológie sú zahrnuté do praxe umelcov ľudí a zmeniť naše myšlienky o čl. Pravdepodobne, čoskoro budú mať ľudia súťažiť s automobilmi a v oblasti kreativity.

Naučte algoritmy rozpoznať obrázky - úlohu, na ktorej boli vývojári umelej inteligencie dlho bojovať. Programy, ktoré farebné staré obrázky sú preto nakreslené na oblohe psov, môžu byť považované za súčasť väčšieho a zaujímavého procesu.