CycleGAN without the archaeology
A readable PyTorch re-implementation for developers who want to understand how image-to-image translation actually works.

What it does Trains two neural networks to translate images between domains—horses to zebras, Monet to photos, summer to winter—without needing paired examples. You provide two folders of unlabeled images; the model learns the mapping by cycling translations back and forcing consistency.
The interesting bit The author explicitly calls this “a cleaner and less obscured implementation” of the official Berkeley code. That honesty is the feature: the README walks through dataset setup, training flags, and live Visdom monitoring without burying you in abstractions. It is essentially educational glue code, and it knows it.
Key highlights
- Ships with a
./download_datasethelper for 12 standard CycleGAN datasets (horse2zebra, monet2photo, cityscapes, etc.) - Directory structure is dead simple:
train/A,train/B,test/A,test/B - Live training visualization via Visdom at
localhost:8097 - Saves generator and discriminator weights automatically to an output directory
- GPL v3 licensed, with clear attribution to the original CycleGAN authors
Caveats
- Targets Python 3.6.x only; untested on earlier versions
- GPU strongly advised; CPU training is technically possible but not practically recommended
- No mention of mixed-precision training, distributed training, or modern PyTorch features
Verdict
Grab this if you are teaching, learning, or debugging CycleGAN internals. Skip it if you need production-scale training or the latest PyTorch optimizations; the official junyanz/pytorch-CycleGAN-and-pix2pix repo has more features and maintenance.