TensorFlow 1.0 time capsule: CycleGAN before the hype
A straightforward 2017-era reimplementation of the unpaired image-to-image translation paper, frozen in amber.

What it does
Converts images between two domains—apples to oranges, horses to zebras—without needing paired training data. You download a dataset, stuff it into TFRecords, run train.py, and wait. The repo includes export and inference scripts to turn checkpoints into standalone .pb files for actual use.
The interesting bit
The author is admirably honest: the README is labeled “work in progress,” warns you to restart training if backgrounds invert, and admits you’ll need multiple runs to get anything good. That candor is rarer than the code itself. The TensorBoard screenshot of orange→apple training looking “funny” is a nice touch of realism in a field that usually fakes perfection.
Key highlights
- Implements the full CycleGAN paper in TensorFlow 1.0.0 (yes, 1.0.0)
- Supports LSGAN and standard GAN losses, instance or batch normalization
- Includes image buffer (history replay) with configurable
pool_size - Exports to frozen GraphDef for deployment; pretrained models available in releases
- Resume training from timestamped checkpoints
Caveats
- Stuck on TensorFlow 1.0.0 and Python 3.6.0; essentially archaeological at this point
- README warns of instability: high-contrast inversions mean you restart and pray
- No mention of training time, hardware requirements, or how many “several times” actually is
Verdict
Worth a look if you’re studying GAN history or need a clean, minimal reference implementation to port elsewhere. If you want to actually train something today, use PyTorch and the official repo.