AI-For-Beginners/translations/sk/lessons/4-ComputerVision/10-GANs
leestott fee00e62ca 🌐 Update translations via Co-op Translator 2025-08-30 01:17:50 +00:00
..
GANPyTorch.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 01:17:50 +00:00
GANTF.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 01:17:50 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-26 01:51:51 +00:00
StyleTransfer.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 01:17:50 +00:00
StyleTransfer_Keras.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 01:17:50 +00:00

README.md

Generatívne adversariálne siete

V predchádzajúcej časti sme sa naučili o generatívnych modeloch: modeloch, ktoré dokážu generovať nové obrázky podobné tým v tréningovej množine. VAE bol dobrým príkladom generatívneho modelu.

Kvíz pred prednáškou

Ak sa však pokúsime generovať niečo naozaj zmysluplné, napríklad maľbu v rozumnej kvalite, pomocou VAE, zistíme, že tréning sa nekonverguje dobre. Pre tento prípad použitia by sme sa mali naučiť o inej architektúre špecificky zameranej na generatívne modely - Generatívne adversariálne siete, alebo GANy.

Hlavná myšlienka GANov spočíva v tom, že máme dve neurónové siete, ktoré sa budú trénovať proti sebe:

Obrázok od Dmitry Soshnikov

Malý slovník:

  • Generátor je sieť, ktorá prijíma náhodný vektor a ako výsledok produkuje obrázok.
  • Diskriminátor je sieť, ktorá prijíma obrázok a mala by určiť, či ide o skutočný obrázok (z tréningovej množiny), alebo či bol vygenerovaný generátorom. V podstate ide o klasifikátor obrázkov.

Diskriminátor

Architektúra diskriminátora sa nelíši od bežnej siete na klasifikáciu obrázkov. V najjednoduchšom prípade môže ísť o plne prepojený klasifikátor, ale pravdepodobne to bude konvolučná sieť.

GAN založený na konvolučných sieťach sa nazýva DCGAN

Diskriminátor CNN pozostáva z nasledujúcich vrstiev: niekoľko konvolúcií + poolingov (s klesajúcou priestorovou veľkosťou) a jednej alebo viacerých plne prepojených vrstiev na získanie "vektorov vlastností", a nakoniec binárneho klasifikátora.

'Pooling' v tomto kontexte je technika, ktorá zmenšuje veľkosť obrázka. "Poolingové vrstvy znižujú rozmery dát kombinovaním výstupov klastrov neurónov v jednej vrstve do jedného neurónu v nasledujúcej vrstve." - zdroj

Generátor

Generátor je o niečo zložitejší. Môžete si ho predstaviť ako obrátený diskriminátor. Začína sa latentným vektorom (namiesto vektora vlastností), ktorý má plne prepojenú vrstvu na jeho konverziu do požadovanej veľkosti/tvaru, nasledovanú dekonvolúciami + zväčšovaním. Toto je podobné dekodéru v autoenkóderi.

Pretože konvolučná vrstva je implementovaná ako lineárny filter prechádzajúci obrázkom, dekonvolúcia je v podstate podobná konvolúcii a môže byť implementovaná pomocou rovnakej logiky vrstvy.

Obrázok od Dmitry Soshnikov

Tréning GANov

GANy sa nazývajú adversariálne, pretože medzi generátorom a diskriminátorom prebieha neustála súťaž. Počas tejto súťaže sa obidva modely zlepšujú, čím sa sieť učí vytvárať stále lepšie obrázky.

Tréning prebieha v dvoch fázach:

  • Tréning diskriminátora. Táto úloha je pomerne jednoduchá: vygenerujeme dávku obrázkov pomocou generátora, označíme ich ako 0, čo znamená falošný obrázok, a vezmeme dávku obrázkov z tréningovej množiny (s označením 1, skutočný obrázok). Získame nejakú stratu diskriminátora a vykonáme spätné šírenie.
  • Tréning generátora. Toto je o niečo zložitejšie, pretože nepoznáme očakávaný výstup generátora priamo. Vezmeme celú GAN sieť pozostávajúcu z generátora nasledovaného diskriminátorom, nakŕmime ju náhodnými vektormi a očakávame, že výsledok bude 1 (zodpovedajúci skutočným obrázkom). Potom zmrazíme parametre diskriminátora (nechceme, aby sa v tomto kroku trénoval) a vykonáme spätné šírenie.

Počas tohto procesu straty generátora a diskriminátora významne neklesajú. V ideálnom prípade by mali oscilovať, čo zodpovedá zlepšovaniu výkonu oboch sietí.

✍️ Cvičenia: GANy

Problémy s tréningom GANov

GANy sú známe tým, že sú obzvlášť náročné na tréning. Tu je niekoľko problémov:

  • Kolaps módu. Tento termín znamená, že generátor sa naučí vytvárať jeden úspešný obrázok, ktorý oklame diskriminátor, a nie rôzne obrázky.
  • Citlivosť na hyperparametre. Často sa stáva, že GAN nekonverguje vôbec, a potom náhle zníženie rýchlosti učenia vedie ku konvergencii.
  • Udržiavanie rovnováhy medzi generátorom a diskriminátorom. V mnohých prípadoch môže strata diskriminátora klesnúť na nulu pomerne rýchlo, čo spôsobí, že generátor už nebude schopný ďalej trénovať. Na prekonanie tohto problému môžeme skúsiť nastaviť rôzne rýchlosti učenia pre generátor a diskriminátor, alebo preskočiť tréning diskriminátora, ak je strata už príliš nízka.
  • Tréning pre vysoké rozlíšenie. Tento problém, podobne ako pri autoenkóderoch, vzniká, pretože rekonštrukcia príliš mnohých vrstiev konvolučnej siete vedie k artefaktom. Tento problém sa zvyčajne rieši tzv. progresívnym rastom, keď sa najprv niekoľko vrstiev trénuje na obrázkoch s nízkym rozlíšením, a potom sa vrstvy "odomknú" alebo pridajú. Ďalším riešením by bolo pridanie extra spojení medzi vrstvami a tréning viacerých rozlíšení naraz - podrobnosti nájdete v tomto Multi-Scale Gradient GANs článku.

Prenos štýlu

GANy sú skvelým spôsobom, ako generovať umelecké obrázky. Ďalšou zaujímavou technikou je tzv. prenos štýlu, ktorý vezme jeden obsahový obrázok a prekreslí ho v inom štýle, aplikujúc filtre zo štýlového obrázka.

Ako to funguje:

  • Začneme s náhodným šumovým obrázkom (alebo s obsahovým obrázkom, ale pre pochopenie je jednoduchšie začať s náhodným šumom).
  • Naším cieľom bude vytvoriť taký obrázok, ktorý bude blízky obsahovému obrázku aj štýlovému obrázku. To sa určí pomocou dvoch funkcií straty:
    • Strata obsahu sa vypočíta na základe vlastností extrahovaných CNN na niektorých vrstvách z aktuálneho obrázka a obsahového obrázka.
    • Strata štýlu sa vypočíta medzi aktuálnym obrázkom a štýlovým obrázkom šikovným spôsobom pomocou Gramových matíc (viac podrobností v príkladovom notebooku).
  • Na vyhladenie obrázka a odstránenie šumu zavádzame aj stratu variácie, ktorá počíta priemernú vzdialenosť medzi susednými pixelmi.
  • Hlavná optimalizačná slučka upravuje aktuálny obrázok pomocou gradientného zostupu (alebo iného optimalizačného algoritmu) na minimalizáciu celkovej straty, ktorá je váženým súčtom všetkých troch strát.

✍️ Príklad: Prenos štýlu

Kvíz po prednáške

Zhrnutie

V tejto lekcii ste sa naučili o GANoch a ako ich trénovať. Tiež ste sa dozvedeli o špeciálnych výzvach, ktorým tento typ neurónových sietí čelí, a o niektorých stratégiách, ako ich prekonať.

🚀 Výzva

Prejdite si notebook o prenose štýlu s použitím vlastných obrázkov.

Prehľad a samoštúdium

Pre referenciu si prečítajte viac o GANoch v týchto zdrojoch:

Zadanie

Znovu si prejdite jeden z dvoch notebookov spojených s touto lekciou a pretrénujte GAN na vlastných obrázkoch. Čo dokážete vytvoriť?

Upozornenie:
Tento dokument bol preložený pomocou služby AI prekladu Co-op Translator. Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.