全球人工智能
文章来源:Github 翻译:马卓奇博士
从油画生成照片,将马转换成斑马,进行风格转换,以及更多(UC Berkeley)
项目主页:https://junyanz.github.io/CycleGAN/
论文:https://arxiv.org/pdf/1703.10593.pdf
本文是用Torch实现的图像到图像的转换(pix2pix),而不用输入输出数据对,例如:
这个程序包包含CycleGAN,pix2pix,以及其他方法,例如:BiGAN/ALI以及苹果的论文:S+U learning.
代码作者:Jun-YanZhu和TaesungPark
PyTorch版本即将上线
应用莫奈油画转换成照片
画集风格转换
目标变形
季节转换
照片增强:iPhone照片转DSLR(数码单反相机)照片
环境要求
·Linux or OSX
·NVIDIA GPU + CUDA CuDNN (CPU 模式 和 CUDA 不用CuDNN 加速或许需要进行一些小的调整,但是还未测试)
·如果使用的是MAC,你需要Linux或GNU命令: gfind 和 gwc, 可以用brew install findutils coreutils 命令进行安装。
开始安装
·从官网安装torch及其依赖项: https://github.com/torch/distro
·安装torch附加包 nngraph, class, display
luarocks install nngraph
luarocks install class
luarocks installhttps://raw.githubusercontent.com/szym/display/master/display-scm-0.rockspec
复制该仓库
git clone https://github.com/junyanz/CycleGAN
cd CycleGAN
应用预训练模型
下载测试照片(摄影师:Alexei Efros)
bash./datasets/download_dataset.sh ae_photos
下载预训练模型:style_cezanne
bash./pretrained_models/download_model.sh style_cezanne
现在,让我们来生成塞尚风格的图像:
DATA_ROOT=./datasets/ae_photosname=style_cezanne_pretrained model=one_direction_test phase=test loadSize=256fineSize=256 resize_or_crop="scale_width" th test.lua
测试结果会存到:./results/style_cezanne_pretrained/latest_test/index.html路径下
想要了解更多预训练模型,请参考Model Zoo。
./examples/test_vangogh_style_on_ae_photos.sh是一个示例脚本,可以下载预训练的梵高风格网络,并且在 Alexei的照片上进行测试
训练
下载数据集(例如ImageNet中斑马和马的图片)
bash ./datasets/download_dataset.sh horse2zebra
训练模型
DATA_ROOT=./datasets/horse2zebraname=horse2zebra_model th train.lua
(仅使用CPU)训练命令一样,只是不使用GPU或CUDNN。设置环境变量 gpu=0cudnn=0 强制只使用CPU
DATA_ROOT=./datasets/horse2zebraname=horse2zebra_model gpu=0 cudnn=0 th train.lua
(可选)打开显示服务器可以在模型训练的过程中查看结果。(更多细节请看Display UI(显示界面)部分。)
th -ldisplay.start 8000 0.0.0.0
测试
最终,测试模型
DATA_ROOT=./datasets/horse2zebraname=horse2zebra_model phase=test th test.lua
测试结果会存入一个html文件。
Model Zoo
用如下代码下载预训练的模型。模型会保存在:./checkpoints/model_name/latest_net_G.t7.
bash ./pretrained_models/download_model.shmodel_name
·orange2apple (橘子->苹果) and apple2orange: 在ImageNet苹果和橘子数据集上进行训练
·horse2zebra (马 -> 斑马) and zebra2horse (zebra -> horse): 在ImageNet马和斑马数据集上进行训练
·style_monet (风景照片 -> 莫奈油画风格), style_vangogh (风景照片 -> 梵高油画风格), style_ukiyoe (风景照片 -> 浮世绘风格), style_cezanne (风景照片 -> 塞尚绘画风格 ): 在油画和Flickr风景照片集上进行训练
·monet2photo (莫奈绘画 -> 实景图片): 在油画和Flickr风景照片集上进行训练
·cityscapes_photo2label (街景 -> 标签) and cityscapes_label2photo (标签 -> 街景): 在Cityscapes数据集上进行训练
·map2sat (地图 -> 航拍图) and sat2map (航拍图 -> 地图): 在Google地图数据集上训练.
·iphone2dslr_flower (iPhone花卉照片 -> DSLR 花卉照片): 在Flickr照片集上训练.
训练和测试细节训练模型:
DATA_ROOT=/path/to/data/ name=expt_name thtrain.lua
模型保存在:./checkpoints/expt_name(可以把train.lua中checkpoint_dir改成你的路径来改变存储路径)
想了解其他训练设置,可以在options.lua中查看opt_train参数
测试模型:
DATA_ROOT=/path/to/data/ name=expt_namewhich_direction='AtoB' phase=test th test.lua
这行命令会训练expt_name模型,在/path/to/data/testA和/path/to/data/testB中的所有图片上进行双向训练。
如果which_direction设置为'BtoA',那么数据集的两个子集A和B会翻转。实验结果图像以及查看网址会保存在:./results/expt_name(可以把test.lua中result_dir改成你的路径来改变存储路径)
想了解其他测试设置,可以在options.lua中查看test options参数。
如果只想生成训练网络的单向输出,设置model=one_direction_test
数据集使用如下程序下载数据集:
bash ./datasets/download_dataset.sh dataset_name
·facades: 400 张图片,来自 CMP Facades 数据集.
http://cmp.felk.cvut.cz/~tylecr1/facade/
·cityscapes: 2975 张图片,来自 Cityscapes 训练集.
https://www.cityscapes-dataset.com/
·maps: 1096 张图片,来自 Google Maps(谷歌地图).
·horse2zebra: 939 张马的图片和1177张斑马图片,从ImageNet中使用关键词wild horse(野马)和zebra(斑马)下载
·apple2orange: 996 张苹果图片 and 1020 张橘子图片, 从ImageNet中使用关键词apple(苹果)和navel orange(橘子)下载
·summer2winter_yosemite: 1273 张夏季 Yosemite(约塞米蒂国家公园) 的照片和 854 张冬季Yosemite的照片,使用Flickr API进行下载,具体细节请参考我们的论文。
·monet2photo, vangogh2photo, ukiyoe2photo, cezanne2photo:艺术绘画图片从Wikiart下载。实景照片使用标签风景和风景照片结合,从Flickr 下载。每种艺术风格的训练集数据量为:莫奈:1074,塞尚:584, 梵高:401, 浮世绘:1433, 照片:6853.
·iphone2dslr_flower: 两类图片均从Flickr上下载。训练集数据量分别为: iPhone照片:1813, DSLR照片:3316. 具体细节请参考我们的论文
显示界面可选,可以在训练和测试过程中显示图片,使用display程序包。
安装
luarocks install https://raw.githubusercontent.com/szym/display/master/display-scm-0.rockspec
启动服务器
th -ldisplay.start
浏览器中打开该URL: http://localhost:8000
默认设置下,服务器会监听本地端口。传递设置0.0.0.0 允许任何终端界面连接:
th -ldisplay.start 8000 0.0.0.0
然后在浏览器中打开:http://(hostname):(port)/,下载远程桌面
设置训练和测试数据如果想在你自己的数据集上训练CycleGAN模型,你需要创建一个数据文件夹,包含两个子目录trainA和trainB,分别包含域A和域B的图片。你可以在训练集上测试模型,在test.lua中设置phase='train'。如果你有其他的测试数据,也可以创建子目录testA和testB。
我们的方法不能应用在两个随机的数据集的结合上(例如猫咪图片转换为键盘图片)。从我们的实验结果中,我们发现如果两个数据集包含同样的视觉内容,算法效果会更好一些。例如,街景绘画和街景照片互相转换的效果,要比肖像画和街景照片相互转换的效果好。斑马和马的照片相互转化能得到很好的结果,而猫和狗的照片转换会完全失败。
失败样例分析这里展示了几个典型的失败样例。
在涉及到色彩和纹理变化的转换任务中,该方法一般都能成功。我们也探索了需要几何变换的任务,很少能够成功。例如,在猫和狗的互相转换中,学习的转换器会退化,只能对输入图像产生很小的变化。我们也在用成对训练数据训练的结果和不成对方法产生的结果之间发现了一个无法弥补的差距。在某些情况下,这个差距会更严重,甚至闭合:例如,我们的方法有时会在街景照片转换为标签的任务下,改变输出中的树和建筑的标签顺序。
引用如果我们的代码帮助到了您的研究工作,请引用我们的论文:
@article{CycleGAN2017,
title={Unpaired Image-to-Image Translationusing Cycle-Consistent Adversarial Networks},
author={Zhu, Jun-Yan and Park, Taesung andIsola, Phillip and Efros, Alexei A},
journal={arXiv preprint arXiv:1703.10593},
year={2017}
}
相关项目
github link:https://github.com/junyanz/CycleGAN
Pix2pix:使用条件对抗网络进行图像到图像的转换
https://github.com/phillipi/pix2pix
iGAN:使用生成对抗网络进行互动图像生成
猫咪论文集https://github.com/junyanz/iGAN
如果你喜爱猫咪,并且喜欢阅读图形图像以及机器学习领域的论文,请看猫咪论文集:
GitHub:https://github.com/junyanz/CatPapers
网页:http://people.eecs.berkeley.edu/~junyanz/cat/cat_papers.html
AIJob社是《全球人工智能》旗下专门为AI开发工程师免费服务的求职平台。我们将竭尽全力帮助每一个ai工程师对接自己喜欢的企业,推荐给你喜欢的直接领导,帮你谈一个最好的薪资待遇。
微信咨询:aihr007简历投递:[email protected]企业合作:[email protected]
《全球人工智能》招聘5名兼职翻译及10名兼职VIP社群专家:图像技术、语音技术、自然语言、机器学习、数据挖掘等专业技术领域,工作内容及待遇请在公众号内回复“兼职+个人微信号”联系工作人员。