# Technical Documentation ## Product Shape VintageGAN is a controllable vintage image synthesis prototype. It should feel like a filter tool at inference time, but the academic value comes from proving that a conditional model can learn the mapping from a clean image and six control values to a vintage target image. ## Condition Vector Canonical order: ```text grain, scratch, dust, vignette, color_shift, blur ``` Each value is normalized to `[0, 1]`. Presets are stored in `configs/presets.yaml` and are not hidden inside notebooks. ## Architecture - Generator: custom conditioned U-Net style encoder/decoder. - Conditioning: spatial replication at input plus MLP projection at bottleneck. - Discriminator: conditional PatchGAN with dynamic patch-grid output. - Defects: procedural targets applied in a fixed order. The current generator is not a torchvision ResNet34 model. ## Training Profiles - `local_256`: RTX 3050 4GB class local experimentation. - `cloud_384`: medium cloud GPU experiments. - `cloud_512`: larger cloud GPU experiments. All profiles live in `configs/training_config.yaml`. ## Losses - Pixel reconstruction loss. - Optional VGG perceptual loss. - Adversarial loss for GAN phase. - Optional detector-backed consistency loss. Consistency loss should only be treated as academically meaningful after detectors are trained and validated. ## Evaluation No metric in this project should be hand-entered. Valid metrics must come from evaluation code and saved artifacts. Recommended reporting: - SSIM/PSNR against synthetic procedural targets, with limitations stated. - FID only against a real, licensed vintage reference set. - Condition MAE only with validated detectors. - Ablations for key losses and condition strengths. ## Reproducibility Each result should include: - git commit, - config profile, - dataset source and license, - split seed, - hardware, - training duration, - checkpoint path, - generated samples, - metrics artifact.