← all repositories
junyanz/BicycleGAN

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.

1.5k stars Python Image · Video · Audio
BicycleGAN
Velocity · 7d
+0.5
★ / day
Trend
steady
star history

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.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.