LibreAI / Image / contrastive-unpaired-translation
// image · taesungp/contrastive-unpaired-translation

contrastive-unpaired-translation

CUT — contrastive unpaired image-to-image translation in PyTorch, faster and lighter than CycleGAN (ECCV 2020)

★ 2.6k stars⑂ 452 forksNOASSERTIONupdated 2023-09
▦ visual — this project's README ships no embeddable screenshot,
so here's a placeholder. The guide below is complete regardless.
// project facts

Project facts

contrastive-unpaired-translation is an open-source image project by taesungp (taesungp/contrastive-unpaired-translation on GitHub). It has 2,556 GitHub stars and 452 forks, is released under the NOASSERTION license, and was last updated on GitHub on 5 September 2023.

GitHub stars
2,556
Forks
452
License
NOASSERTION
Last updated on GitHub
5 September 2023
Category
Image
Listing
Full install guide
Official site
Official site
// how it works

How it works

  1. Clarify your goal

    Gather two unpaired image collections (domains A and B) — e.g. horses and zebras — or download one of the provided datasets; decide CUT vs FastCUT vs single-image SinCUT.

  2. Clone the repo

    Clone into a folder named CUT, as the README's getting-started shows.

  3. Install dependencies

    pip install -r requirements.txt (or conda env create -f environment.yml); optionally start a visdom server to watch training.

  4. Train and test

    Download a dataset with the provided script, train with train.py, then generate results with test.py — or skip training using the pretrained models and launcher scripts.

// features

Why people love it

PatchNCE contrastive loss

Patchwise contrastive learning ties corresponding patches of input and output together, replacing cycle consistency and its inverse network.

Faster, lighter than CycleGAN

The authors report faster training and lower memory than CycleGAN, with stronger distribution matching in their experiments.

FastCUT variant

A lighter configuration (no identity loss, higher lambda_NCE) described as using half the GPU memory and training twice as fast as CycleGAN.

Single-image translation (SinCUT)

Each 'domain' can be just one image, using StyleGAN2-based components adopted in the repo.

Pretrained models

Downloadable pretrained checkpoints (Cityscapes, Horse2Zebra, Cat2Dog) with launcher scripts and FID evaluation instructions.

Launcher scripts

Experiment launchers generate the long train/test command lines for the provided datasets.

Advertisement
// run it

Run it yourself

  1. Clone the repo

    Clone CUT into a directory named CUT, as the README shows.

    git clone https://github.com/taesungp/contrastive-unpaired-translation.git
    cd contrastive-unpaired-translation
  2. Install dependencies

    Install PyTorch and the other requirements with pip (or use the conda environment file).

    pip install -r requirements.txt
  3. Train and test

    Download the example dataset, train CUT, then run the test script.

    bash ./datasets/download_cut_dataset.sh grumpifycat
    python train.py --dataroot ./datasets/grumpifycat --name grumpycat_CUT --CUT_mode CUT
    python test.py --dataroot ./datasets/grumpifycat --name grumpycat_CUT --CUT_mode CUT --phase train
// use cases

What you can build

Advertisement
// faq

Questions, answered

Who maintains CUT?

The authors — Taesung Park, Alexei A. Efros, Richard Zhang and Jun-Yan Zhu (UC Berkeley / Adobe Research) — published it with their ECCV 2020 paper.

Is it free?

The code is public research code; GitHub lists its license as NOASSERTION, so read the repository's license file before reusing it commercially.

Does it need a paid API key?

No — training and inference run locally in PyTorch on your own GPU.

How does it compare to CycleGAN?

CycleGAN enforces cycle consistency with a second generator. CUT uses a contrastive PatchNCE loss instead, which the authors show trains faster with less memory; FastCUT is the even lighter option.

How do I get started?

Clone, pip install -r requirements.txt, download the grumpifycat dataset, and run the train.py command from the README.

// keep exploring

Similar tools

Image

pytorch-CycleGAN-and-pix2pix

The classic PyTorch implementation of CycleGAN and pix2pix for image-to-image translation

★ 25.3k starsNOASSERTION
View guide →
Image

diffusers

🤗 Diffusers: State-of-the-art diffusion models for image, video, and audio generation in PyTorch.

★ 34.6k starsApache-2.0
View guide →
Image

DragGAN

Unofficial DragGAN implementation: drag points on a GAN image to edit it interactively

★ 4.9k starsNOASSERTION
View guide →
Image

EcomGen

Local-first AI e-commerce image suite generator for solo sellers

★ 133 starsMIT
View guide →
Image

pollinations-image-lab

Modern AI image lab on Pollinations.ai — models, seeds, history, transparency

★ 117 starsMIT
View guide →
Image

photoshop-ai-smart-enhance

Photoshop-ai-smart-enhance — ai-powered image enhancement extension for adobe photos, o...

★ 112 starsCustom
View guide →
// alternatives

Alternatives in Image

The most-starred other Image projects in the LibreAI catalogue — the realistic shortlist if contrastive-unpaired-translation is not the right fit.

Get contrastive-unpaired-translation

Free and open — grab the source, star the repo, and start creating.