Picha mtandao wa neva. Kuunda picha kwa kutumia mitandao ya neva: hakuna fumbo, kuapa tu

nyumbani / Zamani

Katika picha za kawaida, vyombo vingi na visivyoweza kutofautishwa kabisa vinaonekana. Mara nyingi kwa sababu fulani mbwa. Picha kama hizo zilianza kujaza mtandao mnamo Juni 2015, wakati DeepDream kutoka Google ilizinduliwa - moja ya kwanza. huduma wazi kulingana na mitandao ya neva na iliyoundwa kwa ajili ya usindikaji wa picha.

Inatokea takriban kama hii: algorithm inachambua picha, hupata vipande ndani yao ambavyo vinakumbusha vitu vingine vinavyojulikana - na kupotosha picha kwa mujibu wa data hizi.

Kwanza, mradi huo uliwekwa kama chanzo wazi, na kisha huduma za mtandaoni zilizoundwa kwa kanuni sawa zilionekana kwenye mtandao. Mojawapo ya rahisi zaidi na maarufu ni Jenereta ya Ndoto ya kina: inachukua sekunde 15 tu kusindika picha ndogo hapa (hapo awali, watumiaji walilazimika kungojea zaidi ya saa moja).

Mitandao ya neva hujifunzaje kuunda picha kama hizi? Na kwa nini, kwa njia, wanaitwa hivyo?

Mitandao ya neva katika muundo wao huiga mitandao halisi ya neva ya kiumbe hai, lakini hufanya hivyo kwa usaidizi wa kanuni za hisabati. Baada ya kuunda muundo wa kimsingi, unaweza kuifundisha kwa kutumia njia za kujifunza za mashine. Ikiwa tunazungumza juu ya utambuzi wa muundo, basi maelfu ya picha zinahitaji kupitishwa kupitia mtandao wa neva. Ikiwa kazi ya mtandao wa neural ni tofauti, basi mazoezi ya mafunzo yatakuwa tofauti.

Algorithms ya kucheza chess, kwa mfano, kuchambua michezo ya chess. Kwa njia hiyo hiyo, algoriti ya Google ya DeepMind ya AlphaGo katika mchezo wa Kichina wa Go - ambao ulisifiwa kama mafanikio kwa sababu Go ni ngumu zaidi na isiyo ya mstari kuliko chess.

    Unaweza kucheza karibu na modeli iliyorahisishwa ya mtandao wa neva na kuelewa vyema kanuni zake.

    YouTube pia ina mfululizo wa michoro inayoeleweka kwa mkono rollers kuhusu jinsi mitandao ya neural inavyofanya kazi.

Huduma nyingine maarufu ni Dreamscope, ambayo haiwezi tu ndoto kuhusu mbwa, lakini pia kuiga mitindo mbalimbali ya uchoraji. Usindikaji wa picha hapa pia ni rahisi sana na haraka (kama sekunde 30).

Inaonekana, sehemu ya algorithmic ya huduma ni marekebisho ya mpango wa mtindo wa Neural, ambao tumejadiliwa tayari.

Hivi majuzi, programu imeonekana ambayo huchora picha nyeusi na nyeupe. Katika matoleo ya awali, programu zinazofanana zilifanya kazi kidogo sana, na ilionekana kuwa mafanikio makubwa ikiwa angalau 20% ya watu hawakuweza kutofautisha kati ya picha halisi na ya rangi ya kompyuta.

Zaidi ya hayo, rangi hapa inachukua dakika 1 tu.

Kampuni hiyo hiyo ya maendeleo pia ilizindua huduma ambayo inatambua kwenye picha aina tofauti vitu.

Huduma hizi zinaweza kuonekana kama burudani ya kufurahisha tu, lakini kwa kweli, kila kitu kinavutia zaidi. Teknolojia mpya huingia katika mazoezi ya wasanii wa kibinadamu na kubadilisha uelewa wetu wa sanaa. Labda hivi karibuni watu watalazimika kushindana na mashine kwenye uwanja wa ubunifu.

Kufundisha algoriti za utambuzi wa muundo ni kazi ambayo wasanidi wa AI wamekuwa wakipambana nayo kwa muda mrefu. Kwa hiyo, programu zinazopaka rangi picha za zamani na kuteka mbwa angani zinaweza kuchukuliwa kuwa sehemu ya mchakato mkubwa na wa kuvutia zaidi.

Salamu, Habr! Hakika umegundua kuwa mada ya picha za kupiga maridadi kwa anuwai mitindo ya kisanii imejadiliwa kikamilifu katika mitandao yako hii. Ukisoma nakala hizi zote maarufu, unaweza kufikiria kuwa kuna uchawi unaendelea chini ya kifuniko cha programu hizi, na mtandao wa neva unafikiria sana na kuchora upya picha kutoka mwanzo. Ilifanyika tu kwamba timu yetu ilikabiliwa na kazi sawa: kama sehemu ya hackathon ya ndani ya kampuni, tulifanya mtindo wa video, kwa sababu. tayari kulikuwa na programu ya picha. Katika chapisho hili, tutaangalia jinsi mtandao "huchora upya" picha, na kuangalia makala ambayo yamewezesha. Ninapendekeza ujitambulishe na chapisho la mwisho kabla ya kusoma nyenzo hii na kwa ujumla na misingi ya mitandao ya neural ya convolutional. Utapata fomula kadhaa, msimbo fulani (nitatoa mifano kwenye Theano na Lasagne), pamoja na picha nyingi. Chapisho hili limejengwa ndani mpangilio wa mpangilio kuonekana kwa vifungu na, ipasavyo, maoni yenyewe. Wakati mwingine nitaipunguza kwa uzoefu wetu wa hivi majuzi. Hapa kuna mvulana kutoka kuzimu kwa tahadhari.


Kuibua na Kuelewa Mitandao ya Mapinduzi (28 Nov 2013)

Kwanza kabisa, inafaa kutaja kifungu ambacho waandishi waliweza kuonyesha kuwa mtandao wa neural sio sanduku nyeusi, lakini ni jambo linaloweza kufasiriwa (kwa njia, leo hii inaweza kusemwa sio tu juu ya mitandao ya ubadilishaji kwa kompyuta. maono). Waandishi waliamua kujifunza jinsi ya kutafsiri uanzishaji wa neurons za safu iliyofichwa, kwa hili walitumia mtandao wa neural wa deconvolutional (deconvnet) uliopendekezwa miaka kadhaa mapema (kwa njia, na Seiler sawa na Fergus, ambao ni waandishi wa uchapishaji huu kama vizuri). Mtandao wa utatuzi kwa hakika ni mtandao sawa na mikusanyiko na mikusanyiko inayotumika kwa mpangilio wa kinyume. Kazi ya asili kwenye deconvnet ilitumia mtandao katika hali ya kujifunza isiyosimamiwa ili kutoa picha. Wakati huu, waandishi walitumia tu kwa kupitisha nyuma kutoka kwa vipengele vilivyopatikana baada ya kupita mbele kupitia mtandao hadi kwenye picha ya asili. Matokeo yake ni picha ambayo inaweza kufasiriwa kama ishara iliyosababisha kuwezesha huku kwenye niuroni. Kwa kawaida, swali linatokea: jinsi ya kufanya reverse kupita kupitia convolution na nonlinearity? Na hata zaidi kupitia mkusanyiko wa juu zaidi, hakika hii sio operesheni iliyogeuzwa. Hebu tuangalie vipengele vyote vitatu.

Badilisha ReLu

Katika mitandao ya ubadilishaji, kazi ya uanzishaji hutumiwa mara nyingi ReLu(x) = max(0, x), ambayo hufanya uanzishaji wote kwenye safu usiwe hasi. Ipasavyo, wakati wa kupita nyuma kwa njia isiyo ya mstari, ni muhimu pia kupata matokeo yasiyo hasi. Kwa hili, waandishi wanapendekeza kutumia ReLu sawa. Kwa mtazamo wa usanifu wa Theano, kitendakazi cha upinde rangi kinahitaji kutekelezwa tena (daftari la thamani kubwa liko kwenye Mapishi ya Lasagna, kutoka hapo utapata maelezo ya darasa la ModifiedBackprop ni nini).

Class ZeilerBackprop(ModifiedBackprop): def grad(self, inputs, out_grads): (inp,) = pembejeo (grd,) = out_grads #return (grd * (grd > 0).astype(inp.dtype),) # rekebisha kwa uwazi return (self.nonlinearity(grd),) # tumia nonlinearity uliyopewa

Reverse Convolution

Hapa ni ngumu zaidi, lakini kila kitu ni mantiki: inatosha kutumia toleo lililopitishwa la kernel sawa ya convolution, lakini kwa matokeo kutoka kwa ReLu ya nyuma badala ya safu ya awali iliyotumiwa katika kupitisha mbele. Lakini ninaogopa kwamba kwa maneno sio wazi sana, hebu tuangalie taswira ya utaratibu huu (utapata taswira zaidi ya convolutions).


Ubadilishaji wakati hatua=1

Ubadilishaji wakati hatua=1 toleo la nyuma

Convolution wakati stride=2

Convolution wakati stride=2 toleo la nyuma

Reverse Pooling

Operesheni hii (tofauti na iliyotangulia) kwa ujumla haiwezi kugeuzwa. Lakini bado tungependa kupita kiwango cha juu kwa njia fulani wakati wa kupita kinyume. Kwa kufanya hivyo, waandishi wanapendekeza kutumia ramani ambapo upeo ulikuwa wakati wa kupita moja kwa moja (swichi za eneo la max). Wakati wa kupitisha kinyume, ishara ya pembejeo inabadilishwa kuwa kutenganisha kwa njia ya kuhifadhi takriban muundo wa ishara ya awali, ni rahisi sana kuona kuliko kuelezea hapa.



Matokeo

Algorithm ya kuona ni rahisi sana:

  1. Fanya kupita moja kwa moja.
  2. Chagua safu ambayo tunavutiwa nayo.
  3. Rekebisha kuwezesha niuroni moja au zaidi na uweke upya iliyosalia.
  4. Fanya maoni.

Kila mraba wa kijivu kwenye picha iliyo hapa chini inalingana na taswira ya kichujio (ambacho kinatumika kwa ubadilishaji) au uzani wa neuroni moja, na kila moja. picha ya rangi ni ile sehemu ya taswira asilia inayoamilisha niuroni inayolingana. Kwa uwazi, niuroni ndani ya safu moja zimeunganishwa kuwa vikundi vya mada. Kwa ujumla, ghafla iliibuka kuwa mtandao wa neural hujifunza haswa kile Hubel na Weisel waliandika juu ya kazi yao juu ya muundo wa mfumo wa kuona, ambao walipewa. Tuzo la Nobel mwaka 1981. Shukrani kwa nakala hii, tulipata uwakilishi wa kuona wa kile ambacho mtandao wa neva wa kubadilisha hujifunza katika kila safu. Ni ujuzi huu ambao utaruhusu baadaye kuendesha yaliyomo ya picha inayozalishwa, lakini hii bado ni mbali, miaka michache ijayo imekwenda kuboresha mbinu za "trepanation" za mitandao ya neural. Kwa kuongezea, waandishi wa kifungu hicho walipendekeza njia ya kuchambua jinsi bora ya kujenga usanifu wa mtandao wa neural wa kushawishi kufikia. matokeo bora(hata hivyo, hawakushinda ImageNet 2013, lakini waliingia kileleni; UPD: inageuka walishinda, Clarifai ndivyo walivyo).


Taswira ya kipengele


Hapa kuna mfano wa taswira ya uanzishaji kwa kutumia deconvnet, leo matokeo haya yanaonekana kuwa hivyo, lakini basi ilikuwa mafanikio.


Ramani za Saliency kwa kutumia deconvnet

Mitandao ya Ndani ya Ndani ya Ubadilishaji: Kuangazia Miundo ya Uainishaji wa Picha na Ramani za Ushawishi (19 Apr 2014)

Nakala hii imejitolea kwa uchunguzi wa mbinu za taswira ya maarifa zilizomo katika mtandao wa neva wa kubadilisha. Waandishi wanapendekeza njia mbili za taswira kulingana na asili ya gradient.

Taswira ya Mfano wa Darasa

Kwa hivyo, fikiria kwamba tuna mtandao wa neva uliofunzwa kutatua tatizo la uainishaji katika idadi fulani ya madarasa. Bainisha kama thamani ya kuwezesha ya niuroni inayotoka inayolingana na darasa c. Halafu shida ifuatayo ya utoshelezaji inatupa picha haswa ambayo huongeza darasa lililochaguliwa:



Kazi hii ni rahisi kutatua kwa kutumia Theano. Kawaida tunauliza mfumo kuchukua derivative ya vigezo vya mfano, lakini wakati huu tunadhani kwamba vigezo vimewekwa na derivative inachukuliwa kutoka kwa picha ya pembejeo. Chaguo za kukokotoa zifuatazo huchagua thamani ya juu zaidi ya safu ya pato na kurudisha chaguo za kukokotoa zinazokokotoa kiingilio kwa heshima na taswira ya ingizo.


def compile_saliency_function(net): """ Hukusanya chaguo za kukokotoa ili kukokotoa ramani za kuvutia na madarasa yaliyotabiriwa kwa bechi dogo la picha za kuingiza. """ inp = net["input"].input_var outp = lasagne.layers.get_output(net ["fc8"], deterministic=True) max_outp = T.max(outp, axis=1) saliency = theano.grad(max_outp.sum(), wrt=inp) max_class = T.argmax(outp, axis=1) rudisha theano.function(, )

Pengine umeona picha za ajabu za mbwa kwenye mtandao - DeepDream. Katika nakala asili, waandishi hutumia mchakato ufuatao kutoa picha zinazokuza darasa lililochaguliwa:

  1. Anzisha picha ya awali na sufuri.
  2. Kokotoa thamani ya kiingilizi kutoka kwa picha hii.
  3. Badilisha picha kwa kuiongezea picha inayotokana na derivative.
  4. Rudi kwa hatua ya 2 au uondoke kwenye kitanzi.

Matokeo ya picha ni:




Na ikiwa utaanzisha picha ya kwanza picha halisi na kuendesha mchakato huo huo? Lakini kwa kila iteration, tutachagua darasa la random, kuweka wengine kwa sifuri na kuhesabu thamani ya derivative, kisha tunapata ndoto kama hiyo.


Tahadhari 60 mb


Kwa nini kuna nyuso nyingi za mbwa na macho? Ni rahisi: kuna karibu mbwa 200 kwenye wavu wa picha kati ya madarasa 1000, wana macho. Na pia madarasa mengi ambapo kuna watu tu.

Uchimbaji wa saliency wa darasa

Ikiwa mchakato huu umeanzishwa na picha halisi, imesimamishwa baada ya iteration ya kwanza na kuchora thamani ya derivative, basi tutapata picha hiyo, na kuongeza ambayo kwa moja ya awali, tutaongeza thamani ya uanzishaji wa darasa lililochaguliwa.


Ramani za Saliency Kwa Kutumia Misili


Tena, matokeo ni "hivyo-hivyo". Ni muhimu kutambua kwamba hii ni njia mpya ya kuibua uanzishaji (hakuna kitu cha kutuzuia kurekebisha maadili ya uanzishaji sio kwenye safu ya mwisho, lakini kwa safu yoyote ya mtandao kwa ujumla na kuchukua derivative kwa heshima na picha ya pembejeo). Makala inayofuata itachanganya mbinu zote mbili zilizopita na kutupa chombo cha jinsi ya kuanzisha uhamisho wa mtindo, ambao utaelezwa baadaye.

Kujitahidi kwa Urahisi: The All Convolutional Net (13 Apr 2015)

Nakala hii kwa ujumla sio juu ya taswira, lakini juu ya ukweli kwamba kuchukua nafasi ya ujumuishaji na uboreshaji na hatua kubwa haileti upotezaji wa ubora. Lakini kama matokeo ya utafiti wao, waandishi walipendekeza njia mpya ya kuibua vipengele, ambavyo walitumia kwa zaidi. uchambuzi sahihi kile mwanamitindo anajifunza. Wazo lao ni kama ifuatavyo: ikiwa tutachukua derivative tu, basi wakati wa kupotosha, huduma hizo ambazo zilikuwa kwenye picha ya pembejeo hazirudi nyuma. chini ya sifuri(kutumia ReLu kwa picha ya ingizo). Na hii inaongoza kwa ukweli kwamba maadili hasi yanaonekana kwenye picha ya nyuma iliyoenezwa. Kwa upande mwingine, ikiwa unatumia deconvnet, basi ReLu nyingine inachukuliwa kutoka kwa derivative ya ReLu - hii inakuwezesha si kuruka maadili hasi nyuma, lakini kama ulivyoona, matokeo ni "hivyo-hivyo". Lakini vipi ikiwa tutachanganya njia hizi mbili?




class GuidedBackprop(ModifiedBackprop): def grad(self, inputs, out_grads): (inp,) = pembejeo (grd,) = out_grads dtype = inp.dtype return (grd * (inp > 0).astype(dtype) * (grd > 0).astype(dtype),)

Kisha unapata picha safi kabisa na inayoweza kutafsiriwa.


Ramani za Saliency kwa kutumia Uenezaji wa Nyuma kwa Kuongozwa

Nenda ndani zaidi

Sasa hebu tufikirie, hii inatupa nini? Acha nikukumbushe kwamba kila safu ya ubadilishaji ni chaguo la kukokotoa ambalo hupokea tensor ya pande tatu kama pembejeo na pia hutoa tensor ya pande tatu kama pato, labda ya mwelekeo tofauti. d x w x h; d epth ni idadi ya niuroni katika safu, kila moja yao hutoa ramani ya kipengele yenye ukubwa w ig x h nane.


Wacha tujaribu jaribio lifuatalo kwenye mtandao wa VGG-19:



ubadilishaji1_2

Ndiyo, unaona karibu chochote, kwa sababu. eneo la kupokea ni ndogo sana, hii ni convolution ya pili 3x3, kwa mtiririko huo, eneo la jumla ni 5x5. Lakini tukikuza ndani, tunaona kwamba kipengele ni kigunduzi cha upinde rangi.




ubadilishaji3_3


ubadilishaji4_3


ubadilishaji5_3


bwawa5


Na sasa fikiria kwamba badala ya upeo juu ya sahani, tutachukua derivative ya thamani ya jumla ya vipengele vyote vya sahani juu ya picha ya pembejeo. Basi ni wazi eneo la kupokea la kikundi cha niuroni litafunika picha nzima ya ingizo. Kwa tabaka za mapema, tutaona ramani zenye mkali, ambazo tunaamua kuwa hizi ni detectors za rangi, kisha gradients, kisha mipaka, na kadhalika kuelekea mifumo ngumu zaidi. Safu ya kina zaidi, picha ya dimmer inapatikana. Hii inafafanuliwa na ukweli kwamba tabaka za kina zaidi zina muundo changamano zaidi ambao hugundua, na muundo changamano huonekana mara chache kuliko rahisi, na kwa hivyo ramani ya uanzishaji inafifia. Njia ya kwanza inafaa kwa kuelewa tabaka na mifumo ngumu, na ya pili ni sawa kwa rahisi.


ubadilishaji1_1


ubadilishaji2_2


ubadilishaji4_3


Unaweza kupakua hifadhidata kamili zaidi ya uanzishaji kwa picha kadhaa na .

Algorithm ya Neural ya Mtindo wa Kisanaa (2 Sep 2015)

Kwa hivyo, miaka michache imepita tangu utepetevu wa kwanza wa mafanikio wa mtandao wa neva. Sisi (kwa maana ya ubinadamu) tuna mikononi mwetu chombo chenye nguvu, ambayo hukuruhusu kuelewa kile ambacho mtandao wa neva hujifunza, na pia kuondoa kile ambacho hatungependa kujifunza. Waandishi wa makala hii wanatengeneza njia ambayo inakuwezesha kufanya picha moja kuzalisha ramani sawa uanzishaji kwenye picha fulani inayolengwa, na labda zaidi ya moja - hii ndio msingi wa kupiga maridadi. Tunalisha sauti nyeupe kwa ingizo, na katika mchakato wa kujirudia sawa na katika ndoto ya kina, tunaleta picha hii kwa ile ambayo ramani za vipengele zinafanana na picha inayolengwa.

upotezaji wa yaliyomo

Kama ilivyotajwa tayari, kila safu ya mtandao wa neva hutoa tensor ya pande tatu ya mwelekeo fulani.




Hebu kuashiria pato i safu kutoka kwa ingizo kama . Halafu ikiwa tutapunguza jumla ya uzani wa mabaki kati ya picha ya kuingiza na picha fulani tunayotamani c, basi unapata kile unachohitaji. Labda.



Kwa majaribio na makala hii, unaweza kutumia kompyuta hii ya kichawi, ambapo mahesabu hufanyika (wote kwenye GPU na kwenye CPU). GPU hutumika kukokotoa vipengele vya mtandao wa neva na thamani ya kitendakazi cha gharama. Theano hutoa chaguo za kukokotoa inayoweza kukokotoa upinde rangi ya chaguo za kukokotoa lengwa eval_grad kwa picha ya kuingiza x. Hii basi inalishwa ndani ya lbfgs na mchakato wa kurudia huanza.


# Anzisha kwa kelele picha generated_image.set_value(floatX(np.random.uniform(-128, 128, (1, 3, IMAGE_W, IMAGE_W)))) x0 = generated_image.get_value().astype("float64") xs = xs.ongeza(x0) # Boresha, uhifadhi matokeo mara kwa mara kwa i katika safu(8): print(i) scipy.optimize.fmin_l_bfgs_b(eval_loss, x0.flatten(), fprime=eval_grad, maxfun=40) x0 = generated_image.get_value().astype("float64") xs.append(x0)

Ikiwa tutaendesha uboreshaji wa kazi kama hiyo, basi tutapata haraka picha inayofanana na ile inayolengwa. Sasa tunaweza kuunda upya picha kutoka kwa kelele nyeupe zinazofanana na picha fulani ya maudhui.


Upotevu wa Maudhui: conv4_2



Mchakato wa uboreshaji




Ni rahisi kutambua vipengele viwili vya picha inayosababisha:

  • rangi zilizopotea - hii ni matokeo ya ukweli kwamba in mfano maalum safu ya conv4_2 pekee ndiyo iliyotumiwa (au, kwa maneno mengine, uzani w haukuwa nonzero kwake, na sifuri kwa tabaka zingine); kama unavyokumbuka, ni tabaka za mapema ambazo zina habari juu ya rangi na mabadiliko ya gradient, na zile za baadaye zina habari juu ya maelezo makubwa, ambayo ndio tunaona - rangi zimepotea, lakini yaliyomo sio;
  • baadhi ya nyumba "twende", i.e. mistari iliyonyooka imejipinda kidogo - hii ni kwa sababu safu ya kina zaidi, habari kidogo kuhusu nafasi ya anga ya kipengele kilichomo (matokeo ya kutumia convolutions na poolings).

Kuongeza tabaka za mapema mara moja hurekebisha hali na rangi.


Upotevu wa Maudhui: conv1_1, conv2_1, conv4_2


Tunatumahi kufikia sasa una hisia kuwa una udhibiti wa kile kinachochorwa upya kwenye picha ya kelele nyeupe.

kupoteza mtindo

Na sasa tulifikia ya kuvutia zaidi: tunawezaje kufikisha mtindo? Mtindo ni nini? Ni wazi, mtindo sio ule tulioboresha katika Upotezaji wa Maudhui, kwa sababu una maelezo mengi kuhusu nafasi za vipengele. Kwa hivyo jambo la kwanza kufanya ni kuondoa maelezo haya kutoka kwa maoni yaliyopokelewa kwenye kila safu.


Mwandishi anapendekeza njia ifuatayo. Wacha tuchukue tensor kwenye pato la safu fulani, tuipanue katika kuratibu za anga na tuhesabu matrix ya ushirikiano kati ya sahani. Wacha tuonyeshe mabadiliko haya kama G. Je, tumefanya nini hasa? Tunaweza kusema kwamba tulihesabu mara ngapi vipengele ndani ya sahani hutokea kwa jozi, au, kwa maneno mengine, tulikadiria usambazaji wa vipengele katika sahani na usambazaji wa kawaida wa multivariate.




Kisha Upotezaji wa Sinema umeingizwa kama ifuatavyo, wapi s ni picha iliyo na mtindo:



Je, tujaribu kwa Vincent? Kimsingi, tunapata kitu kinachotarajiwa - kelele katika mtindo wa Van Gogh, habari juu ya mpangilio wa anga wa huduma hupotea kabisa.


Vincent




Je, ikiwa tutaweka picha badala ya picha ya mtindo? Unapata sifa zinazojulikana, rangi zinazojulikana, lakini nafasi ya anga imepotea kabisa.


Picha iliyo na upotezaji wa mtindo


Hakika ulijiuliza kwanini tunahesabu matrix ya udadisi, na sio kitu kingine? Baada ya yote, kuna njia nyingi za kuunganisha vipengele ili kuratibu za anga zipotee. Hili ni swali la wazi, na ikiwa unachukua kitu rahisi sana, matokeo hayatabadilika sana. Wacha tuangalie hii, hatutahesabu matrix ya udadisi, lakini tu thamani ya wastani ya kila sahani.




kupoteza mtindo rahisi

Upotevu wa pamoja

Kwa kawaida, kuna tamaa ya kuchanganya kazi hizi mbili za gharama. Kisha tutatoa picha kama hiyo kutoka kwa kelele nyeupe ambayo itahifadhi vipengee kutoka kwa picha-yaliyomo (ambayo ina uratibu wa anga), na pia kutakuwa na huduma za "mtindo" ambazo hazijafungwa kwa kuratibu za anga, i.e. tunatumai kuwa tutaweka maelezo ya picha ya maudhui sawa, lakini yakichorwa upya kwa mtindo ufaao.



Kwa kweli, pia kuna kawaida, lakini tutaiacha kwa urahisi. Inabaki kujibu swali linalofuata: ni tabaka gani (uzito) zinapaswa kutumika kwa utoshelezaji? Na ninaogopa kwamba sina jibu la swali hili, na wala waandishi wa makala hiyo. Wana pendekezo la kutumia zifuatazo, lakini hii haimaanishi kabisa kwamba mchanganyiko mwingine utafanya kazi mbaya zaidi, pia nafasi kubwa tafuta. Utawala pekee unaofuata kutoka kwa ufahamu wa mfano ni kwamba haina maana kuchukua tabaka za jirani, kwa sababu ishara zao hazitatofautiana sana kutoka kwa kila mmoja, kwa hiyo safu kutoka kwa kila kikundi cha conv*_1 huongezwa kwa mtindo.


# Bainisha hasara za utendakazi wa hasara = # hasara za upotezaji wa maudhui.ongeza(0.001 * upotezaji_wa_maudhui(vipengele_vya_picha, vipengele_vya_jina, "conv4_2")) # hasara za upotezaji wa mtindo.ongeza(0.2e6 * style_loss(sifa_za_sanaa, gen_features, "conv1_1")) hasara. (0.2e6 * style_loss(art_features, gen_features, "conv2_1")) hasara.ongeza(0.2e6 * style_loss(art_features, gen_features, "conv3_1")) hasara.ongeza(0.2e6 * style_loss(gen_features_4), ) hasara.ongeza(0.2e6 * style_loss(art_features, gen_features, "conv5_1")) # jumla ya tofauti ya hasara za adhabu.ongeza(0.1e-7 * total_variation_loss(picha_iliyozalishwa)) total_loss = jumla(hasara)

Mfano wa mwisho unaweza kuwasilishwa kwa fomu ifuatayo.




Na hapa kuna matokeo ya nyumba na Van Gogh.



Jaribio la kudhibiti mchakato

Hebu tukumbuke sehemu zilizopita, tayari miaka miwili kabla ya makala ya sasa, wanasayansi wengine wamekuwa wakichunguza kile mtandao wa neva unajifunza kweli. Ukiwa na vifungu hivi vyote, unaweza kutoa taswira za vipengele. mitindo mbalimbali, picha tofauti, maazimio tofauti na saizi, na jaribu kuelewa ni tabaka zipi uchukue uzito. Lakini hata kuweka tena uzani wa tabaka haitoi udhibiti kamili juu ya kile kinachotokea. Tatizo hapa ni dhana zaidi: tunaboresha utendakazi mbaya! Jinsi gani, unauliza? Jibu ni rahisi: kazi hii inapunguza mabaki ... vizuri, unapata wazo. Lakini tunachotaka sana ni kwamba tunapenda picha. Mchanganyiko mbonyeo wa utendakazi wa upotezaji wa yaliyomo na mtindo sio kipimo cha kile ambacho akili zetu huchukulia kuwa nzuri. Imeonekana kuwa ikiwa styling inaendelea kwa muda mrefu sana, kazi ya gharama kwa kawaida huanguka chini na chini, lakini uzuri wa uzuri wa matokeo hupungua kwa kasi.




Sawa, kuna tatizo moja zaidi. Wacha tuseme tumepata safu ambayo hutoa huduma tunazohitaji. Wacha tuseme maandishi kadhaa ni ya pembetatu. Lakini safu hii bado ina vipengele vingine vingi, kama vile miduara, ambayo kwa kweli hatutaki kuona kwenye picha inayotokana. Kwa ujumla, ikiwa tungeweza kuajiri Wachina milioni moja, tunaweza kuibua vipengele vyote vya picha ya mtindo, na kwa utafutaji wa kina weka alama tu zile tunazohitaji, na uzijumuishe tu katika utendaji wa gharama. Lakini kwa sababu za wazi, sio rahisi sana. Lakini vipi ikiwa tutaondoa tu miduara yote ambayo hatutaki kuonekana kwenye matokeo kutoka laha ya mtindo? Kisha uanzishaji wa neurons zinazofanana ambazo hujibu kwa miduara haitafanya kazi. Na, bila shaka, basi hii haitaonekana kwenye picha inayosababisha. Ni sawa na maua. Wasilisha picha angavu yenye rangi nyingi. Usambazaji wa rangi utapakwa sana katika nafasi nzima, usambazaji wa picha inayosababishwa utakuwa sawa, lakini wakati wa mchakato wa uboreshaji, vilele ambavyo vilikuwa kwenye asili labda vitapotea. Ilibadilika kuwa kupungua rahisi kwa kina kidogo palette ya rangi hutatua tatizo hili. Uzito wa usambazaji wa rangi nyingi utakuwa karibu na sifuri, na kutakuwa na kilele kikubwa katika maeneo kadhaa. Kwa hivyo, kwa kudanganya asili katika Photoshop, tunabadilisha huduma ambazo zimetolewa kutoka kwa picha. Ni rahisi kwa mtu kueleza matamanio yake kwa macho kuliko kujaribu kuunda kwa lugha ya hisabati. Kwaheri. Kama matokeo, wabunifu na wasimamizi, wakiwa na Photoshop na maandishi ya kuibua ishara, walipata matokeo haraka mara tatu kuliko vile wanahisabati na waandaaji wa programu walifanya.


Mfano wa kuendesha rangi na ukubwa wa vipengele


Na unaweza mara moja kuchukua picha rahisi kama mtindo



matokeo








Na hapa ni vidosik, lakini tu na texture sahihi

Mitandao ya Umbile: Usanifu wa Mlisho wa Miundo na Picha zenye Mitindo (10 Machi 2016)

Inaonekana kwamba hii inaweza kusimamishwa, ikiwa sio nuance moja. Algorithm hapo juu ya kupiga maridadi inafanya kazi kwa muda mrefu sana. Ikiwa tutachukua utekelezaji ambapo lbfgs inaendeshwa kwenye CPU, basi mchakato unachukua kama dakika tano. Ukiandika upya ili uboreshaji uende kwa GPU, basi mchakato utachukua sekunde 10-15. Sio nzuri. Labda waandishi wa nakala hii na inayofuata walifikiria sawa. Machapisho yote mawili yalitoka kwa kujitegemea siku 17 tofauti, karibu mwaka mmoja baada ya makala iliyotangulia. Waandishi wa nakala ya sasa, kama waandishi wa iliyotangulia, walijishughulisha na utengenezaji wa maandishi (ikiwa utaweka upya Upotezaji wa Mtindo, hii ni takriban kile unachopata). Walipendekeza kuboresha sio picha inayopatikana kutoka kwa kelele nyeupe, lakini mtandao wa neva ambao hutoa picha ya mtindo.




Sasa, ikiwa mchakato wa kupiga maridadi haujumuishi uboreshaji wowote, ni kupita tu kwa mbele kunahitajika kufanywa. Na uboreshaji unahitajika mara moja tu ili kutoa mafunzo kwa mtandao wa jenereta. Kifungu hiki kinatumia jenereta ya daraja ambapo kila ifuatayo z kubwa kuliko ile ya awali na imetolewa sampuli kutoka kwa kelele iwapo kuna uundaji wa unamu, na kutoka kwa hifadhidata fulani ya picha kwa mafunzo ya mitindo. Ni muhimu kutumia kitu kingine isipokuwa sehemu ya mafunzo ya taswira, kwa sababu vipengele ndani ya Hasara-mtandao huhesabiwa na mtandao uliofunzwa kwenye sehemu ya mafunzo.



Hasara za Kitazamo kwa Uhamisho wa Mtindo wa Wakati Halisi na Azimio Bora (27 Machi 2016)

Kama jina linamaanisha, waandishi, ambao walikuwa wamechelewa kwa siku 17 tu na wazo la mtandao unaozalisha, walikuwa na shughuli nyingi kuongeza azimio la picha. Inaonekana wametiwa moyo na mafanikio ya mabaki ya kujifunza kwenye mtandao wa hivi punde.




Ipasavyo kizuizi cha mabaki na kizuizi cha ubadilishaji.



Kwa hiyo, pamoja na udhibiti wa styling, sasa tuna jenereta ya haraka mikononi mwetu (shukrani kwa makala hizi mbili, wakati wa kizazi kwa picha moja hupimwa kwa makumi ya ms).

Kumalizia

Tulitumia maelezo kutoka kwa makala yaliyokaguliwa na msimbo wa waandishi kama sehemu ya kuanzia kuunda programu nyingine ya kuweka mitindo kwa programu ya kwanza ya kuweka mitindo ya video:



Tengeneza kitu kama hiki.


Tangu Agosti 2015, watafiti wa Ujerumani kutoka Chuo Kikuu cha Tübingen waliwasilisha yao juu ya uwezekano wa uhamisho wa mtindo. wasanii maarufu kwenye picha zingine, huduma zilianza kuonekana ambazo zilichukua fursa hii. Ilizinduliwa kwenye soko la Magharibi, na kwenye soko la Kirusi - nakala yake kamili.

Kwa vialamisho

Licha ya ukweli kwamba Ostagram ilizinduliwa mnamo Desemba, ilianza kupata umaarufu haraka katika mitandao ya kijamii katikati ya Aprili. Wakati huo huo, mnamo Aprili 19, kulikuwa na watu chini ya elfu moja kwenye mradi wa VKontakte.

Ili kutumia huduma, unahitaji kuandaa picha mbili: picha ambayo inahitaji kusindika, na picha yenye mfano wa mtindo wa kufunika kwenye picha ya awali.

Huduma ina toleo la bure: huunda picha katika azimio la chini la hadi saizi 600 kwenye upande mrefu zaidi wa picha. Mtumiaji hupokea matokeo ya moja tu ya marudio ya kutumia kichungi kwenye picha.

Kuna matoleo mawili yanayolipwa: Premium hutoa picha hadi pikseli 700 kwa upande mrefu zaidi na inatumika marudio 600 ya usindikaji wa mtandao wa neva kwenye picha (kadiri inavyorudiwa, ndivyo usindikaji unavyovutia zaidi na wa kina). Picha moja kama hiyo itagharimu rubles 50.

Katika toleo la HD, unaweza kurekebisha idadi ya marudio: 100 itagharimu rubles 50, na 1000 - 250 rubles. Katika kesi hii, picha itakuwa na azimio la hadi saizi 1200 kwa upande mrefu zaidi, na itawezekana kuitumia kwa uchapishaji kwenye turubai: Ostagram inatoa huduma hii kwa utoaji kutoka kwa rubles 1800.

Mnamo Februari, wawakilishi wa Ostagram hawatakubali maombi ya usindikaji wa picha kutoka kwa watumiaji "kutoka nchi zilizo na ubepari ulioendelea", lakini kisha upatikanaji wa usindikaji wa picha kwa watumiaji wa VKontakte kutoka duniani kote. Kwa kuzingatia nambari ya Ostagram iliyochapishwa kwenye GitHub, ilitengenezwa na Sergey Morugin, mkazi wa miaka 30 wa Nizhny Novgorod.

TJ aliwasiliana mkurugenzi wa biashara mradi, ulioanzishwa na Andrey. Kulingana na yeye, Ostagram alionekana mbele ya Instapainting, lakini aliongozwa na mradi kama huo unaoitwa Vipart.

Ostagram ilitengenezwa na kikundi cha wanafunzi kutoka NNSTU. Alekseeva: baada ya majaribio ya awali kwenye kikundi nyembamba cha marafiki mwishoni mwa 2015, waliamua kufanya mradi huo kwa umma. Hapo awali, usindikaji wa picha ulikuwa bure kabisa, na ilipangwa kupata pesa kwa kuuza picha zilizochapishwa. Kulingana na Andrey, uchapishaji uligeuka kuwa shida kubwa: picha za watu zilizochakatwa na mtandao wa neural mara chache hazionekani kupendeza. jicho la mwanadamu, na mteja wa mwisho anahitaji kurekebisha matokeo kwa muda mrefu kabla ya kuitumia kwenye turuba, ambayo inahitaji rasilimali nyingi za mashine.

Kwa usindikaji wa picha, waundaji wa Ostagram walitaka kutumia seva za wingu za Amazon, lakini baada ya kuongezeka kwa watumiaji, ikawa wazi kuwa gharama yao itazidi dola elfu moja kwa siku na kurudi kidogo kwa uwekezaji. Andrey, ambaye pia ni mwekezaji katika mradi huo, alikodi vifaa vya seva huko Nizhny Novgorod.

Watazamaji wa mradi huo ni kama watu elfu kwa siku, lakini kwa siku kadhaa ilifikia watu elfu 40 kwa sababu ya mabadiliko kutoka. vyombo vya habari vya nje, ambao tayari wameona mradi kabla ya wale wa ndani (Ostagram hata imeweza kushirikiana na DJs wa Ulaya). Usiku, wakati trafiki ni ndogo, usindikaji wa picha unaweza kuchukua dakika 5 na kuchukua hadi saa moja wakati wa mchana.

Ikiwa watumiaji wa awali wa kigeni walikuwa na ufikiaji mdogo kwa makusudi kwa usindikaji wa picha (ilifikiriwa kuanza uchumaji kutoka Urusi), sasa Ostagram tayari inategemea zaidi watazamaji wa Magharibi.

Hadi sasa, matarajio ya malipo ni ya masharti. Ikiwa kila mtumiaji alilipa rubles 10 kwa usindikaji, basi labda ingelipa. […]

Ni ngumu sana kupata mapato katika nchi yetu: watu wetu wako tayari kungoja wiki, lakini hawatalipa senti kwa hiyo. Wazungu wanapendelea zaidi hii - katika suala la kulipia kuharakisha, kuboresha ubora - kwa hivyo mwelekeo huenda kwenye soko hilo.

Andrey, mwakilishi wa Ostagram

Kulingana na Andrey, timu ya Ostagram inafanya kazi toleo jipya tovuti yenye mkazo mkubwa juu ya ujamaa: "Itaonekana kama huduma moja inayojulikana, lakini nini cha kufanya." Wawakilishi wa Facebook nchini Urusi tayari wamependezwa na mradi huo, lakini mpango huo bado haujafika kwenye mazungumzo ya uuzaji.

Mifano ya kazi za huduma

Katika malisho kwenye tovuti ya Ostagram, unaweza pia kuona ni mchanganyiko gani wa picha uliosababisha shots ya mwisho: mara nyingi hii ni ya kuvutia zaidi kuliko matokeo yenyewe. Wakati huo huo, vichungi - picha zinazotumiwa kama athari ya usindikaji - zinaweza kuhifadhiwa kwa matumizi zaidi.

© 2022 skudelnica.ru -- Upendo, usaliti, saikolojia, talaka, hisia, ugomvi