DiscoGANien demystifisointi | Kohti AI

DiscoGANs-verkko, joka tuottaa vastaavia laukkuja kenkäkuvista ja Vice Versasta

esittely

Discovery GAN (DiscoGAN) on generatiivinen kilpaileva verkko, joka tuottaa kuvia verkkotunnuksessa B olevista tuotteista, joille on annettu kuva alueesta A. Se siirtää tyylielementtejä yhdestä kuvasta toiseen siirtäen siten tekstuurin ja koristeluun muotituotteista, kuten laukusta, toinen muotituote, kuten kenkäpari. Tällä GANilla on lukuisia sovelluksia peli- ja muotiteollisuudessa, ja se on syytä tutkia tarkemmin kiinnostuneelle lukijalle.

Standard GAN (Goodfellow ym., 2014)GAN jälleenrakennustappion kanssaEhdotettu malli (DiscoGAN) on suunniteltu selvittämään kahden parittoman, leimaamattoman tietojoukon väliset suhteet

Korkean tason DiscoGAN: n arkkitehtuurikaavio

Korkean tason DiscoGAN: n arkkitehtuurikaavio

DiscoGAN: lla on kaksi generaattoria, yksi kartoittamiseen käsilaukkuista (merkitty A: lla) kengään (merkitty B: llä), toinen päinvastoin.

  • Ensimmäinen generaattori kartoittaa tulokuvan verkkotunnuksesta A verkkotunnukseen B,
  • Toinen generaattori rekonstruoi kuvan alueelta B alueelle A.
  • Verkkotunnuksessa B luodut kuvat muistuttavat verkkotunnuksen A kuvia sekä tyyliltään että kuvioltaan. Tämä suhde voidaan oppia ilman, että paria yhdistetään nimenomaisesti kahdelta alueelta koulutuksen aikana.
  • DiscoGANs yrittää oppia kaksi generaattoritoimintoa G (ab) ja G (ba). Kun kuva xA, syötetään generaattorin G (ab) kautta, se tuottaa kuvan xAB, joka näyttää realistiselta alueella B.
  • Kun tämä kuva xAB syötetään toisen generaattoriverkon G (ba) kautta, sen pitäisi tuottaa kuva xABA, jonka tulisi olla mieluiten sama kuin alkuperäinen kuva xA
  • Tämä suhde voidaan oppia ilman, että paria yhdistetään nimenomaisesti kahdelta alueelta koulutuksen aikana. Tämä on melko tehokas ominaisuus, kun otetaan huomioon, että esineiden parittaminen on aikaa vievä tehtävä.

Matemaattisesti tämä voidaan esittää seuraavasti

Generaattoritoiminnon suhteen seuraavan suhteen pitäisi olla totta

Generaattoritoiminnot G (ab) ja G (ba) eivät ole mahdollista käytännössä kääntää toisiaan käänteisesti, joten rekonstruoidun kuvan ja alkuperäisen kuvan välinen häviö on minimoitava. Tätä tarkoitusta varten voimme käyttää joko L1- tai L2-vakiointia.

  • L1-normalisointi on absoluuttisen virheen summa jokaiselle datapisteelle.
  • L2-normalisointi on kunkin datapisteen neliötappion summa.
  • Voimme näyttää L2: n normalisoinnin menetysfunktion yhdelle kuvalle seuraavasti.
  • L2-normitun häviön minimointi ei riitä. Meidän on varmistettava, että luotu kuva xB näyttää realistiselta verkkotunnuksessa B. Kuten jos kartoitamme verkkotunnuksen A laukut verkkotunnuksen B kenkiin, meidän olisi varmistettava, että xB näyttää kenkältä.
  • Verkkotunnuksen B erottaja Db havaitsee xB: n väärin, jos kuva ei ole tarpeeksi realistinen kenkäna, tämä häviö on otettava huomioon.
  • Koulutuksessa sekä alueelle B tuotetut kuvat (xAB = G (ab) (xA)) että alkuperäiset (yB) kuvat syötetään syötteenä erottelijalle, jotta se oppii luokittelemaan todelliset kuvat väärennöksistä
  • Generaattorin menetys kuvan XA kartoittamisesta verkkotunnuksessa A kuvaan verkkotunnuksessa B voidaan kirjoittaa alla esitetyllä tavalla.
  • Ja jälleenrakennustappio L2-normin mukaisesti voidaan kirjoittaa alla esitetyllä tavalla.

Generaattori yrittää muuttaa kuvan xAB, joka näyttää realistiselta erottelijalle.

Erottelija yrittää merkitä muunnetun kuvan väärentämäksi kuvaksi, joten generaattorin G (ab) tulisi luoda kuva xAB siten, että väärennetyn kuvan lokitulot ovat mahdollisimman pienet.

Jos erotin D (b) verkkotunnuksessa B merkitsee 1 oikeille kuville ja 0 vääriä kuvia. Kuvan todellisuuden todennäköisyys annetaan D (b) (.): Lla.

Sitten generaattori yrittää saada kuvan xAB erittäin todennäköisesti merkitsemään todelliseksi syrjivän verkon alla. Se tarkoittaa, että generaattori yrittää saada D (b) (xB) = D (b) (G (ab) (xA)) yhtä lähellä 1 kuin mahdollista.

Lokihäviöiden suhteen generaattorin tulee minimoida todennäköisyyden negatiivinen loki, joka antaa meille C (D (ab)), kuten alla on kirjoitettu.

Yhdistämällä yllä oleva toiminto, saadaan generaattorin kokonaiskustannukset C_GAB kuvan kartoittamisesta alueelta A alueelle B.

Generaattori G (ba) kuvaa kuvia alueelta B alueelle A. Kuvan xB verkkotunnuksessa B, jonka generaattori G (ba) muuttaa kuvan xBA: ksi ja alueen A erottelijaksi, antaa D (a), sitten siihen liittyvä kustannustoiminto seuraavalla annetaan sellainen muutos.

Generaattorin häviäminen kaikille kuville molemmilla alueilla annetaan seuraavalla tavalla.

Erottelijan kustannustoiminto

Kummankin verkkotunnuksen syrjivät yrittävät erottaa todelliset kuvat vääriä kuvia, joten erottaja G (b) yrittää minimoida kustannukset C_D (b), kuten alla on esitetty.

Samoin erottaja D (a) yrittää minimoida kustannukset C_DA kuten alla on esitetty.

Erottajan kokonaiskustannukset annetaan C (d) seuraavasti.

Samankaltaisuus CycleGAN: n ja DiscoGAN: n välillä

  • CycleGAN ja DiscoGAN ovat molemmat melkein samankaltaisia. CycleGAN: issa on yksi muutos, siinä on lisähyperparametri, jolla voidaan säätää jälleenrakentamisen / syklin konsistenssin menetyksen osuutta kokonaismenetyksen toiminnassa. Tämä joustavuus määrittelee, kuinka paljon painoa jälleenrakentamishäviöön kohdistetaan suhteessa GAN-häviöön tai syrjinnälle aiheutuvaan menetykseen.
  • Tämä hyperparametri tasapainottaa häviöt verkon konvergoitumisen nopeuttamiseksi harjoittelun aikana.
  • Loppuosa CycleGAN-sovellusten toteutuksesta on sama kuin DiscoGAN-laitteiden.

Tämän viestin mukana toimitettu jupyter-muistikirja löytyy Githubista.

johtopäätös

Yksi DiscoGAN-tuotteiden hienoista sovelluksista on koriste-esineiden siirtäminen muotituotteista, kuten laukusta, toiseen muotituotteeseen, kuten kenkäpariin.

Toivon, että tämä artikkeli auttoi sinua aloittamaan omien DiscoGAN-laitteidesi rakentamisen. Uskon, että se antaa ainakin hyvän selityksen ja ymmärryksen DiscoGAN-tuotteista.