arXiv | 视频 | [幻灯片](https://github.com/JunlinHan/DCLGAN/blob/main/imgs/DCLGAN_slide.pptx
对偶对比学习对抗生成网络(DCLGAN)
我们提供了DCLGAN的PyTorch实现,这是一个简单而强大的无监督图像到图像转换模型。与CycleGAN相比,DCLGAN能够进行几何变换并获得更真实的结果。与CUT相比,DCLGAN通常更稳健且性能更优。其变体SimDCL(相似度DCLGAN)还通过新的相似度损失避免了模式崩溃。
DCLGAN是一个通用模型,可以执行各种图像到图像转换任务。在我们测试过的大多数任务中,它都达到了最先进的性能。
[用于无监督图像到图像转换的对偶对比学习](https://github.com/JunlinHan/DCLGAN/blob/main/imgs/han_dualcontrastive.pdf
韩俊林、Mehrdad Shoeiby、Lars Petersson、Mohammad Ali Armin
DATA61-CSIRO和澳大利亚国立大学
发表于NTIRE,CVPRW 2021。
我们的流程非常直观。主要思想是采用双重设置,使用两个编码器来捕捉两个不同域的可变性。
示例结果
非配对图像到图像转换
定性结果:
定量结果:
更多视觉结果:
先决条件
Python 3.6或更高版本。
有关软件包,请参阅requirements.txt。
入门
- 克隆此仓库:
git clone https://github.com/JunlinHan/DCLGAN.git
-
安装PyTorch 1.6或更高版本以及其他依赖项(如torchvision、visdom、dominate、gputil)。
对于pip用户,请输入命令
pip install -r requirements.txt
。对于Conda用户,您可以使用
conda env create -f environment.yml
创建一个新的Conda环境。
DCLGAN和SimDCL训练与测试
- 下载
grumpifycat
数据集
bash ./datasets/download_cut_dataset.sh grumpifycat
数据集将下载并解压到./datasets/grumpifycat/
。
- 要查看训练结果和损失图,运行
python -m visdom.server
并点击URL http://localhost:8097。
训练DCL模型:
python train.py --dataroot ./datasets/grumpifycat --name grumpycat_DCL
或训练SimDCL模型:
python train.py --dataroot ./datasets/grumpifycat --name grumpycat_SimDCL --model simdcl
我们还支持CUT:
python train.py --dataroot ./datasets/grumpifycat --name grumpycat_cut --model cut
以及fastCUT:
python train.py --dataroot ./datasets/grumpifycat --name grumpycat_fastcut --model fastcut
和CycleGAN:
python train.py --dataroot ./datasets/grumpifycat --name grumpycat_cyclegan --model cycle_gan
检查点将存储在./checkpoints/grumpycat_DCL/
。
- 测试DCL模型:
python test.py --dataroot ./datasets/grumpifycat --name grumpycat_DCL
测试结果将保存在以下位置的html文件中:./results/grumpycat_DCL/latest_test/
。
DCLGAN、SimDCL、CUT和CycleGAN
与之前的模型相比,DCLGAN是一种更稳健的无监督图像到图像转换模型。我们的性能通常优于CUT和CycleGAN。
SIMDCL是一个不同的版本,它旨在解决模式崩塌问题。我们建议将其用于小规模、不平衡的数据集。
数据集
下载CUT/CycleGAN/pix2pix数据集并学习如何创建自己的数据集。
或者在此处下载:https://people.eecs.berkeley.edu/~taesung_park/CycleGAN/datasets/。
在准备CityScape数据集时,请使用Pillow=5.0.0运行prepare_dataset.py以保持一致性。
应用预训练的DCL模型并评估
我们提供以下预训练的DCLGAN模型:
猫 <-> 狗:https://drive.google.com/file/d/1-0SICLeoySDG0q2k1yeJEI2QJvEL-DRG/view?usp=sharing
马 <-> 斑马:https://drive.google.com/file/d/16oPsXaP3RgGargJS0JO1K-vWBz42n5lf/view?usp=sharing
CityScapes:https://drive.google.com/file/d/1ZiLAhYG647ipaVXyZdBCsGeiHgBmME6X/view?usp=sharing
下载预训练模型,解压并将其放入./checkpoints目录(如果您没有运行训练代码,可能需要自行创建checkpoints文件夹)。
使用示例:下载Horse2Zebra数据集并使用以下命令测试模型:
python test.py --dataroot ./datasets/horse2zebra --name horse2zebra_dcl
对于FID分数,使用pytorch-fid。
测试马->斑马的FID:
python -m pytorch_fid ./results/horse2zebra_dcl/test_latest/images/fake_B ./results/horse2zebra_dcl/test_latest/images/real_B
以及斑马->马的FID:
python -m pytorch_fid ./results/horse2zebra_dcl/test_latest/images/fake_A ./results/horse2zebra_dcl/test_latest/images/real_A
引用
如果您使用我们的代码或结果,请考虑引用我们的论文。提前感谢!
@inproceedings{han2021dcl,
title={Dual Contrastive Learning for Unsupervised Image-to-Image Translation},
author={Junlin Han and Mehrdad Shoeiby and Lars Petersson and Mohammad Ali Armin},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops},
year={2021}
}
如果您使用了CUT中包含的内容,您也可以引用CUT。
@inproceedings{park2020cut,
title={Contrastive Learning for Unpaired Image-to-Image Translation},
author={Taesung Park and Alexei A. Efros and Richard Zhang and Jun-Yan Zhu},
booktitle={European Conference on Computer Vision},
year={2020}
}
联系方式
致谢
我们的代码基于pytorch-CycleGAN-and-pix2pix和CUT开发。我们感谢CycleGAN和CUT提供的出色工作。 我们感谢pytorch-fid用于FID计算。 非常感谢CVPR主会议和NTIRE的匿名审稿人。他们提供了宝贵的反馈和建议。