One input, many plausible outputs: a GAN that refuses to commit
BicycleGAN generates diverse, realistic image translations from a single input—no more one-to-one mapping trap.

What it does BicycleGAN is a PyTorch implementation of a multimodal image-to-image translation model. Feed it a night scene, and it produces multiple plausible day versions with different lighting, skies, and clouds. It also handles edges-to-shoes, edges-to-handbags, maps-to-aerial, and facade labels-to-photos. The catch: it needs paired training data, unlike its sibling CycleGAN.
The interesting bit Standard image-to-image models are deterministic—one input, one output. BicycleGAN breaks that lock by learning a distribution of possible outputs, then lets you sample from it. The “Bicycle” in the name refers to the bidirectional training loop between the image and latent space, though the README doesn’t dwell on the etymology.
Key highlights
- Pre-trained models available for five datasets: edges2shoes, edges2handbags, night2day, facades, and maps
- Generates morphing videos by interpolating latent vectors (see the day-to-night GIF)
- Evaluation includes both realism (human AMT tests) and diversity (LPIPS perceptual distance between samples)
- Synchronized latent vector mode lets you control variation systematically
- Code borrows heavily from the well-maintained pytorch-CycleGAN-and-pix2pix repo
Caveats
- Requires paired training data, so you can’t just throw two unaligned image folders at it
- Targets PyTorch 0.4.1+; there’s an older branch for ancient PyTorch versions, but modern compatibility is unclear
- Diversity metric setup is manual: sample 20 z-vectors, compute LPIPS pairwise, average 1900 distances
Verdict Worth a look if you need controllable, varied outputs from paired image data—fashion design, scene relighting, or architectural visualization. Skip it if you only have unpaired data or need a plug-and-play API; this is research code with shell scripts, not a library.