环境配置等问题可以看下面这篇博客,我觉得写的非常详细,可以直接使用:【模型复现】自制数据集上复现风格迁移模型 CUT:Contrastive Unpaired Translation_contrastive unpaired translation 代码-CSDN博客
这里重点回答一些上述博客中没有讲到的内容。
一、数据集制作
在 options/base_options.py 中,这句代码说明这篇论文的数据集可以分为3类:unaligned、aligned 和 single。
parser.add_argument('--dataset_mode', type=str, default='unaligned', help='chooses how datasets are loaded. [unaligned | aligned | single | colorization]')
unaligned
unaligned 的数据集形式如下,这种实际上是CycleGAN的数据集。
trainA放同一分布的源域数据。
trainB放另一种分布的目标域数据集。
例如horse2zebra数据集就具有这种组成形式。
my_datasets/
├──trainA
│ ├──xxx.jpg
│ ├──xxx.jpg
└──trainB
├──xxx.jpg
└──xxx.jpg
horse2zebra数据集中的trainA部分,这部分全部都是马的数据。
trainB部分:这部分全部都是斑马的数据。
aligned
aligned 的数据集形式如下所示,这种实际上就是pix2pix的数据集。
例如facades数据集就具有这种格式。
my_datasets/
│
└──train
├──xxx.jpg
└──xxx.jpg
facades 数据集的train
这要求数据集图像左右具有对其关系,例如:
二、train
上面那篇博客大部分都已经写到,我这里做一些补充部分。
下面这句代码要注意,这表示了一个转换关系。
AtoB表示由域A转化成域B。
BtoA表示由域B转化成域A。
针对于两种数据集,像unaligned类型,AtoB 表示 train A的风格转化成 trainB 的风格,BtoA 表示train B 的风格转化成 trian A的风格。
aligned类型中,A表示左边的图像,B表示右边的图像。
parser.add_argument('--direction', type=str, default='AtoB', help='AtoB or BtoA')