NICE-GAN — Official PyTorch Implementation Reusing Discriminators for Encoding: Towards Unsupervised Image-to-Image Translation

Overview

NICE-GAN — Official PyTorch Implementation [Project Page]

Reusing Discriminators for Encoding: Towards Unsupervised Image-to-Image Translation

Paper

Reusing Discriminators for Encoding: Towards Unsupervised Image-to-Image Translation

Abstract Unsupervised image-to-image translation is a central task in computer vision. Current translation frameworks will abandon the discriminator once the training process is completed. This paper contends a novel role of the discriminator by reusing it for encoding the images of the target domain. The proposed architecture, termed as NICE-GAN, exhibits two advantageous patterns over previous approaches: First, it is more compact since no independent encoding component is required; Second, this plug-in encoder is directly trained by the adversary loss, making it more informative and trained more effectively if a multi-scale discriminator is applied. The main issue in NICE-GAN is the coupling of translation with discrimination along the encoder, which could incur training inconsistency when we play the min-max game via GAN. To tackle this issue, we develop a decoupled training strategy by which the encoder is only trained when maximizing the adversary loss while keeping frozen otherwise. Extensive experiments on four popular benchmarks demonstrate the superior performance of NICE-GAN over state-of-the-art methods in terms of FID, KID, and also human preference. Comprehensive ablation studies are also carried out to isolate the validity of each proposed component.

Author

Runfa Chen, Wenbing Huang, Binghui Huang, Fuchun Sun, Bin Fang Tsinghua Robot Learning Lab

Citation

If you find this code useful for your research, please cite our paper:

@InProceedings{Chen_2020_CVPR,
author = {Chen, Runfa and Huang, Wenbing and Huang, Binghui and Sun, Fuchun and Fang, Bin},
title = {Reusing Discriminators for Encoding: Towards Unsupervised Image-to-Image Translation},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2020}
}

Usage

├── dataset
   └── YOUR_DATASET_NAME
       ├── trainA
           ├── xxx.jpg (name, format doesn't matter)
           ├── yyy.png
           └── ...
       ├── trainB
           ├── zzz.jpg
           ├── www.png
           └── ...
       ├── testA
           ├── aaa.jpg 
           ├── bbb.png
           └── ...
       └── testB
           ├── ccc.jpg 
           ├── ddd.png
           └── ...

Prerequisites

  • Python 3.6.9
  • Pytorch 1.1.0 and torchvision (https://pytorch.org/)
  • TensorboardX
  • Tensorflow (for tensorboard usage)
  • CUDA 10.0.130, CuDNN 7.3, and Ubuntu 16.04.

Train

> python main.py --dataset cat2dog
  • If the memory of gpu is not sufficient, set --light to True

Restoring from the previous checkpoint

> python main.py --dataset cat2dog --resume True

Test

> python main.py --dataset cat2dog --phase test

Metric

> python fid_kid.py testA fakeA --mmd-var 
  • You can use gpu, set --gpu to the index of gpu, such as --gpu 0

Network

Comparison

User study

t-SNE

Heatmaps

Shared latent space

Acknowledgments

Our code is inspired by UGATIT-pytorch.

Comments
  • Light version

    Light version

    Hello! Could you please clarify what is the "light" version of your network? As I see in issues a lot of people have a problem with training a full version of NICE GAN and use light version. Did you do an experiment with this version? What were the results(metrics)? I could not find this information in your article. Firstly I thought that light = NICE GAN*(are the version that the generator network is composed of only four residual blocks) but after code viewing then I understood that it is not.

    opened by neeek2303 5
  • About the previous checkpoint on cat2dog

    About the previous checkpoint on cat2dog

    Thank you for your great work. I have downloaded your previous checkpoint on cat2dog from google drive. The cat2dog_params_latest.pt is put into the folder results. I run code on the google colab. I run main.py by python3 main.py --dataset cat2dog --resume True --light True. The error occurs.

    Traceback (most recent call last):
      File "main.py", line 85, in <module>
        main()
      File "main.py", line 77, in main
        gan.train()
      File "/content/gdrive/My Drive/GAN/NICE-GAN-pytorch/NICE.py", line 155, in train
        self.gen2B.load_state_dict(params['gen2B'])
      File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 1052, in load_state_dict
        self.__class__.__name__, "\n\t".join(error_msgs)))
    RuntimeError: Error(s) in loading state_dict for ResnetGenerator:
    	Missing key(s) in state_dict: "total_ops", "total_params", "UpBlock1_1.total_ops", "UpBlock1_1.total_params", "UpBlock1_1.pad1.total_ops", "UpBlock1_1.pad1.total_params", "UpBlock1_1.norm1.total_ops", "UpBlock1_1.norm1.total_params", "UpBlock1_1.pad2.total_ops", "UpBlock1_1.pad2.total_params", "UpBlock1_1.norm2.total_ops", "UpBlock1_1.norm2.total_params", "UpBlock1_2.total_ops", "UpBlock1_2.total_params", "UpBlock1_2.pad1.total_ops", "UpBlock1_2.pad1.total_params", "UpBlock1_2.norm1.total_ops", "UpBlock1_2.norm1.total_params", "UpBlock1_2.pad2.total_ops", "UpBlock1_2.pad2.total_params", "UpBlock1_2.norm2.total_ops", "UpBlock1_2.norm2.total_params", "UpBlock1_3.total_ops", "UpBlock1_3.total_params", "UpBlock1_3.pad1.total_ops", "UpBlock1_3.pad1.total_params", "UpBlock1_3.norm1.total_ops", "UpBlock1_3.norm1.total_params", "UpBlock1_3.pad2.total_ops", "UpBlock1_3.pad2.total_params", "UpBlock1_3.norm2.total_ops", "UpBlock1_3.norm2.total_params", "UpBlock1_4.total_ops", "UpBlock1_4.total_params", "UpBlock1_4.pad1.total_ops", "UpBlock1_4.pad1.total_params", "UpBlock1_4.norm1.total_ops", "UpBlock1_4.norm1.total_params", "UpBlock1_4.pad2.total_ops", "UpBlock1_4.pad2.total_params", "UpBlock1_4.norm2.total_ops", "UpBlock1_4.norm2.total_params", "UpBlock1_5.total_ops", "UpBlock1_5.total_params", "UpBlock1_5.pad1.total_ops", "UpBlock1_5.pad1.total_params", "UpBlock1_5.norm1.total_ops", "UpBlock1_5.norm1.total_params", "UpBlock1_5.pad2.total_ops", "UpBlock1_5.pad2.total_params", "UpBlock1_5.norm2.total_ops", "UpBlock1_5.norm2.total_params", "UpBlock1_6.total_ops", "UpBlock1_6.total_params", "UpBlock1_6.pad1.total_ops", "UpBlock1_6.pad1.total_params", "UpBlock1_6.norm1.total_ops", "UpBlock1_6.norm1.total_params", "UpBlock1_6.pad2.total_ops", "UpBlock1_6.pad2.total_params", "UpBlock1_6.norm2.total_ops", "UpBlock1_6.norm2.total_params", "FC.total_ops", "FC.total_params", "UpBlock0.total_ops", "UpBlock0.total_params", "UpBlock0.0.total_ops", "UpBlock0.0.total_params", "UpBlock0.2.total_ops", "UpBlock0.2.total_params", "UpBlock2.total_ops", "UpBlock2.total_params", "UpBlock2.0.total_ops", "UpBlock2.0.total_params", "UpBlock2.2.total_ops", "UpBlock2.2.total_params", "UpBlock2.5.total_ops", "UpBlock2.5.total_params", "UpBlock2.6.total_ops", "UpBlock2.6.total_params", "UpBlock2.8.total_ops", "UpBlock2.8.total_params", "UpBlock2.10.total_ops", "UpBlock2.10.total_params", "UpBlock2.13.total_ops", "UpBlock2.13.total_params", "UpBlock2.14.total_ops", "UpBlock2.14.total_params", "UpBlock2.16.total_ops", "UpBlock2.16.total_params", "UpBlock2.18.total_ops", "UpBlock2.18.total_params". 
    

    Could you tell me what's wrong?

    opened by Star-Stone 3
  • About the number of parameters of the generator

    About the number of parameters of the generator

    Great job! I would like to quote your paper, but after testing, the number of generator parameters is quite different from that in the paper. image Can you tell me what's wrong? I call your code directly

    opened by Kid-Liet 3
  • About the memory of gpu

    About the memory of gpu

    thanks for sharing your good work! I want to know how big of the gpu memory is enough for training of 256*256 images? I have a 12 G gpu and it seems too small to train even for the light version.

    opened by mmmll23 2
  • Color disorder when I apply it to generate the license plate

    Color disorder when I apply it to generate the license plate

    企业微信截图_15995298478073 First, I get the bad result as above picture when I trained the NICEGAN on various types of license plates.Then, I try to train it on the one of license plates, such as single blue, but the result also is terrible as the following images. image image

    I wander why this happens? @alpc91

    opened by stillstream 2
  • test has error

    test has error

    RuntimeError: Error(s) in loading state_dict for ResnetGenerator: size mismatch for FC.0.weight: copying a param with shape torch.Size([256, 256]) from checkpoint, the shape in current model is torch.Size([256, 1048576]).

    opened by zjy9779 2
  • Errors on feat. dimension / missing keys in the test script

    Errors on feat. dimension / missing keys in the test script

    preliminary: I use PyTorch 1.2.0 (since 1.1.0 throws an error in my environment unfortunately..) I hope the error is not because of this;

    When I try your demo script using the pre-trained model that you provide, $ python main.py --dataset cat2dog --phase test the following error happened. I have two questions; (i) where do total_ops or total_params come from? (ii) Should I use the pre-trained model with --light True args?

    Traceback (most recent call last):
      File "main.py", line 85, in <module>
        main()
      File "main.py", line 81, in main
        gan.test()
      File "/home3/inoue/experiment/im2im/NICE-GAN-pytorch/NICE.py", line 442, in test
        self.load()
      File "/home3/inoue/experiment/im2im/NICE-GAN-pytorch/NICE.py", line 433, in load
        self.gen2B.load_state_dict(params['gen2B'])
      File "/home3/inoue/experiment/im2im/NICE-GAN-pytorch/.env/lib/python3.7/site-packages/torch/nn/modules/module.py", line 845, in load_state_dict
        self.__class__.__name__, "\n\t".join(error_msgs)))
    RuntimeError: Error(s) in loading state_dict for ResnetGenerator:
            Missing key(s) in state_dict: "total_ops", "total_params", "UpBlock1_1.total_ops", "UpBlock1_1.total_params", "UpBlock1_1.pad1.total_ops", "UpBlock1_1.pad1.total_params", "UpBlock1_1.norm1.total_ops", "UpBlock1_1.norm1.total_params", "UpBlock1_1.pad2.total_ops", "UpBlock1_1.pad2.total_params", "UpBlock1_1.norm2.total_ops", "UpBlock1_1.norm2.total_params", "UpBlock1_2.total_ops", "UpBlock1_2.total_params", "UpBlock1_2.pad1.total_ops", "UpBlock1_2.pad1.total_params", "UpBlock1_2.norm1.total_ops", "UpBlock1_2.norm1.total_params", "UpBlock1_2.pad2.total_ops", "UpBlock1_2.pad2.total_params", "UpBlock1_2.norm2.total_ops", "UpBlock1_2.norm2.total_params", "UpBlock1_3.total_ops", "UpBlock1_3.total_params", "UpBlock1_3.pad1.total_ops", "UpBlock1_3.pad1.total_params", "UpBlock1_3.norm1.total_ops", "UpBlock1_3.norm1.total_params", "UpBlock1_3.pad2.total_ops", "UpBlock1_3.pad2.total_params", "UpBlock1_3.norm2.total_ops", "UpBlock1_3.norm2.total_params", "UpBlock1_4.total_ops", "UpBlock1_4.total_params", "UpBlock1_4.pad1.total_ops", "UpBlock1_4.pad1.total_params", "UpBlock1_4.norm1.total_ops", "UpBlock1_4.norm1.total_params", "UpBlock1_4.pad2.total_ops", "UpBlock1_4.pad2.total_params", "UpBlock1_4.norm2.total_ops", "UpBlock1_4.norm2.total_params", "UpBlock1_5.total_ops", "UpBlock1_5.total_params", "UpBlock1_5.pad1.total_ops", "UpBlock1_5.pad1.total_params", "UpBlock1_5.norm1.total_ops", "UpBlock1_5.norm1.total_params", "UpBlock1_5.pad2.total_ops", "UpBlock1_5.pad2.total_params", "UpBlock1_5.norm2.total_ops", "UpBlock1_5.norm2.total_params", "UpBlock1_6.total_ops", "UpBlock1_6.total_params", "UpBlock1_6.pad1.total_ops", "UpBlock1_6.pad1.total_params", "UpBlock1_6.norm1.total_ops", "UpBlock1_6.norm1.total_params", "UpBlock1_6.pad2.total_ops", "UpBlock1_6.pad2.total_params", "UpBlock1_6.norm2.total_ops", "UpBlock1_6.norm2.total_params", "FC.total_ops", "FC.total_params", "UpBlock0.total_ops", "UpBlock0.total_params", "UpBlock0.0.total_ops", "UpBlock0.0.total_params", "UpBlock0.2.total_ops", "UpBlock0.2.total_params", "UpBlock2.total_ops", "UpBlock2.total_params", "UpBlock2.0.total_ops", "UpBlock2.0.total_params", "UpBlock2.2.total_ops", "UpBlock2.2.total_params", "UpBlock2.5.total_ops", "UpBlock2.5.total_params", "UpBlock2.6.total_ops", "UpBlock2.6.total_params", "UpBlock2.8.total_ops", "UpBlock2.8.total_params", "UpBlock2.10.total_ops", "UpBlock2.10.total_params", "UpBlock2.13.total_ops", "UpBlock2.13.total_params", "UpBlock2.14.total_ops", "UpBlock2.14.total_params", "UpBlock2.16.total_ops", "UpBlock2.16.total_params", "UpBlock2.18.total_ops", "UpBlock2.18.total_params".
            size mismatch for FC.0.weight: copying a param with shape torch.Size([256, 256]) from checkpoint, the shape in current model is torch.Size([256, 1048576]).
    
    opened by naoto0804 2
  • Train

    Train

    Hello, I want to know what is the difference between the network model when light is true or false? It seems that the parameters of FC layer are different in the code, but why is there insufficient display when light is true? I used my own training set to train. The result test was very poor. Can you give me an answer? Looking forward to your recovery!

    opened by dingyan1478 1
  • Total iterations 300K or 1000K or 100K?

    Total iterations 300K or 1000K or 100K?

    Hi, thanks for your great work.

    I noticed that your paper uses 100K while the total iteration is set to 300K in the code and UGATIT uses 1000K, which one do you use to train the model?

    Thanks!

    opened by veroveroxie 1
  • RuntimeError: Error(s) in loading state_dict for ResnetGenerator:

    RuntimeError: Error(s) in loading state_dict for ResnetGenerator:

    When I test trained model on my dataset, I come cross the following issue: RuntimeError: Error(s) in loading state_dict for ResnetGenerator: size mismatch for FC.0.weight: copying a param with shape torch.Size([256, 256]) from checkpoint, the shape in current model is torch.Size([256, 1048576]). I'm confused about testing no error when training, but I download the trained model to test occuring the above problem.

    opened by stillstream 1
  • Use NICE as a plug-in startegy into current I2I models.

    Use NICE as a plug-in startegy into current I2I models.

    Very nice work!

    I wonder whether that the NICE strategy can be used as a plug-in component into current I2I models like UNIT or DRIT. Did you observe any improvements when replacing the encoders in these models with its discriminators?

    opened by ddlee-cn 1
  • Error when use previous checkpoints

    Error when use previous checkpoints

    When I run python main.py --dataset cat2dog --resume True , it shows that:

    RuntimeError: Error(s) in loading state_dict for ResnetGenerator: Missing key(s) in state_dict: "total_ops", "total_params", "UpBlock1_1.total_ops", "UpBlock1_1.total_params", "UpBlock1_1.pad1.total_ops", "UpBlock1_1.pad1.total_params", "UpBlock1_1.norm1.total_ops", "UpBlock1_1.norm1.total_pa rams", "UpBlock1_1.pad2.total_ops", "UpBlock1_1.pad2.total_params", "UpBlock1_1.norm2.total_ops", "UpBlock1_1.norm2.total_params", "UpBlock1_2.total_ops", "UpBlock1_2.total_params", "UpBlock1_2.pad1.total_ops", "UpBlock1_2.pad1.total_p arams", "UpBlock1_2.norm1.total_ops", "UpBlock1_2.norm1.total_params", "UpBlock1_2.pad2.total_ops", "UpBlock1_2.pad2.total_params", "UpBlock1_2.norm2.total_ops", "UpBlock1_2.norm2.total_params", "UpBlock1_3.total_ops", "UpBlock1_3.tota l_params", "UpBlock1_3.pad1.total_ops", "UpBlock1_3.pad1.total_params", "UpBlock1_3.norm1.total_ops", "UpBlock1_3.norm1.total_params", "UpBlock1_3.pad2.total_ops", "UpBlock1_3.pad2.total_params", "UpBlock1_3.norm2.total_ops", "UpBlock1 _3.norm2.total_params", "UpBlock1_4.total_ops", "UpBlock1_4.total_params", "UpBlock1_4.pad1.total_ops", "UpBlock1_4.pad1.total_params", "UpBlock1_4.norm1.total_ops", "UpBlock1_4.norm1.total_params", "UpBlock1_4.pad2.total_ops", "UpBloc k1_4.pad2.total_params", "UpBlock1_4.norm2.total_ops", "UpBlock1_4.norm2.total_params", "UpBlock1_5.total_ops", "UpBlock1_5.total_params", "UpBlock1_5.pad1.total_ops", "UpBlock1_5.pad1.total_params", "UpBlock1_5.norm1.total_ops", "UpBl ock1_5.norm1.total_params", "UpBlock1_5.pad2.total_ops", "UpBlock1_5.pad2.total_params", "UpBlock1_5.norm2.total_ops", "UpBlock1_5.norm2.total_params", "UpBlock1_6.total_ops", "UpBlock1_6.total_params", "UpBlock1_6.pad1.total_ops", "Up Block1_6.pad1.total_params", "UpBlock1_6.norm1.total_ops", "UpBlock1_6.norm1.total_params", "UpBlock1_6.pad2.total_ops", "UpBlock1_6.pad2.total_params", "UpBlock1_6.norm2.total_ops", "UpBlock1_6.norm2.total_params", "FC.total_ops", "FC .total_params", "UpBlock0.total_ops", "UpBlock0.total_params", "UpBlock0.0.total_ops", "UpBlock0.0.total_params", "UpBlock0.2.total_ops", "UpBlock0.2.total_params", "UpBlock2.total_ops", "UpBlock2.total_params", "UpBlock2.0.total_ops", "UpBlock2.0.total_params", "UpBlock2.2.total_ops", "UpBlock2.2.total_params", "UpBlock2.5.total_ops", "UpBlock2.5.total_params", "UpBlock2.6.total_ops", "UpBlock2.6.total_params", "UpBlock2.8.total_ops", "UpBlock2.8.total_params", "Up Block2.10.total_ops", "UpBlock2.10.total_params", "UpBlock2.13.total_ops", "UpBlock2.13.total_params", "UpBlock2.14.total_ops", "UpBlock2.14.total_params", "UpBlock2.16.total_ops", "UpBlock2.16.total_params", "UpBlock2.18.total_ops", " UpBlock2.18.total_params".

    opened by Cosica 0
  • question about NAN

    question about NAN

    When I train the model with learning rate:0.0001,after several echos,I got "d_loss: nan, g_loss: nan" ,how can I deal with this situation? Thanks a lot!

    opened by yan-yuchen 0
  • 请问如何准确计算parameters和FLOPs?

    请问如何准确计算parameters和FLOPs?

    您好,我在用profile计算网络中的参数量、计算量时出现这样的情况 Cannot find rule for <class 'networks.ResnetAdaILNBlock'> Cannot find rule for <class 'networks.ResnetAdaILNBlock'>. Treat it as zero Macs and zero Params. ... 这样计算出的结果是不正确的,请问如何正确计算呢?

    opened by WHUTMENGMENG 0
  • Training collapses after  72k iterations

    Training collapses after 72k iterations

    I am currently trying to test the model on the maps data set (satellite and card images from google maps). The training went well until the 72k iteration. Afterward, the training collapses or rather no result is returned:

    Images for A2B until 72000 iterations: A2B_0072000

    Images for A2B after 72000 iterations: A2B_0073000

    Images for B2A until 72000 iterations: B2A_0072000

    Images for B2A until 72000 iterations: B2A_0073000

    Any idea what could have happened here?

    opened by Lauenburg 2
Unofficial PyTorch Implementation of UnivNet: A Neural Vocoder with Multi-Resolution Spectrogram Discriminators for High-Fidelity Waveform Generation

UnivNet UnivNet: A Neural Vocoder with Multi-Resolution Spectrogram Discriminators for High-Fidelity Waveform Generation This is an unofficial PyTorch

MINDs Lab 54 Aug 30, 2021
UnivNet: A Neural Vocoder with Multi-Resolution Spectrogram Discriminators for High-Fidelity Waveform Generation

UnivNet UnivNet: A Neural Vocoder with Multi-Resolution Spectrogram Discriminators for High-Fidelity Waveform Generation. Training python train.py --c

Rishikesh (ऋषिकेश) 55 Dec 26, 2022
FuseDream: Training-Free Text-to-Image Generationwith Improved CLIP+GAN Space OptimizationFuseDream: Training-Free Text-to-Image Generationwith Improved CLIP+GAN Space Optimization

FuseDream This repo contains code for our paper (paper link): FuseDream: Training-Free Text-to-Image Generation with Improved CLIP+GAN Space Optimizat

XCL 191 Dec 31, 2022
Official pytorch implementation of paper "Image-to-image Translation via Hierarchical Style Disentanglement".

HiSD: Image-to-image Translation via Hierarchical Style Disentanglement Official pytorch implementation of paper "Image-to-image Translation

null 364 Dec 14, 2022
pytorch implementation of "Contrastive Multiview Coding", "Momentum Contrast for Unsupervised Visual Representation Learning", and "Unsupervised Feature Learning via Non-Parametric Instance-level Discrimination"

Unofficial implementation: MoCo: Momentum Contrast for Unsupervised Visual Representation Learning (Paper) InsDis: Unsupervised Feature Learning via N

Zhiqiang Shen 16 Nov 4, 2020
Code for Dual Contrastive Learning for Unsupervised Image-to-Image Translation, NTIRE, CVPRW 2021.

arXiv Dual Contrastive Learning Adversarial Generative Networks (DCLGAN) We provide our PyTorch implementation of DCLGAN, which is a simple yet powerf

null 119 Dec 4, 2022
Unsupervised Image-to-Image Translation

UNIT: UNsupervised Image-to-image Translation Networks Imaginaire Repository We have a reimplementation of the UNIT method that is more performant. It

Ming-Yu Liu 劉洺堉 1.9k Dec 26, 2022
Code of Adverse Weather Image Translation with Asymmetric and Uncertainty aware GAN

Adverse Weather Image Translation with Asymmetric and Uncertainty-aware GAN (AU-GAN) Official Tensorflow implementation of Adverse Weather Image Trans

Jeong-gi Kwak 36 Dec 26, 2022
Pytorch implementation of CVPR2020 paper “VectorNet: Encoding HD Maps and Agent Dynamics from Vectorized Representation”

VectorNet Re-implementation This is the unofficial pytorch implementation of CVPR2020 paper "VectorNet: Encoding HD Maps and Agent Dynamics from Vecto

null 120 Jan 6, 2023
PyTorch implementation of Rethinking Positional Encoding in Language Pre-training

TUPE PyTorch implementation of Rethinking Positional Encoding in Language Pre-training. Quickstart Clone this repository. git clone https://github.com

Jake Tae 5 Jan 27, 2022
House-GAN++: Generative Adversarial Layout Refinement Network towards Intelligent Computational Agent for Professional Architects

House-GAN++ Code and instructions for our paper: House-GAN++: Generative Adversarial Layout Refinement Network towards Intelligent Computational Agent

null 122 Dec 28, 2022
DR-GAN: Automatic Radial Distortion Rectification Using Conditional GAN in Real-Time

DR-GAN: Automatic Radial Distortion Rectification Using Conditional GAN in Real-Time Introduction This is official implementation for DR-GAN (IEEE TCS

Kang Liao 18 Dec 23, 2022
Official pytorch implementation of "Scaling-up Disentanglement for Image Translation", ICCV 2021.

Official pytorch implementation of "Scaling-up Disentanglement for Image Translation", ICCV 2021.

Aviv Gabbay 41 Nov 29, 2022
Official PyTorch implementation of N-ImageNet: Towards Robust, Fine-Grained Object Recognition with Event Cameras (ICCV 2021)

N-ImageNet: Towards Robust, Fine-Grained Object Recognition with Event Cameras Official PyTorch implementation of N-ImageNet: Towards Robust, Fine-Gra

null 32 Dec 26, 2022
Maximum Spatial Perturbation for Image-to-Image Translation (Official Implementation)

MSPC for I2I This repository is by Yanwu Xu and contains the PyTorch source code to reproduce the experiments in our CVPR2022 paper Maximum Spatial Pe

null 51 Dec 14, 2022
Official PyTorch Implementation of GAN-Supervised Dense Visual Alignment

GAN-Supervised Dense Visual Alignment — Official PyTorch Implementation Paper | Project Page | Video This repo contains training, evaluation and visua

null 944 Jan 7, 2023
Official pytorch code for SSC-GAN: Semi-Supervised Single-Stage Controllable GANs for Conditional Fine-Grained Image Generation(ICCV 2021)

SSC-GAN_repo Pytorch implementation for 'Semi-Supervised Single-Stage Controllable GANs for Conditional Fine-Grained Image Generation'.PDF SSC-GAN:Sem

tyty 4 Aug 28, 2022
Official implementation of "Towards Good Practices for Efficiently Annotating Large-Scale Image Classification Datasets" (CVPR2021)

Towards Good Practices for Efficiently Annotating Large-Scale Image Classification Datasets This is the official implementation of "Towards Good Pract

Sanja Fidler's Lab 52 Nov 22, 2022
[CVPR 2021] Unsupervised 3D Shape Completion through GAN Inversion

ShapeInversion Paper Junzhe Zhang, Xinyi Chen, Zhongang Cai, Liang Pan, Haiyu Zhao, Shuai Yi, Chai Kiat Yeo, Bo Dai, Chen Change Loy "Unsupervised 3D

null 100 Dec 22, 2022