Stilizacija slika pomoću neuronskih mreža: bez misticizma, samo mattan. Ostatigram: usluga temeljena na broju, kombiniranje fotografija i ukrasa u umjetničkim remek-djelima neurallet crta slike

Stilizacija slika pomoću neuronskih mreža: bez misticizma, samo mattan. Ostatigram: usluga temeljena na broju, kombiniranje fotografija i ukrasa u umjetničkim remek-djelima neurallet crta slike
Stilizacija slika pomoću neuronskih mreža: bez misticizma, samo mattan. Ostatigram: usluga temeljena na broju, kombiniranje fotografija i ukrasa u umjetničkim remek-djelima neurallet crta slike

Brojne i ne u potpunosti razlikovne esencije pojavljuju se na najbolje uobičajenim fotografijama. Najčešće iz nekog razloga psi. Ova slika Interneta počela je popunjavati u lipnju 2015. godine, kada je pokrenut duboko od Googlea - jedan od prvih otvorenih usluga na temelju neuronskih mreža i namijenjenih za obradu slika.

To se događa približno kao: algoritam analizira fotografije, pronalazi fragmente koji ga podsjećaju na poznate objekte - i iskrivljuju sliku u skladu s tim podacima.

U početku je projekt objavljen kao otvoreni kod, a zatim online usluge kreirane na internetu, stvorene na istim načelima. Jedan od najpogodnijih i najpopularnijih je duboka generator iz snova: mala prerada fotografija ovdje traje samo oko 15 sekundi (raniji korisnici moraju čekati više od sat vremena).

Kako neuronske mreže nauče stvoriti takve slike? I zašto, usput, tako se zovu?

Neuronske mreže na uređaju oponašaju stvarne neuronske mreže živog organizma, ali to čine uz pomoć matematičkih algoritama. Stvaranjem osnovne strukture možete ga trenirati prema metodama stroja. Ako govorimo o prepoznavanju slika, tisuće slika treba preskočiti kroz neuronsku mrežu. Ako je zadatak neurozeta drugačiji, onda će vježbe treninga biti različiti.

Algoritmi za igranje šaha, na primjer, analizirajte šahovske igre. Isti algoritam Albago iz Google DeepMind u kineskoj igri Go - koji je percipiran kao proboj, jer je mnogo teže i vrijedno toga više od šaha.

    Reprodukcija s pojednostavljenim modelom neuronske mreže i bolje je razumjeti njegova načela.

    YouTube također ima niz personaliziranih rukova valjci O tome kako neuronske mreže rade.

Još jedna popularna usluga je Dreamscop, koji ne samo da sanja o psima, već i oponašaju razne slikovite stilove. Obrada slike ovdje se također pojavljuje vrlo jednostavan i brzo (oko 30 sekundi).

Očigledno, algoritamski dio usluge je modifikacija programa neuralnog stila, koji smo već.

Nedavno je postojao program koji realno slika crno-bijele slike. U prethodnim verzijama, slični programi se suočavaju s njihovim zadatkom mnogo daleko, te se smatralo velikim postignućem, ako najmanje 20% ljudi ne može razlikovati pravu sliku s slike obojenog pomoću računala.

Štoviše, bojanje ovdje traje samo oko 1 minutu.

Ista razvojna tvrtka je također pokrenula uslugu koja prepoznaje različite vrste objekata na slikama.

Ove usluge mogu činiti samo smiješne zabave, ali u stvari sve je mnogo zanimljivije. Nove tehnologije uključene su u praksu ljudi umjetnika i mijenjaju naše ideje o umjetnosti. Vjerojatno će se uskoro ljudi morati natjecati s automobilima iu području kreativnosti.

Naučite algoritme da prepoznaju slike - zadatak nad kojim su programeri umjetne inteligencije dugo borili. Dakle, programi koji su boje starih slika su nacrtani na nebu pasa mogu se smatrati dijelom većih i intrigantnog procesa.

Pozdrav vama, Habr! Sigurno ste primijetili da se tema oblikovanja fotografija za razne umjetničke stilove aktivno raspravlja u tim. Čitanje svih ovih popularnih članaka, možda mislite da je ispod haube ovih aplikacija, magija se događa, a neuronska mreža stvarno fantazije i ponovno ispere sliku od nule. Tako se dogodilo da je naš tim suočen sa sličnim zadatkom: u okviru unutarnjeg korporativnog hackatona smo napravili video stilizaciju, jer Zahtjev za fotografije već je bio. U ovom postu, mi ćemo shvatiti kako ova mreža "reduje" slike, a mi ćemo analizirati članke, zahvaljujući kojem je postao moguć. Preporučujem da se upoznate s posljednjim poštom prije čitanja ovog materijala i općenito s temeljima konvolucijskih neuronskih mreža. Čekate malu formulu, mali kod (primjeri ću dovesti do Theano i Lazanje), kao i mnoge slike. Ovaj post je izgrađen u kronološkom postupku za izgled članaka i, prema tome, ideje same. Ponekad ću ga razrijediti na naše nedavno iskustvo. Ovdje je dječak iz pakla kako bi privukao pozornost.


Vizualiziranje i razumijevanje konvolucijskih mreža (28. studenoga 2013.)

Prije svega, vrijedno je spomenuti članak u kojem su autori mogli pokazati da neuronska mreža nije crna kutija, ali prilično interpretabilna stvar (usput, danas se može reći ne samo o konvolucijskim mrežama za računalo vizija). Autori su odlučili naučiti kako protumačiti aktivaciju neurona skrivenih slojeva, jer su koristili dekonvolucionarnu neuronsku mrežu (DeconVnet) predložio nekoliko godina ranije (usput, isti Zayler i Fergus, koji su autori i to objavljivanje). Dekonvolucionarna mreža je zapravo ista mreža s konvulzijama i blogiranjem, ali se primjenjuje obrnutim redoslijedom. U izvornoj aktivnosti DekonvNet, mreža je korištena u načinu treninga bez nastavnika za generiranje slika. Ovaj put su ga autori primijenili samo za suprotnu propusnicu od znakova dobivenih nakon izravnog prolaza preko mreže, na izvornu sliku. Kao rezultat toga, ispada na sliku koja se može tumačiti kao signal koji je uzrokovao ovu aktivaciju na neurone. Naravno, postavlja se pitanje: kako napraviti suprotan prolaz kroz konvoluciju i nelinearnost? A posebno kroz max-povlačenje, to je sigurno ne obrnuti rad. Razmotrite sve tri komponente.

Obrnuti relu.

U konvolucijskim mrežama često se koristi aktivacijska funkcija Relu (x) \u003d max (0, x)što čini sve aktivacije na sloju ne negativne. Prema tome, kada je prolaz kroz nelinearnost, potrebno je također dobiti negativne rezultate. Za to, autori nude isti način. Sa stajališta Theano arhitekture potrebno je nadjačati funkciju gradijenta operacije (beskonačno vrijedan laptop je u Lazaganskim receptima, od tamo ćete se nositi s detaljima onoga što je za modifiedbackprop klasu).

Klasa ZeilerbackProp (ModifiedbackProp): Def Grads (samopouzdanje, ulazi, out_brds): (inp,) \u003d ulazi (GRD,) \u003d out_grads #return (GRD * (GRD\u003e 0) .astip (inp.dtype),) # eksplicitno ispraviti Povratak (self.nonlinearnost (GRD),) # Koristite određenu nelinearnost

Vježbati

To je malo komplicirano ovdje, ali sve je logično: dovoljno je primijeniti transponiranu verziju istog kaputa kernela, ali na izlaze iz Reela umjesto prethodnog sloja koji se koristi na izravnoj propusnici. Ali bojim se da riječima nije tako očite, pogledat ćemo vizualizaciju ovog postupka (naći ćete još više vizualizacije paketa).


Rezati s korakom \u003d 1

Rezati s korakom \u003d 1 Reverzna verzija

Rezati s korakom \u003d 2

Rezati s korakom \u003d 2 Reverzna verzija

Obrnuto povlačenje

To je ova operacija (za razliku od prethodnog) općenito govoreći ne obrnutim. Ali još uvijek smo htjeli proći maksimum u suprotnom odlomku. Za to, autori nude korištenje karte gdje je došlo do maksimuma izravne propusnice (max lokacija prekidača). Kada je inverzni prolaz, ulazni signal se pretvara u približno spremanje strukture izvornog signala, to je stvarno lakše vidjeti što opisati.



Proizlaziti

Algoritam vizualizacije je iznimno jednostavan:

  1. Napraviti izravnu propusnicu.
  2. Odaberite sloj od interesa za nas.
  3. Sigurna aktivacija jednog ili više neurona i resetirajte ostatak.
  4. Napraviti obrnuti izlaz.

Svaki sivi trg na donjoj slici odgovara vizualizaciji filtra (koja se koristi za konvoluciju) ili težine jednog neurona, a svaka slika boja je dio izvorne slike koja aktivira odgovarajući neuron. Za jasnoću, neuroni unutar jednog sloja grupirani su u tematske skupine. Općenito, odjednom je da neuronska mreža uči točno ono što je Hewubel i Weizl napisao o strukturi vizualnog sustava, za koju je šezdesetih nagrada 1981. godine počašćena. Zahvaljujući ovom članku primili smo vizualni prikaz onoga što nauči konvoluciju neuronske mreže na svakom sloju. To je to znanje koje će vam omogućiti da manipulirate sadržaj generirane slike kasnije, ali prije toga, sljedećih nekoliko godina prošlo je poboljšanje metoda "izdaju" neuronske mreže. Osim toga, autori članka predložili su način da se analiziraju kako je bolje izgraditi konvolucionalnu arhitekturu neuronske mreže kako bi se postigla najbolji rezultati (iako, imagenet 2013 nisu pobijedili, ali su ušli u vrh; UGRAD.: Taki se ispostavlja da je osvojio, Clarifai je oni, oni su).


Vizualizacija


Evo primjera vizualizacije aktivacije pomoću DeconVnet, danas je ovaj rezultat već tako, ali onda je to bio proboj.


Karte saspanosti pomoću dekonvNeta

Duboke unutarnje konvolucije: vizualiziranje modela klasifikacije slike i karata saspajanja (19. travnja 2014.)

Ovaj članak je posvećen proučavanju metoda za vizualizaciju znanja priloženih u konvoluciji neuronske mreže. Autori nude dva načina vizualizacije na temelju uspostajanja gradijenta.

Vizualizacija modela klase

Dakle, zamislite da imamo obučenu neuronsku mrežu kako bismo riješili klasifikacijski zadatak za neki broj razreda. Označiti vrijednošću aktivacije izlazne neurone, koja odgovara razredu c., Zatim nam sljedeći zadatak optimizacije daje upravo sliku koja maksimizira odabranu klasu:



Ovaj zadatak je lako odlučiti koristeći Theano. Obično postavljamo okvir da se derivat u skladu s parametrima modela, ali ovaj put vjerujemo da su parametri fiksirani, a derivat se uzima kroz ulaznu sliku. Sljedeća funkcija odabire maksimalnu vrijednost izlaznog sloja i vraća funkciju koja izračunava derivat ulazne slike.


def compile_salitict_funkcija: "" "Sastavlja funkciju za izračunavanje karata saspanosti i predviđenu klase za određeni minibatch ulaznih slika." "" Inp \u003d Net ["ulaz"]. Input_var Outp \u003d LaSagne.Layers.get_Output (Net [FC8 "], Deterministic \u003d True) max_outp \u003d t.max (OUTP, os \u003d 1) saloj \u003d theano.grad (max_outp.sum (), WRT \u003d inp) max_class \u003d t.argmax (OUTP, Axis \u003d 1) Povratak Theano. funkcija ()

Vjerojatno ste vidjeli stažista čudne slike s psima pasa - duboko. U izvornom članku, autori koriste sljedeći proces za generiranje slika koje maksimiziraju odabranu klasu:

  1. Inicijalizirajte početnu sliku nula.
  2. Izračunajte vrijednost derivata na ovoj slici.
  3. Promijenite sliku dodavanjem dobivene slike iz derivata.
  4. Natrag na točku 2 ili izađite iz ciklusa.

Takve se slike dobivaju:




A ako inicijalizirate prvu sliku prave fotografije i pokrenite isti proces? No, na svakoj iteraciji odabiret ćemo slučajnu klasu, resetirati ostatak i izračunati vrijednost derivata, onda će biti tako duboki san.


OPREZ 60 MB


Zašto se toliko suočavaju s psima i očima? Sve je jednostavno: u slučaju gotovo 200 pasa od 1000 razreda, imaju oči. Kao i mnoge klase u kojima ljudi nemaju.

Ekstrakcija klase

Ako je taj proces inicijaliziran od strane prave fotografije, zaustavlja se nakon prve iteracije i uskraći vrijednost derivata, tada ćemo dobiti takvu sliku dodavanjem koje će se na izvorno povećati vrijednost aktivacije odabrane klase ,


Karte saspanosti pomoću derivata


Opet rezultat "tako-pa". Važno je napomenuti da je to novi način za vizualizaciju aktivacija (ništa nas ne sprječava učvršćivanje vrijednosti aktivacije ne na posljednjem sloju, nego općenito na bilo kojem sloju mreže i uzeti derivat ulazne slike). Sljedeći članak će kombinirati i prethodne pristupe i daje nam alat za prilagodbu usluge prijevoza na stil koji će biti opisan kasnije.

String za jednostavnost: sve konvolucionalne mreže (13. travnja 2015.)

Ovaj članak općenito govoreći ne o vizualizaciji, ali da zamjena Converolucije HullA s velikom slamom ne dovodi do gubitka kvalitete. No, kao nusproizvod njihovog istraživanja, autori su ponudili novi način vizualizacije značajke, koji su se prijavili na točniju analizu onoga što nauči model. Njihova ideja je kako slijedi: Ako samo uzmemo derivat, onda s dekonvolucijama, te značajke koje su bile na ulaznoj slici su manje od nule (korištenje relua za ulaznu sliku) ne vraća se tijekom dekonvolucije. A to dovodi do činjenice da se negativne vrijednosti pojavljuju na prevelikoj pozadini slike. S druge strane, ako koristite dekonvNet, onda se još jedan relun uzima iz relualnog derivata - to vam omogućuje da ne prenesete negativne vrijednosti, ali kao što ste vidjeli rezultat, ispada se "tako-pa". Ali što ako kombinirate ove dvije metode?




Klasa VodicAckProp (ModifiedbackProp): Def Grad (self, ulazi, out_brds): (inp,) \u003d ulazi (GRD,) \u003d out_grads dType \u003d inp.dtype povratak (GRD * (inp\u003e 0) .astip (dtype) * (GRD \u003e 0) .Astip (dteype),)

Tada se ispostavi potpuno čista i interpretabilna slika.


Karte saspanosti koristeći vođene backpropagacije

Ići dublje.

Razmislimo o tome, što nam to daje? Dopustite mi da vas podsjetim da je svaki trening sloj funkcija koja prima trodimenzionalni tenzor i izlaz za izlaz također daje trodimenzionalni tenzor, možda i drugu dimenzionalnost d. X. w. X. h.; d.ePTH je broj neurona u sloju, od kojih svaki generira ploču (mapu značajke) w.qth X. h.oSAM.


Pokušajmo zadržati sljedeći eksperiment na VGG-19 mreže:



conver1_2.

Da, gotovo ne vidite ništa, jer Područje recepta je vrlo malo, to je drugi konvolucija 3x3, odnosno ukupne površine je 5x5. Ali povećanje, vidjet ćemo da je značajka samo detektor gradijenta.




conver3_3.


conver4_3.


conver5_3.


pool5.


A sada ćemo zamisliti da umjesto maksimuma na RAID-u ćemo uzeti derivatnu vrijednost svih elemenata kockice na ulaznoj slici. Očito je da će recept područje neurona grupe pokriti svu ulaznu sliku. Za rane slojeve vidjet ćemo sjajne kartice iz koje zaključujemo da su to detektori cvijeća, zatim gradijenti, a zatim granice i tako dalje u smjeru komplikacije uzoraka. Dublje sloj, to se ispada više dosadna slika. To se objašnjava činjenicom da se dublji slojevi, složeniji uzorak, koji detektiraju, a složeni uzorak se pojavljuje rjeđe, jednostavan, dakle, dakle, aktivacijska karta pričvršćuje. Prva metoda je prikladna za razumijevanje slojeva sa složenim uzorcima, a drugi je samo za jednostavno.


conver1_1


conver2_2.


conver4_3.


Možete preuzeti potpunu bazu podataka o aktivaciji za nekoliko slika i.

Neuralni algoritam umjetničkog stila (2 rujna 2015.)

Dakle, prošlo je nekoliko godina od trenutka prvog uspješnog trepanacije neuronske mreže. Mi (u smislu - u čovječanstvu) postoji moćan alat na rukama, što omogućuje razumijevanje što nauči neuronsku mrežu, a također uklanja ono što nam se zapravo neće svidjeti da uči. Autori ovog članka razvijaju metodu koja omogućuje jednu sliku da generira sličnu aktivacijsku karticu za ciljnu sliku, a možda ni jednu stvar - to je temelj stilizacije. Mi služimo bijeli buku na ulazu, i sličan iterativni proces kao u dubokom snu, predstavljamo ovu sliku o tome čiji su znakovi znakova slični ciljnoj slici.

Gubitak sadržaja.

Kao što je već spomenuto, svaki sloj neuronske mreže proizvodi trodimenzionalni tenzor neke dimenzije.




Označava putem i.Sloj od ulaza kao. Onda ako minimiziramo ponderirane difficije zbroja između ulazne slike i neku sliku na koju težimo c., Onda se ispadne točno ono što trebate. Vjerojatno.



Za eksperimente s ovim člankom može se koristiti ovaj čarobni laptop, odvijaju se izračuni (i na GPU i CPU). GPU se koristi za izračun značajke neuronske mreže i vrijednosti troškovne funkcije. Theano daje funkciju koja može izračunati gradijent ciljane funkcije eval_grad. Na ulaznoj slici x., Onda se sve to poslužuje u lbfgs i pokrenut je iterativni proces.


# Inicijalizirati s bukom generirana_image.set_value (Floatx (np.random.uniform (-128, 128, (1, 3, image_w, image_w))) x0 \u003d generirana_image.get_value (). Astype ("Float64") xs \u003d xs.eppend (x0) # optimiziraj, spremanje rezultata povremeno za I u dometu (8): Ispis (i) Scipy.optimize.FMin_l_bfgs_b (eval_loss, x0.flatten (), fprime \u003d eval_grad, maxfun \u003d 40) x0 \u003d Generirani_image.get_Value (). Astype ("Float64") xs.apend (x0)

Ako započnemo optimizaciju takve funkcije, onda brzo dobijemo sliku sličnu metu. Sada možemo ponovno stvoriti slike slične nekoj sadržajnoj slici.


Gubitak sadržaja: Conver4_2



Optimizacija procesa




Jednostavno primijetite dvije značajke primljene slike:

  • boje su izgubljene - to je rezultat činjenice da je u određenom primjeru koristio samo sloj Conver4_2 (ili, drugim riječima, težina W je korištena s njom, a za preostale slojeve nula); Kao što se sjećate, to su rani slojevi koji sadrže informacije o bojama i gradijentnim prijelazima, a kasnije sadrže informacije o većim predmetima koje promatramo - boje su izgubljene, a nema sadržaja;
  • neke kuće "otišle", tj. Ravne crte lagano iskrivljene - to je zato što je dublji sloj, manje informacije o prostornoj poziciji značajke (rezultat korištenja paketa i litica).

Dodavanje ranih slojeva odmah ispravlja situaciju s cvijećem.


Gubitak sadržaja: Conver1_1, Conver2_1, Conver4_2


Nadam se da ćete ove točke osjetiti da možete upravljati što će biti izopačeno na slici od bijele buke.

Gubitak stila.

I tako smo dobili najzanimljivije: što je s nama da prođe stil? Što je stil? Očito, stil nije da smo optimizirani u gubitku sadržaja "E, jer postoji mnogo informacija o prostornim pozicijama značajki. Dakle, prva stvar koju treba učiniti je na bilo koji način ukloniti te informacije iz prikazanih reprezentacija. svaki sloj.


Autor nudi sljedeći način. Mi uzimamo tenzor na izlazu iz nekog sloja, proširit ćemo se na prostorne koordinate i razmotriti matricu kovarijance između umire. Označava ovu pretvorbu kao G., Što smo zapravo učinili? Može se reći da smo brojali koliko često se znakovi unutar kockica nalaze u parovima, ili, drugim riječima, aproksimirali smo raspodjelu znakova u umire s višedimenzionalnom normalnom raspodjelom.




Tada se gubitak u stilu unosi na sljedeći način, gdje s. - Ovo je neka slika sa stilom:



Pokušajmo za Vincenta? U načelu dobivamo, nešto što se očekuje je buka u stilu Van Gogha, informacije o prostornoj lokaciji značajki potpuno je izgubljeno.


Vincent




A što ako stavite fotografiju umjesto stila? Ispada već poznate značajke, poznate boje, ali prostorni položaj je potpuno izgubljen.


Fotografija s gubitkom stila


Sigurno ste se pitali, zašto izračunamo matricu kovarijance, a ne nešto drugo? Uostalom, postoji mnogo načina za ukupne znakove kako bi se izgubile prostorne koordinate. Ovo je stvarno otvoreno pitanje, a ako uzmete nešto vrlo jednostavno, rezultat se neće dramatično promijeniti. Provjerimo to, izračunat ćemo matricu kovarijance, ali jednostavno prosječnu vrijednost svake kockice.




jednostavan gubitak stila

Kombinirani gubitak

Naravno, želja se pojavljuje kako bi se uklonila ova dva funkcija troškova. Tada ćemo generirati iz bijelog šuma da će biti znakovi iz sadržaja-slike (koji imaju obvezujući za prostorne koordinate), a "stil" znakovi koji nisu vezani za prostorne koordinate bit će prisutni, tj. Nadamo se da će pojedinosti sadržaja sadržaja ostati netaknuti od njihovih mjesta, ali će se ponovno iscrpiti željenim stilom.



Zapravo, postoji i regulacija, ali ćemo ga definirati za jednostavnost. Ostaje odgovoriti na sljedeće pitanje: Kakve slojeve (težina) koristite prilikom optimizacije? I bojim se da nemam odgovor na ovo pitanje i autori članka. Oni imaju prijedlog za korištenje sljedeće, ali to uopće ne znači da će druga kombinacija pogoršati, previše prostora za pretraživanje. Jedino pravilo koje slijedi iz razumijevanja modela: nema smisla uzeti susjedne slojeve, jer Oni neće razlikovati znakove jedni od drugih, jer se stil dodaje preko sloja iz svake skupine ConN * _1.


# Definirati gubitke na gubitke \u003d # Sadržaj Gubitak gubitaka.Pappend (0,001 * Content_loss (Photo_Features, Gen_Features, "Conver4_2")) # Stil gubitak gubitaka. (Art_features, Gen_Features, "Convu2_1")) Gubici. 0.2e6 * Style_loss (Art_Features, Gen_Features, "Conver5_1")) # ukupno varijacija kaznenih gubitaka.Pappend (0.1e-7 * Totaliation_loss (Generirani_image)) Total_loss \u003d suma (gubici)

Konačni model može biti predstavljen u sljedećem obliku.




Ali rezultat kuća s van goghom.



Pokušaj kontrole procesa

Sjetimo se prethodnih dijelova, već dvije godine prije trenutnog članka, drugi znanstvenici su istražili ono što stvarno uči neuronsku mrežu. Naoružani sa svim tim člancima, možete izliječiti vizualizaciju značajki različitih stilova, raznih slika, raznih dozvola i veličina i pokušati razumjeti koje slojeve s težinom. Ali čak i popločavanje slojeva ne kontrolira ono što se događa. Problem je ovdje više konceptualni: mi ne optimiziramo tu funkciju! Kako pitate? Odgovor je jednostavan: ova značajka smanjuje ostatak ... Pa, razumiješ. Ali ono što stvarno želimo je da mi se sviđa slika. Konveksna kombinacija sadržaja i značajki gubitka stila nije mjera činjenice da naš um smatra lijepom. Zabilježeno je da ako predugo nastavite s stilizacijom, funkcija troškova prirodno pada ispod i ispod, ali estetska ljepota rezultata oštro pada.




Pa, u redu, postoji još jedan problem. Pretpostavimo da smo pronašli sloj koji uklanja znakove koje trebate. Pretpostavimo neke trokutne teksture. Ali ovaj sloj još uvijek sadrži mnoge druge znakove, kao što su krugovi koji ne želimo vidjeti na rezultirajućoj slici. Općenito govoreći, ako biste mogli zaposliti milijun kineskog, mogli biste vizualizirati sve značajke stila stila, a cjelovit prosperitet jednostavno zabilježite one koje trebamo, i uključite ih samo u troškovnu funkciju. Ali iz očitih razloga, to nije tako jednostavno. Ali što ako samo izbrišemo sve krugove koje ne želimo vidjeti rezultat, iz stila stila? Tada jednostavno ne rade aktiviraju odgovarajuće neurone koji reagiraju na krugove. I, naravno, tada se u dobivenoj slici neće pojaviti. Isto s cvijećem. Zamislite svijetlu sliku s mnogo boja. Distribucija boja će biti vrlo manjkav u cijelom prostoru, isto će biti raspodjela rezultirajuće slike, ali u procesu optimizacije, oni vrhovi koji su bili na izvorniku vjerojatno su izgubljeni. Pokazalo se da jednostavno smanjenje boje palete rješava ovaj problem. Distribucija gustoća većine boja će biti nula, a bit će velikih vrhova u nekoliko dijelova. Dakle, manipulirajući originalom u Photoshopu, manipuliramo znakovima koji se preuzimaju s slike. Osoba je lakše izraziti svoje želje vizualno nego pokušati formulirati ih na jeziku matematike. Do. Kao rezultat toga, dizajneri i menadžeri, naoružani s Photoshopom i skripte za vizualizaciju znakova, postignutih vremena tri puta je rezultat bolji od onoga što je matematika s programerima napravio.


Primjer manipulacije boje i veličine značajki


I možete uzeti jednostavnu sliku kao stil



rezultati








I ovdje je widget, ali samo s željenom teksturom

Tekstura Mreže: Sinteza tekstura i stiliziranih slika (10. ožujka 2016.)

Čini se da bi se to moglo zaustaviti, ako ne i jednu nijansu. Algoritam oksimalizacije gore opisano radi jako dugo. Ako uzmete realizaciju u kojoj LBFGS počinje na CPU-u, proces traje pet minuta. Ako prepišete tako da i optimizacija ide na GPU, proces će trajati 10-15 sekundi. Nije dobro nigdje. Možda su autori ovog i sljedećeg članka razmišljali o istoj. Obje publikacije izašle su samostalno s razlikom od 17 dana, nakon gotovo godinu dana nakon prethodnog članka. Autori sadašnjeg članka, kao i autori prethodnog, sudjelovali su u stvaranju tekstura (ako jednostavno resetirate gubitak stila otprilike će uspjeti). Ponudili su optimiziranje slike dobivene od bijele buke, već neke neuronske mreže koja generira stiliziranu sliku.




Sada, ako proces stilizacije ne uključuje optimizaciju, potreban je samo izravan odlomak. I optimizacija je potrebna samo jednom za vježbanje generatora mreže. Ovaj članak koristi hijerarhijski generator, gdje svaki sljedeći z Veličina je veća od prethodne i promatranje od buke u slučaju proizvodnje teksture, a od određene baze slike za stilista. To je kritično koristiti nešto drugačije od treninga dijelamajne, jer Značajke unutar mreže za gubitak izračunavaju se mrežom obučenom samo na dijelu obuke.



Perceptivni gubici za prijenos stila u stvarnom vremenu i super-rezoluciji (27. ožujka 2016.)

Kao što se može vidjeti iz imena, autori koji su kasnili samo 17 dana s idejom generirajuće mreže su sudjelovali u povećanju razlučivosti slike. Oni su očito bili inspirirani uspjehom preostalog učenja na posljednjem događaju.




Prema tome, zaostali blok i blok.



Dakle, sada imamo u vašim rukama uz kontrolu stilizacije postoji i brz generator (zahvaljujući ova dva članka, vrijeme generiranja jedne slike mjeri se desecima MS).

Kraj

Informacije iz razmatranih članaka i kodeksa autora koristili smo kao polaznu točku za stvaranje druge aplikacije za oblikovanje prve aplikacije za video stil:



Generirati nešto takvo.


Budući da je u kolovozu 2015. njemački istraživači sa Sveučilišta u Tubingenu podnijeli svoj izbor stila poznatih umjetnika na druge fotografije, usluge počeli se pojaviti da je ta prilika monetizirana. Na zapadnom tržištu bio je lansiran, a na ruskom - njegovu punu kopiju.

U oznake

Unatoč činjenici da je ostagram lansiran u prosincu, počeo je brzo dobiti popularnost u društvenim mrežama sredinom travnja. U isto vrijeme, bilo je manje od tisuću ljudi u projektu u Vkontakte 19. travnja.

Da biste koristili uslugu, morate pripremiti dvije slike: fotografiju koju treba obraditi i slika s primjerom stila za prekrivanje na izvornoj slici.

Usluga ima besplatnu verziju: stvara sliku u minimalnom rezoluciji do 600 piksela duž najdulje strane slike. Korisnik dobiva rezultat samo jedne od iteracija filtra koji se primjenjuje na fotografiju.

Plaćene verzije Dva: Premija daje sliku do 700 piksela duž najdužeg dijela i primjenjuje se na sliku od 600 iteracija obrade neuronske mreže (više iteracija, zanimljivije i intenzivnije prerade). Jedan takav snimak će biti 50 rubalja.

U HD verziji možete postaviti broj iteracija: 100 će koštati 50 rubalja i 1000 - 250 rubalja. U tom slučaju, slika će imati rezoluciju do 1200 piksela duž najdužeg dijela, a može se koristiti za ispis na platnu: Ostagram nudi takvu uslugu s isporukom od 1800 rubalja.

U veljači, predstavnici ostagrama koji neće prihvatiti zahtjeve za obradu slika od korisnika iz "iz zemalja s razvijenim kapitalizmom", ali onda pristup obradi fotografija za korisnike "Vkontakte" iz cijelog svijeta. Sudeći po Ostagram kod objavljenom na Githubu, Sergej Morugin, 30-godišnji stanovnik Nizhny Novgorod bio je angažiran u razvoju.

TJ je kontaktirao komercijalni direktor projekta koji je uveden Andrejskim. Prema njegovim riječima, ostagram se pojavio prije instalam, ali ga je inspiriran sličnim projektom pod nazivom Vipar.

Razvoj ostagrama bio je angažiran u skupini studenata iz NSTU-a. Alekseeva: Nakon početnog testiranja na uskoj skupini prijatelja na kraju 2015. godine, projekt je odlučio da objavi. U početku je obrada slike bila potpuno besplatna, a planirano je da zaradite novac na prodaju tiskanih slika. Prema Andrei, pečat se ispostavilo da je najveći problem: foto ljudi tretirani s neuralnim vozilima rijetko izgledaju lijepo za ljudske oči, a krajnji klijent treba prilagoditi rezultat dugo vremena prije nego što se prijave na platno, što zahtijeva veliki resursi strojeva ,

Za obradu slika, kreatori ostagrama željeli su koristiti Amazon Cloud poslužitelja, ali nakon priliva korisnika postalo je jasno da bi troškovi od njih premašili tisuće dolara dnevno s minimalnim povratom ulaganja. Andrei, istodobno je investitor projekta, iznajmljuje vlast poslužitelja u Nizhnyju Novgorodu.

Publika projekta je oko tisuću ljudi dnevno, međutim, u nekoliko dana je dosegla 40 tisuća ljudi na račun prijelaza iz stranih medija koji su već uspjeli primijetiti projekt prije domaće (Ostagram čak uspio rasti s europskim DJ-ima) , Noću, kada je promet nizak, obrada slike može se održati za 5 minuta i dan za zauzimanje do sat vremena.

Ako su raniji strani korisnici svjesno ograničeni pristup obradi slike (za pokretanje monetizacije za početak s Rusijom), sada je ostagram već računajući na zapadnu publiku.

Do danas, izgledi za povrat su uvjetni. Ako je svaki korisnik platio za obradu 10 rubalja, onda bi to moglo biti ključanje. [...]

Vrlo smo teško monetizirati u našoj zemlji: spremni smo čekati tjedan dana, ali nećete platiti novčić za to. Europljani za to su povoljniji - u smislu plaćanja za podizanje, poboljšanje kvalitete - dakle orijentacije ide na tržište.

Andrei, predstavnik ostagrama

Prema Andrei, Ostagram tim radi na novoj verziji stranice s velikim pristrasnim u društvenom smislu: "To će biti slično jednoj dobro poznatoj usluzi, ali što učiniti." Projekt je već bio zainteresiran za predstavnike Facebooka u Rusiji, ali prije nego što pregovori o prodaji nisu došli do usluge.

Primjeri usluge

U vrpci na web stranici Ostagrama, također je moguće vidjeti kombinaciju s kojim je slika ispalo kroz konačne slike: često je još zanimljivije od rezultata. U isto vrijeme, filtri su slike koje se koriste kao učinak za obradu - može se spremiti za daljnju uporabu.