StripeCycle: Modular CycleGAN in PyTorch
A modular, from-scratch CycleGAN reimplementation in PyTorch for unpaired image-to-image translation — config-driven training, DDP, AMP, and resumable checkpoints.
StripeCycle is a modular, from-scratch reimplementation of CycleGAN (Zhu et al., 2017) in PyTorch — built to be read end-to-end and trained on your own data, not used as a black box.
Overview. The codebase separates the ResNet generator, PatchGAN discriminator, adversarial + cycle-consistency + identity losses, and image replay buffer into small, readable modules. Training is config-driven (YAML), supports single-node multi-GPU via DistributedDataParallel, mixed precision, full resumable checkpoints, and TensorBoard logging (optional Weights & Biases). A generic UnpairedImageDataset works with any two image folders; horse2zebra is included as the default benchmark.