Demistifikuojantys „DiscoGAN“ | PG link

„DiscoGANs“ tinklas, kuriantis atitikimo krepšius iš batų atvaizdų ir „Vice Versa“

Įvadas

„Discovery GAN“ („DiscoGAN“) yra kartotinis konkurencijos tinklas, kuriantis B srities domenų atvaizdus, ​​kuriems suteiktas A srities vaizdas. Jis perkelia stilistinius elementus iš vieno atvaizdo į kitą, tokiu būdu perkeldamas tekstūrą ir dekoravimą iš mados daikto, pavyzdžiui, rankinės, į kitas mados daiktas, pavyzdžiui, batų pora. Šis GAN turi daugybę pritaikymų žaidimų ir mados pramonėje, todėl jį verta išsamiau ištirti susidomėjusiam skaitytojui.

Standartinis GAN (Goodfellow ir kt., 2014)GAN su rekonstrukcijos nuostoliaisSiūlomas modelis („DiscoGAN“) skirtas atrasti ryšius tarp dviejų nesusijusių, nepaženklintų duomenų rinkinių

Aukšto lygio „DiscoGAN“ architektūros schema

Aukšto lygio „DiscoGAN“ architektūros schema

„DiscoGAN“ turės du generatorius: vieną, skirtą žemėlapiams nuo rankinių (žymimų A ženklu) iki batų (žymimų B ženklu) žymėti, kitą - atvirkščiai.

  • Pirmasis generatorius nusako įvesties vaizdą iš A domeno į B domeną,
  • Antrasis generatorius rekonstruoja vaizdą iš B domeno į A domeną.
  • Vaizdai, sugeneruoti B domene, stiliaus ir modelio forma primena A srities domenus. Šis ryšys gali būti išmoktas aiškiai nesusiejant vaizdų iš dviejų sričių mokymo metu.
  • „DiscoGANs“ bando išmokti dvi generatorių funkcijas G (ab) ir G (ba). Kai vaizdas xA perduodamas per generatorių G (ab), jis sugeneruos xAB vaizdą, kuris B srityje atrodo realus.
  • Kai šis paveikslėlis xAB perduodamas per kitą generatorių tinklą G (ba), jis turėtų sukurti vaizdą xABA, kuris idealiu atveju turėtų būti toks pat kaip originalus vaizdas xA
  • Šis ryšys gali būti išmoktas aiškiai nesusiejant vaizdų iš dviejų sričių mokymo metu. Tai gana galinga galimybė, turint omenyje, kad elementų poravimas reikalauja daug laiko.

Matematiškai tai galima apibūdinti taip

Generatoriaus funkcijos atžvilgiu šis santykis turėtų būti teisingas

Generatoriaus funkcijos G (ab) ir G (ba) negali praktiškai viena kitos pakeisti, taigi turime kuo labiau sumažinti nuostolius tarp rekonstruoto vaizdo ir pradinio vaizdo. Šiuo tikslu galime naudoti L1 arba L2 normalizavimą.

  • L1 normalizavimas yra kiekvieno duomenų taško absoliučios paklaidos suma.
  • L2 sureguliavimas yra kiekvieno duomenų taško prarastų kvadratų suma.
  • Atskiro vaizdo L2 normalizavimo praradimo funkciją galime parodyti taip.
  • Sumažinti L2 norminamą nuostolį nepakaks. Turime užtikrinti, kad sukurtas vaizdas xB atrodytų tikroviškas domene B. Kaip ir jei mes atvaizduojame maišelius A domene prie batų B domene, mes turime užtikrinti, kad xB vaizdas atrodytų kaip batas.
  • Domeno B diskriminacija Db aptiks xB kaip netikrą, jei vaizdas nėra pakankamai tikroviškas kaip batas, todėl reikia atsižvelgti į šį nuostolį.
  • Treniruotėse tiek sukurti vaizdai (xAB = G (ab) (xA)), tiek originalūs (yB) vaizdai B domene bus naudojami kaip įvestis į diskriminacinį įrenginį, kad jis išmoktų klasifikuoti tikrus vaizdus nuo padirbtų
  • Generatoriaus praradimas atvaizdo xA domene A atvaizdavimui atvaizde B domene gali būti parašytas taip, kaip parodyta žemiau.
  • Rekonstrukcijos nuostoliai pagal L2 normą gali būti parašyti taip, kaip parodyta žemiau.

Generatorius bando paversti xAB vaizdą tikrovišku diskriminatoriui.

Diskriminatorius bando pažymėti transformuotą vaizdą kaip suklastotą vaizdą, todėl generatorius G (ab) turėtų sugeneruoti vaizdą xAB tokiu būdu, kad jis būtų kuo mažesnis, jei būtų suklastotas vaizdas.

Jei B srities srityje diskriminatorius D (b) pažymi 1 tikruosius vaizdus ir 0 padirbtų vaizdų. Atvaizdo tikimybę parodo D (b) (.).

Tada generatorius stengiasi, kad atvaizdas xAB būtų labai tikimas, kad jis diskriminatorių tinkle bus pažymėtas kaip tikras. Tai reiškia, kad generatorius stengiasi, kad D (b) (xB) = D (b) (G (ab) (xA)) būtų kuo artimesnis 1 kaip įmanoma.

Žurnalų praradimo atžvilgiu generatorius turėtų sumažinti neigiamą tikimybės žurnalą, kuris suteikia mums C (D (ab)), kaip parašyta žemiau.

Derindami aukščiau pateiktą funkciją, galime gauti bendrą generatoriaus kainą C_GAB, atvaizduojant atvaizdą iš A domeno į B domeną.

Generatoriaus G (ba) žemėlapių vaizdai iš B domeno į A domeną. Vaizdas xB domene, kurį Generatorius G (ba) pavertė vaizdu xBA, o Domeno diskriminatorių suteikia D (a), tada susieta išlaidų funkcija su tokia transformacija duodama taip.

Generatoriaus nuostoliai dėl visų vaizdų abiejuose domenuose bus pateikiami taip.

Diskriminatoriaus išlaidų funkcija

Abiejų sričių diskriminatoriai bando atskirti tikrus vaizdus nuo suklastotų vaizdų, todėl diskriminatorius G (b) stengiasi sumažinti išlaidas C_D (b), kaip parodyta žemiau.

Lygiai taip pat diskriminavimo priemonė D (a) stengiasi sumažinti išlaidas C_DA, kaip parodyta žemiau.

Bendros diskriminavimo sąnaudos nurodytos C (d) taip.

„CycleGAN“ ir „DiscoGAN“ panašumas

  • „CycleGAN“ ir „DiscoGAN“ yra beveik panašūs. Yra vienas „CycleGAN“ pakeitimas, jame yra papildomas hiperparametras, skirtas koreguoti rekonstrukcijos / ciklo nuoseklumo praradimo indėlį į bendrą nuostolių funkciją. Šis lankstumas lemia, kokį svorį reikia priskirti rekonstrukcijos nuostoliams, atsižvelgiant į GAN nuostolius arba diskriminatoriui priskirtus nuostolius.
  • Šis hiperparametras subalansuoja nuostolius, kad treniruotės metu tinklas galėtų greičiau suartėti.
  • Likęs „CycleGAN“ įdiegimas yra tas pats, kaip ir „DiscoGAN“.

Prie šio įrašo pridėtą „Jupyter“ užrašų knygelę galite rasti „Github“.

Išvada

Vienas iš nuostabių „DiscoGAN“ pritaikymų yra dekoravimo perkėlimas iš mados prekės, tokios kaip krepšys, į kitą mados prekę, pavyzdžiui, batų porą.

Tikiuosi, kad šis straipsnis padėjo jums pradėti kurti savo „DiscoGAN“. Manau, kad tai bent jau pateiks gerą paaiškinimą ir supratimą apie „DiscoGAN“.