MIN_BILD_AI - GAN Archive (v1-v18) X

GAN - Generative Adversarial Networks

StyleGAN2 Conditional - 18 versioner av experimentStyleGAN2 Conditional - 18 versions of experiments

ARKIVERAT - BYTTE TILL DIFFUSIONARCHIVED - SWITCHED TO DIFFUSION
GAN Training Animation

Animering av träningsförloppetTraining progression animation

Varför det här projektet?Why This Project?

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.

Vad jag lärde mig:What I learned: Det viktigaste insikten har ingenting med kod att göra. Det handlar om destillation. Om att identifiera vad som faktiskt spelar roll och skala bort resten. En modell med 6 välvalda egenskaper fungerar bättre än en med 76 brusiga. Komplexitet är inte bättre. The most important insight has nothing to do with code. It's about distillation. About identifying what really matters and stripping away the rest. A model with 6 well-chosen features works better than one with 76 noisy ones. Complicated is not better.
Vad är ett GAN?What is a GAN?

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.

# GAN Training Loop (simplified) for epoch in range(epochs): # 1. Train Discriminator real_pred = D(real_images) # Should give 1 (real) fake_pred = D(G(noise)) # Should give 0 (fake) d_loss = BCE(real_pred, 1) + BCE(fake_pred, 0) # 2. Train Generator fake_pred = D(G(noise)) # Generator wants D to give 1 g_loss = BCE(fake_pred, 1) # "Fool" the discriminator
Kända GAN-projekt (Inspiration)Famous GAN Projects (Inspiration)
[thispersondoesnotexist.com]

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.

[NVIDIA StyleGAN]

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.

[thisartworkdoesnotexist]

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]

Artbreeder

Låter användare "blanda" bilder via interpolation i GAN:ets latenta rum.Lets users "blend" images using GAN latent space interpolation.

Min versionshistorik (v1-v18)My Version History (v1-v18)
v1-v3 - Grundläggande experimentv1-v3 - Basic experiments Nov 2025

Första försöken med vanilla GAN. Problem: mode collapse, instabil träning.First attempts with vanilla GAN. Problems: mode collapse, unstable training.

v4-v6 - Kompositional GANv4-v6 - Compositional GAN Dec 2025

Testade separata generatorer för objekt och bakgrund. Mask-preträning, contrastive learning.Tested separate generators for object and background. Mask pretrain, contrastive learning.

LÄRDOM:LESSON: För komplicerat, för många rörliga delar.Too complicated, too many moving parts.
v7-v8 - Blandat datasetv7-v8 - Mixed dataset Dec 2025

Dataset: 5684 bilder men blandat innehåll (skärmdumpar, memes, personer).Dataset: 5684 images but mixed content (screenshots, memes, people).

LÄRDOM:LESSON: Datakvalitet är MYCKET viktigare än kvantitet!Data quality is MUCH more important than quantity!
v9-v10 - Rensat datasetv9-v10 - Cleaned dataset Jan 2026

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.

LÄRDOM:LESSON: Färre egenskaper = tydligare signal. Modellen "förvirras" av för många indata.Fewer features = clearer signal. Model gets "confused" by too many inputs.
v11-v15 - Optimeringv11-v15 - Optimization Jan 19-24, 2026

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.

v16-v18 - ADA-kollapsv16-v18 - ADA collapse Jan 24-26, 2026

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.

SLUTSATS:CONCLUSION: GAN-träning är i grunden instabilt för små dataset. Dags att prova Diffusion!GAN training is fundamentally unstable for small datasets. Time to try Diffusion!
StyleGAN3 Test Jan 2026

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.

Exempelbilder från GAN-experimentSample Images from GAN Experiments

v10 - Rensat dataset:v10 - Cleaned dataset:

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

Kodattribution och utvecklingsprocessCode Attribution & Development Process

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ådeAreaExempelExamples
Idé och konceptIdea & ConceptBeslutet 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 curationSamlade, sorterade, rensade ~7000 av mina egna foton (5684 → 2310)Collected, sorted, cleaned ~7000 of my own photos (5684 → 2310)
Val av egenskaperFeature selectionValde vilka 76 egenskaper som skulle extraheras, skrev extraktionsskriptChose which 76 features to extract, wrote extraction scripts
ExperimentdesignExperiment design18 versioner med olika ansatser: masker, färre egenskaper, ADA-tuning18 versions, trying different approaches: masks, fewer features, ADA tuning
TräningskonfigurationTraining configLearning rates, batchstorlek, r1_gamma, ada_target - allt justerat manuelltLearning rates, batch size, r1_gamma, ada_target - all tuned manually
Övervakning och analysMonitoring & analysisFöljde ADA-p, loss-kurvor, identifierade mode collapseWatched ADA-p, loss curves, detected mode collapse
KodstrukturCode structureOrganiserade 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ådeAreaTyp av hjälpType of help
Monotona beräkningarMonotonous calculationsSkriva 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ökningDebuggingHitta varför mode collapse inträffade, tensor-dimensionsmissmatchningarFinding why mode collapse happened, tensor dimension mismatches
Konkreta exempelConcrete examplesVisa hur ett koncept ser ut i faktisk kod, inte bara i teorinShowing how a concept looks in actual code, not just theory
Hitta referenserFinding referencesLokalisera 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
Källa:Source: Officiellt NVIDIA StyleGAN2-ADA-arkivOfficial NVIDIA StyleGAN2-ADA repository
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)
SAMMANFATTNINGIN SUMMARY
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.
Tekniska detaljerTechnical Details

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):

g_lr: 0.001 # Generator learning rate d_lr: 0.00025 # Discriminator LR (4x lower) r1_gamma: 20.0 # R1 regularization ada_target: 0.6 # ADA augmentation target style_mixing: 0.9 # Style mixing probability
Sammanfattning: Vad vi lärde ossSummary: What We Learned
1. Datakvalitet > kvantitet1. Data quality > quantity
2310 rena konstbilder >> 5684 blandade bilder2310 clean art images >> 5684 mixed images
2. Färre egenskaper = bättre2. Fewer features = better
76 egenskaper fungerade okej, 148 var för många76 features worked ok, 148 was too many
3. GAN-träning är instabilt3. GAN training is unstable
Kräver konstant övervakning, finjustering av lr-ratio, r1_gammaRequires constant monitoring, fine-tuning of lr-ratio, r1_gamma
4. Hårdvara spelar roll4. Hardware matters
GTX 1660 Super (6 GB) klarar StyleGAN2 men inte StyleGAN3GTX 1660 Super (6GB) works for StyleGAN2 but not StyleGAN3
5. Masker är svåra5. Masks are hard
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.
SLUTSATS:CONCLUSION: GAN är kraftfullt men diffusion ger stabilare träning för små dataset. GAN is powerful but diffusion gives more stable training for small datasets.

→ Se Diffusion v2 (nuvarande modell)→ See Diffusion v2 (current model)
PappersreferenserPaper References
  • 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)