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

README.md

Generativa Adversariella NĂ€tverk

I föregÄende avsnitt lÀrde vi oss om generativa modeller: modeller som kan generera nya bilder som liknar de i trÀningsdatamÀngden. VAE var ett bra exempel pÄ en generativ modell.

Quiz före förelÀsningen

Men om vi försöker generera nÄgot riktigt meningsfullt, som en mÄlning med rimlig upplösning, med VAE, kommer vi att mÀrka att trÀningen inte konvergerar sÀrskilt bra. För detta anvÀndningsomrÄde bör vi lÀra oss om en annan arkitektur som Àr specifikt inriktad pÄ generativa modeller - Generativa Adversariella NÀtverk, eller GANs.

Huvudidén med en GAN Àr att ha tvÄ neurala nÀtverk som trÀnas mot varandra:

Bild av Dmitry Soshnikov

✅ Lite vokabulĂ€r:

  • Generator Ă€r ett nĂ€tverk som tar en slumpmĂ€ssig vektor och producerar en bild som resultat.
  • Discriminator Ă€r ett nĂ€tverk som tar en bild och ska avgöra om det Ă€r en riktig bild (frĂ„n trĂ€ningsdatamĂ€ngden) eller om den genererats av en generator. Det Ă€r i grunden en bildklassificerare.

Discriminator

Discriminatorns arkitektur skiljer sig inte frÄn ett vanligt bildklassificeringsnÀtverk. I det enklaste fallet kan det vara en helt ansluten klassificerare, men oftast kommer det att vara ett konvolutionellt nÀtverk.

✅ En GAN baserad pĂ„ konvolutionella nĂ€tverk kallas en DCGAN

En CNN-discriminator bestÄr av följande lager: flera konvolutioner + pooling (med minskande spatial storlek) och en eller flera helt anslutna lager för att fÄ en "funktionsvektor", samt en slutlig binÀr klassificerare.

✅ "Pooling" i detta sammanhang Ă€r en teknik som minskar bildens storlek. "Pooling-lager minskar datans dimensioner genom att kombinera utgĂ„ngarna frĂ„n neuronkluster i ett lager till en enda neuron i nĂ€sta lager." - kĂ€lla

Generator

En generator Àr nÄgot mer komplicerad. Du kan se den som en omvÀnd discriminator. Med start frÄn en latent vektor (istÀllet för en funktionsvektor) har den ett helt anslutet lager för att omvandla den till önskad storlek/form, följt av dekonvolutioner + uppskalning. Detta liknar dekoder-delen av autoencoder.

✅ Eftersom konvolutionslagret implementeras som ett linjĂ€rt filter som traverserar bilden, Ă€r dekonvolution i princip liknande konvolution och kan implementeras med samma lagerlogik.

Bild av Dmitry Soshnikov

TrÀning av GAN

GANs kallas adversariella eftersom det pÄgÄr en stÀndig tÀvling mellan generatorn och discriminatorn. Under denna tÀvling förbÀttras bÄde generatorn och discriminatorn, vilket gör att nÀtverket lÀr sig att producera bÀttre och bÀttre bilder.

TrÀningen sker i tvÄ steg:

  • TrĂ€ning av discriminatorn. Denna uppgift Ă€r ganska enkel: vi genererar en batch av bilder med generatorn, mĂ€rker dem som 0 (vilket stĂ„r för falska bilder), och tar en batch av bilder frĂ„n inmatningsdatamĂ€ngden (med etikett 1, riktiga bilder). Vi fĂ„r en discriminatorförlust och utför backpropagation.
  • TrĂ€ning av generatorn. Detta Ă€r nĂ„got mer komplicerat eftersom vi inte direkt vet det förvĂ€ntade resultatet för generatorn. Vi tar hela GAN-nĂ€tverket som bestĂ„r av en generator följt av en discriminator, matar det med nĂ„gra slumpmĂ€ssiga vektorer och förvĂ€ntar oss att resultatet ska vara 1 (motsvarande riktiga bilder). Vi fryser sedan parametrarna för discriminatorn (vi vill inte att den ska trĂ€nas i detta steg) och utför backpropagation.

Under denna process gÄr varken generatorns eller discriminatorns förluster ner sÀrskilt mycket. I en idealisk situation bör de oscillera, vilket motsvarar att bÄda nÀtverken förbÀttrar sin prestanda.

✍ Övningar: GANs

Problem med GAN-trÀning

GANs Àr kÀnda för att vara sÀrskilt svÄra att trÀna. HÀr Àr nÄgra problem:

  • Mode Collapse. Med detta menas att generatorn lĂ€r sig att producera en framgĂ„ngsrik bild som lurar discriminatorn, men inte en variation av olika bilder.
  • KĂ€nslighet för hyperparametrar. Ofta kan man se att en GAN inte konvergerar alls, och sedan plötsligt minskar inlĂ€rningshastigheten vilket leder till konvergens.
  • Att hĂ„lla en balans mellan generatorn och discriminatorn. I mĂ„nga fall kan discriminatorns förlust sjunka till noll relativt snabbt, vilket resulterar i att generatorn inte kan trĂ€na vidare. För att övervinna detta kan vi försöka sĂ€tta olika inlĂ€rningshastigheter för generatorn och discriminatorn, eller hoppa över trĂ€ningen av discriminatorn om förlusten redan Ă€r för lĂ„g.
  • TrĂ€ning för hög upplösning. Detta problem liknar det med autoencoders och uppstĂ„r eftersom rekonstruktion av för mĂ„nga lager i ett konvolutionellt nĂ€tverk leder till artefakter. Problemet löses vanligtvis med sĂ„ kallad progressiv tillvĂ€xt, dĂ€r de första lagren trĂ€nas pĂ„ lĂ„gupplösta bilder och sedan "lĂ„ses upp" eller lĂ€ggs till fler lager. En annan lösning Ă€r att lĂ€gga till extra kopplingar mellan lager och trĂ€na flera upplösningar samtidigt - se denna Multi-Scale Gradient GANs-artikel för detaljer.

Stilöverföring

GANs Àr ett utmÀrkt sÀtt att generera konstnÀrliga bilder. En annan intressant teknik Àr sÄ kallad stilöverföring, som tar en innehÄllsbild och ritar om den i en annan stil genom att applicera filter frÄn en stilbild.

SÄ hÀr fungerar det:

  • Vi börjar med en slumpmĂ€ssig brusbild (eller med en innehĂ„llsbild, men för förstĂ„elsens skull Ă€r det enklare att börja med slumpmĂ€ssigt brus).
  • VĂ„rt mĂ„l Ă€r att skapa en bild som ligger nĂ€ra bĂ„de innehĂ„llsbilden och stilbilden. Detta bestĂ€ms av tvĂ„ förlustfunktioner:
    • InnehĂ„llsförlust berĂ€knas baserat pĂ„ de funktioner som extraheras av CNN vid vissa lager frĂ„n den aktuella bilden och innehĂ„llsbilden.
    • Stilförlust berĂ€knas mellan den aktuella bilden och stilbilden pĂ„ ett smart sĂ€tt med hjĂ€lp av Gram-matriser (mer detaljer i exempelnotebooken).
  • För att göra bilden mjukare och ta bort brus introducerar vi ocksĂ„ Variationsförlust, som berĂ€knar det genomsnittliga avstĂ„ndet mellan nĂ€rliggande pixlar.
  • Den huvudsakliga optimeringsloopen justerar den aktuella bilden med hjĂ€lp av gradientnedstigning (eller nĂ„gon annan optimeringsalgoritm) för att minimera den totala förlusten, som Ă€r en viktad summa av alla tre förluster.

✍ Exempel: Stilöverföring

Quiz efter förelÀsningen

Slutsats

I denna lektion lÀrde du dig om GANs och hur man trÀnar dem. Du lÀrde dig ocksÄ om de speciella utmaningar som denna typ av neuralt nÀtverk kan möta och nÄgra strategier för att övervinna dem.

🚀 Utmaning

Kör igenom Stilöverföringsnotebooken med dina egna bilder.

Granskning & SjÀlvstudier

För referens, lÀs mer om GANs i dessa resurser:

Uppgift

GÄ tillbaka till en av de tvÄ notebookarna som Àr kopplade till denna lektion och trÀna om GAN pÄ dina egna bilder. Vad kan du skapa?