GAN - Generative Adversarial Networks
StyleGAN2 Conditional - 18 versioner av experimentStyleGAN2 Conditional - 18 versions of experiments
ARKIVERAT - BYTTE TILL DIFFUSIONARCHIVED - SWITCHED TO DIFFUSION
Animering av träningsförloppetTraining progression animation
Det här är historien om att försöka lära en dator att göra bilder som ser ut som mina. Nya bilder med samma visuella logik som mitt eget bildarkiv. En slags spegel som visar tillbaka något jag inte bad om, men ändå känner igen. This is the story of trying to teach a computer to make images that look like mine. New images carrying the same visual logic as my own image archive. A kind of mirror that shows back something I didn't ask for, but still recognize.
Projektet heter MIN BILD AI och är en del av mitt examensarbete IN SILICO på Konstfack. Det ställer en fråga jag fortfarande inte har svaret på: vad är mitt, egentligen, när en maskin lär sig av mig och jag lär mig av maskinen? The project is called MIN BILD AI ("My Image AI") and is part of my degree project IN SILICO at Konstfack (University of Arts, Crafts and Design, Stockholm). It asks a question I still don't have the answer to: what is mine, really, when a machine learns from me and I learn from the machine?
ResanThe Journey
Projektet startade i juni 2025 med grundläggande bildexperiment. Efter månader av att lära mig Python, PyTorch och bildbehandling kom jag till GAN-experimenten i november 2025. GAN-fasen pågick till januari 2026, med 18 versioner innan jag bytte till diffusionsmodeller. The project started in June 2025 with basic image experiments. After months of learning Python, PyTorch, and image processing fundamentals, I reached GAN experiments in November 2025. The GAN phase ran through January 2026, spanning 18 versions before switching to diffusion models.
GAN (Generative Adversarial Network) består av två neurala nätverk som tränas tillsammans:consists of two neural networks training together:
- Generator (G): Försöker skapa falska bilder som ser verkliga utTries to create fake images that look real
- Discriminator (D): Försöker skilja verkliga bilder från falskaTries to distinguish real from fake images
De "kämpar" mot varandra tills generatorn blir så bra att discriminatorn inte kan avgöra skillnaden.They "fight" each other until the generator becomes so good that the discriminator can't tell the difference.
This Person Does Not Exist
StyleGAN2 tränad på ansikten. Varje sidladdning ger ett nytt ansikte som aldrig funnits.StyleGAN2 trained on faces. Each page refresh = a new face that never existed.
StyleGAN / StyleGAN2 / 3
NVIDIAs state-of-the-art. Progressiv träning, stilblandning, alias-fritt.NVIDIA's state-of-the-art. Progressive training, style mixing, alias-free.
This Artwork Does Not Exist
GAN tränad på konstverk. Genererar målningar i olika stilar.GAN trained on artworks. Generates paintings in various styles.
Artbreeder
Låter användare "blanda" bilder via interpolation i GAN:ets latenta rum.Lets users "blend" images using GAN latent space interpolation.
Första försöken med vanilla GAN. Problem: mode collapse, instabil träning.First attempts with vanilla GAN. Problems: mode collapse, unstable training.
Testade separata generatorer för objekt och bakgrund. Mask-preträning, contrastive learning.Tested separate generators for object and background. Mask pretrain, contrastive learning.
Dataset: 5684 bilder men blandat innehåll (skärmdumpar, memes, personer).Dataset: 5684 images but mixed content (screenshots, memes, people).
Dataset: 3036 → 2310 bilder (~80% konst). Problem: 148 egenskaper var för många.Dataset: 3036 → 2310 images (~80% art). Problem: 148 features was too many.
76 egenskaper, dataset_v10, finjusterade hyperparametrar. Producerade intressanta samplar men mode collapse efter 200+ epoker.76 features, dataset_v10, fine-tuned hyperparameters. Produced interesting samples but mode collapse after 200+ epochs.
ADA-p sjönk från 0.8 → 0.02. Discriminatorn dominerade, generatorn kollapsade.ADA-p dropped from 0.8 → 0.02. Discriminator became dominant, generator collapsed.
Testade uppgradering till StyleGAN3. Problem: 57 210 sek/kimg (~16h), OOM på 6 GB VRAM.Tested upgrade to StyleGAN3. Problem: 57,210 sec/kimg (~16h), OOM on 6GB VRAM.
Slutsats:Conclusion: Kräver kraftfullare GPU än min GTX 1660 Super.Requires more powerful GPU than my GTX 1660 Super.
v10 - Rensat dataset:v10 - Cleaned dataset:


v14 & v17 - Senare versioner:v14 & v17 - Later versions:


Det här projektet tog form under 1,5 år av programmeringsstudier på yrkeshögskola, i dialog med AI-verktyg (både ChatGPT och Claude Code). De tog med sig olika perspektiv och styrkor som hjälpte mig förstå problem från flera håll. This project was developed during 1.5 years of programming studies at a vocational school, in dialogue with AI tools (both ChatGPT and Claude Code). They brought different perspectives and strengths which helped me understand problems from multiple angles.
Vad jag gjorde självWhat I Did Myself MITT ARBETEMY WORK
| OmrådeArea | ExempelExamples |
|---|---|
| Idé och konceptIdea & Concept | Beslutet att göra ett konditionalt GAN, använda visuella egenskaper i stället för textDecision to make conditional GAN, use visual features instead of text |
| DatasetkurateringDataset curation | Samlade, sorterade, rensade ~7000 av mina egna foton (5684 → 2310)Collected, sorted, cleaned ~7000 of my own photos (5684 → 2310) |
| Val av egenskaperFeature selection | Valde vilka 76 egenskaper som skulle extraheras, skrev extraktionsskriptChose which 76 features to extract, wrote extraction scripts |
| ExperimentdesignExperiment design | 18 versioner med olika ansatser: masker, färre egenskaper, ADA-tuning18 versions, trying different approaches: masks, fewer features, ADA tuning |
| TräningskonfigurationTraining config | Learning rates, batchstorlek, r1_gamma, ada_target - allt justerat manuelltLearning rates, batch size, r1_gamma, ada_target - all tuned manually |
| Övervakning och analysMonitoring & analysis | Följde ADA-p, loss-kurvor, identifierade mode collapseWatched ADA-p, loss curves, detected mode collapse |
| KodstrukturCode structure | Organiserade projektmappar, konfigfiler, automatiska backup-skriptOrganized project folders, config files, auto-backup scripts |
Vad AI hjälpte till medWhat AI Helped With
Jag använde både ChatGPT och Claude Code genom hela projektet. De tog med sig olika perspektiv och styrkor, vilket hjälpte mig förstå problem från flera håll.I used both ChatGPT and Claude Code throughout the project. They brought different perspectives and strengths, which helped me understand problems from multiple angles.
| OmrådeArea | Typ av hjälpType of help |
|---|---|
| Monotona beräkningarMonotonous calculations | Skriva repetitiva kodmönster, boilerplate, tensor-omformningWriting repetitive code patterns, boilerplate, tensor reshaping |
| MatematikimplementeringMath implementation | Översätta papperekvationer till PyTorch (lossfunktioner, gradient penalties)Translating paper equations into PyTorch (loss functions, gradient penalties) |
| FelsökningDebugging | Hitta varför mode collapse inträffade, tensor-dimensionsmissmatchningarFinding why mode collapse happened, tensor dimension mismatches |
| Konkreta exempelConcrete examples | Visa hur ett koncept ser ut i faktisk kod, inte bara i teorinShowing how a concept looks in actual code, not just theory |
| Hitta referenserFinding references | Lokalisera relevanta papper, dokumentation och tutorialsLocating relevant papers, documentation, and tutorials |
BaskodBase Code NVIDIA StyleGAN2-ADA
- Generator-arkitekturGenerator architecture - StyleGAN2 mapping network + synthesis network
- Discriminator-arkitekturDiscriminator architecture - Progressive discriminator with ADA
- TräningsloopTraining loop - Baserad på officiell training_loop.py (modifierad för konditionalt indata)Based on official training_loop.py (modified for conditional input)
- ADA augmentation - Adaptiv augmentering från NVIDIAs paperAdaptive augmentation from NVIDIA paper
github.com/NVlabs/stylegan2-ada-pytorch
BibliotekLibraries Used
- PyTorch - Neuralt nätverksramverkNeural network framework
- OpenCV - Bildladdning och förbehandlingImage loading and preprocessing
- NumPy - Numeriska operationerNumerical operations
- Pillow - BildmanipuleringImage manipulation
- scikit-image - Egenskapsextraktion (textur, färghistogram)Feature extraction (texture, color histograms)
Det här projektet växte fram i dialog med AI, och kombinerade mina 1,5 år av programmeringsstudier med AI-assistans för implementationsdetaljer. Idéerna, experimenten, valet av egenskaper och datasetet är mitt eget arbete. Jag tränade modellen från grunden på ~7000 av mina egna foton i 18 versioner. This project was developed in dialogue with AI, combining my 1.5 years of programming studies with AI assistance for implementation details. The ideas, experiments, feature selection, and dataset are my own work. I trained the model from scratch on ~7000 of my own photos across 18 versions.
ArkitekturArchitecture
- z_dim: 512 (latent rumlatent space)
- w_dim: 512 (mellanliggande rumintermediate space)
- cond_dim: 76 egenskaper (v11-v15)features (v11-v15)
- Resolution: 256x256
- Batch size: 4 (6GB VRAM gränslimit)
Bästa konfiguration (v11):Best configuration (v11):
2310 rena konstbilder >> 5684 blandade bilder2310 clean art images >> 5684 mixed images
76 egenskaper fungerade okej, 148 var för många76 features worked ok, 148 was too many
Kräver konstant övervakning, finjustering av lr-ratio, r1_gammaRequires constant monitoring, fine-tuning of lr-ratio, r1_gamma
GTX 1660 Super (6 GB) klarar StyleGAN2 men inte StyleGAN3GTX 1660 Super (6GB) works for StyleGAN2 but not StyleGAN3
Autogenererade masker varierar för mycket. Dåliga masker är värre än inga masker.Auto-generated masks vary too much. Bad masks are worse than no masks.
→ Se Diffusion v2 (nuvarande modell)→ See Diffusion v2 (current model)
- Original GAN - Goodfellow et al., "Generative Adversarial Nets" (NeurIPS 2014)
- StyleGAN - Karras et al., "A Style-Based Generator Architecture for GANs" (CVPR 2019)
- StyleGAN2 - Karras et al., "Analyzing and Improving the Image Quality of StyleGAN" (CVPR 2020)
- StyleGAN3 - Karras et al., "Alias-Free Generative Adversarial Networks" (NeurIPS 2021)
- ADA - Karras et al., "Training Generative Adversarial Networks with Limited Data" (NeurIPS 2020)
- Progressive GAN - Karras et al., "Progressive Growing of GANs" (ICLR 2018)
- WGAN-GP - Gulrajani et al., "Improved Training of Wasserstein GANs" (NeurIPS 2017)