AI-For-Beginners/translations/fi/lessons/4-ComputerVision/10-GANs
localizeflow[bot] 7a9b37f3b1 chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:07:34 +00:00
..
GANPyTorch.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 22:12:36 +00:00
GANTF.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 22:12:36 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:07:34 +00:00
StyleTransfer.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 22:12:36 +00:00
StyleTransfer_Keras.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 22:12:36 +00:00

README.md

Generatiiviset vastakkaiset verkot

EdellisessÀ osiossa opimme generatiivisista malleista: malleista, jotka voivat luoda uusia kuvia, jotka muistuttavat koulutusdatan kuvia. VAE oli hyvÀ esimerkki generatiivisesta mallista.

Ennakkokysely

Kuitenkin, jos yritÀmme luoda jotain todella merkityksellistÀ, kuten maalauksen kohtuullisella resoluutiolla, VAE:lla huomaamme, ettÀ koulutus ei etene hyvin. TÀtÀ kÀyttötarkoitusta varten meidÀn tulisi oppia toinen arkkitehtuuri, joka on erityisesti suunnattu generatiivisiin malleihin - Generatiiviset vastakkaiset verkot, eli GANit.

GANin pÀÀidea on kÀyttÀÀ kahta neuroverkkoa, jotka koulutetaan toisiaan vastaan:

Kuva: Dmitry Soshnikov

✅ Pieni sanasto:

  • Generaattori on verkko, joka ottaa satunnaisen vektorin ja tuottaa kuvan tuloksena.
  • Diskriminaattori on verkko, joka ottaa kuvan ja pyrkii mÀÀrittĂ€mÀÀn, onko se oikea kuva (koulutusdatasta) vai generaattorin tuottama. Se on pohjimmiltaan kuvien luokittelija.

Diskriminaattori

Diskriminaattorin arkkitehtuuri ei eroa tavallisesta kuvien luokitteluun tarkoitetusta verkosta. Yksinkertaisimmillaan se voi olla tÀysin yhdistetty luokittelija, mutta todennÀköisimmin se on konvoluutioverkko.

✅ GAN, joka perustuu konvoluutioverkkoihin, kutsutaan nimellĂ€ DCGAN

CNN-diskriminaattori koostuu seuraavista kerroksista: useita konvoluutioita+poolauksia (joilla pienennetÀÀn spatiaalista kokoa) ja yksi tai useampi tÀysin yhdistetty kerros, joka tuottaa "piirrevektorin", lopuksi binÀÀriluokittelija.

✅ 'Poolaus' tĂ€ssĂ€ yhteydessĂ€ tarkoittaa tekniikkaa, joka pienentÀÀ kuvan kokoa. "Poolauskerrokset pienentĂ€vĂ€t datan dimensioita yhdistĂ€mĂ€llĂ€ yhden kerroksen neuroniryhmien tulokset yhdeksi neuroniksi seuraavassa kerroksessa." - lĂ€hde

Generaattori

Generaattori on hieman monimutkaisempi. Voit ajatella sen olevan kÀÀnteinen diskriminaattori. Aloittaen latenttivektorista (piirrevektorin sijaan), siinÀ on tÀysin yhdistetty kerros, joka muuntaa sen vaadittuun kokoon/muotoon, jota seuraa dekonvoluutio+skaalaus. TÀmÀ on samanlainen kuin autokooderin dekooderi-osa.

✅ Koska konvoluutiokerros toteutetaan lineaarisena suodattimena, joka kulkee kuvan lĂ€pi, dekonvoluutio on pohjimmiltaan samanlainen kuin konvoluutio ja voidaan toteuttaa samalla kerroslogiikalla.

Kuva: Dmitry Soshnikov

GANin koulutus

GANeja kutsutaan vastakkaisiksi, koska generaattorin ja diskriminaattorin vÀlillÀ on jatkuva kilpailu. TÀmÀn kilpailun aikana sekÀ generaattori ettÀ diskriminaattori parantavat suoritustaan, jolloin verkko oppii tuottamaan yhÀ parempia kuvia.

Koulutus tapahtuu kahdessa vaiheessa:

  • Diskriminaattorin koulutus. TĂ€mĂ€ tehtĂ€vĂ€ on melko suoraviivainen: generaattori tuottaa erĂ€n kuvia, jotka merkitÀÀn 0:ksi (vÀÀrennetty kuva), ja otetaan erĂ€ kuvia syöttödatasta (merkittynĂ€ 1:ksi, oikea kuva). Saamme jonkin diskriminaattorihĂ€viön ja suoritamme takaisinkulun.
  • Generaattorin koulutus. TĂ€mĂ€ on hieman monimutkaisempaa, koska emme tiedĂ€ generaattorin odotettua tulosta suoraan. Otamme koko GAN-verkon, joka koostuu generaattorista ja diskriminaattorista, syötĂ€mme siihen satunnaisia vektoreita ja odotamme tuloksen olevan 1 (vastaa oikeita kuvia). Sitten jÀÀdytĂ€mme diskriminaattorin parametrit (emme halua sen kouluttavan tĂ€ssĂ€ vaiheessa) ja suoritamme takaisinkulun.

TÀmÀn prosessin aikana sekÀ generaattorin ettÀ diskriminaattorin hÀviöt eivÀt laske merkittÀvÀsti. Ihannetilanteessa niiden tulisi vÀrÀhdellÀ, mikÀ vastaa molempien verkkojen suorituskyvyn paranemista.

✍ Harjoitukset: GANit

GANin koulutuksen ongelmat

GANit ovat tunnetusti erityisen vaikeita kouluttaa. TÀssÀ muutamia ongelmia:

  • Mode Collapse. TĂ€llĂ€ termillĂ€ tarkoitetaan, ettĂ€ generaattori oppii tuottamaan yhden onnistuneen kuvan, joka huijaa diskriminaattoria, mutta ei monipuolista valikoimaa erilaisia kuvia.
  • HerkkĂ€ hyperparametreille. Usein voi nĂ€hdĂ€, ettĂ€ GAN ei konvergoi ollenkaan, ja sitten oppimisnopeuden Ă€killinen lasku johtaa konvergenssiin.
  • Tasapainon yllĂ€pitĂ€minen generaattorin ja diskriminaattorin vĂ€lillĂ€. Monissa tapauksissa diskriminaattorin hĂ€viö voi pudota nollaan suhteellisen nopeasti, mikĂ€ johtaa siihen, ettĂ€ generaattori ei pysty enÀÀ kouluttautumaan. TĂ€mĂ€n voittamiseksi voimme yrittÀÀ asettaa eri oppimisnopeudet generaattorille ja diskriminaattorille tai ohittaa diskriminaattorin koulutuksen, jos hĂ€viö on jo liian alhainen.
  • Korkean resoluution koulutus. Sama ongelma kuin autokoodereilla, tĂ€mĂ€ ongelma syntyy, koska liian monen konvoluutiokerroksen rekonstruointi johtaa artefakteihin. TĂ€mĂ€ ongelma ratkaistaan tyypillisesti niin sanotulla progressiivisella kasvulla, jossa ensin muutama kerros koulutetaan matalaresoluutioisilla kuvilla, ja sitten kerrokset "avataan" tai lisĂ€tÀÀn. Toinen ratkaisu olisi lisĂ€tĂ€ ylimÀÀrĂ€isiĂ€ yhteyksiĂ€ kerrosten vĂ€lillĂ€ ja kouluttaa useita resoluutioita samanaikaisesti - katso tĂ€mĂ€ Multi-Scale Gradient GANs -paperi saadaksesi lisĂ€tietoja.

Tyylinsiirto

GANit ovat erinomainen tapa luoda taiteellisia kuvia. Toinen mielenkiintoinen tekniikka on niin sanottu tyylinsiirto, joka ottaa yhden sisÀltökuvan ja piirtÀÀ sen uudelleen eri tyylillÀ, soveltaen suodattimia tyylikuvasta.

NĂ€in se toimii:

  • Aloitamme satunnaisesta kohinakuvaasta (tai sisĂ€ltökuvasta, mutta ymmĂ€rtĂ€misen vuoksi on helpompi aloittaa satunnaisesta kohinasta).
  • Tavoitteenamme on luoda sellainen kuva, joka olisi lĂ€hellĂ€ sekĂ€ sisĂ€ltökuvaa ettĂ€ tyylikuvaa. TĂ€mĂ€ mÀÀritetÀÀn kahdella hĂ€viöfunktiolla:
    • SisĂ€ltöhĂ€viö lasketaan CNN:n tietyillĂ€ kerroksilla nykyisestĂ€ kuvasta ja sisĂ€ltökuvasta saatujen piirteiden perusteella.
    • TyylihĂ€viö lasketaan nykyisen kuvan ja tyylikuvan vĂ€lillĂ€ Ă€lykkÀÀllĂ€ tavalla kĂ€yttĂ€mĂ€llĂ€ Gram-matriiseja (lisĂ€tietoja esimerkkimuistikirjassa).
  • Jotta kuva olisi tasaisempi ja poistaisi kohinaa, lisÀÀmme myös Variation loss -hĂ€viön, joka laskee keskimÀÀrĂ€isen etĂ€isyyden vierekkĂ€isten pikselien vĂ€lillĂ€.
  • PÀÀoptimointisilmukka sÀÀtÀÀ nykyistĂ€ kuvaa kĂ€yttĂ€mĂ€llĂ€ gradienttilaskentaa (tai jotain muuta optimointialgoritmia) minimoidakseen kokonaishĂ€viön, joka on kaikkien kolmen hĂ€viön painotettu summa.

✍ Esimerkki: Tyylinsiirto

JĂ€lkikysely

Yhteenveto

TÀssÀ oppitunnissa opit GANeista ja niiden kouluttamisesta. Opit myös erityisistÀ haasteista, joita tÀmÀ neuroverkkojen tyyppi voi kohdata, sekÀ strategioista niiden voittamiseksi.

🚀 Haaste

KÀy lÀpi Tyylinsiirto-muistikirja kÀyttÀen omia kuviasi.

Kertaus ja itseopiskelu

LisÀtietoja GANeista löydÀt nÀistÀ lÀhteistÀ:

TehtÀvÀ

Palaa johonkin tÀmÀn oppitunnin kahdesta muistikirjasta ja kouluta GAN omilla kuvillasi. MitÀ voit luoda?