英伟达最近发布的图像合成 “黑魔法”GauGAN 效果令人惊叹,现在,相关代码和预训练模型终于公开了。
还记得英伟达在GTC2019披露的令人惊叹的图像生成器GauGAN吗?仅凭几根线条,草图秒变风景照,自动生成照片级逼真图像的技术堪比神笔马良。
图中,左边是人类操作员画的,右边是AI直接“简单加上几笔细节”后生成的。在普通人看来,右边的图像几乎毫无破绽,看不出这并非一张风光照片,而是AI生成的虚拟海滩。
从图中我们可以看出,GauGAN并不是像Photoshop里贴一个图层那样,简单的把图形贴上去,而是根据相邻两个图层之间的对应关系对边缘进行调整。比如石头在水里的倒影应该是什么样的、被瀑布冲刷的山石应该是怎样的状态、近处的山和远处的山之间的层次应该如何表现…
相关阅读:英伟达再出黑魔法GauGAN:凭借几根线条,草图秒变风景照
GauGAN背后的技术来自来自英伟达和MIT的研究团队。这个团队,包括来自英伟达的Ting-ChunWang、刘明宇(Ming-YuLiu),TaesungPark(当时在英伟达实习),以及来自MIT的朱俊彦(Jun-YanZhu)。
论文地址:https://arxiv.org/pdf/1903.07291.pdf
他们提出一种名为“空间自适应归一化”(SPADE)的语义图像合成技术,论文已经被CVPR2019接收,并入选oralpaper。
近日,SPADE的代码终于发布,包括预训练模型等,有兴趣的同学赶紧来试试复现吧。
SPADE:空间自适应归一化
GauGAN是基于名为“空间自适应归一化”(spatially-adaptivenormalization,SPADE)技术实现的。该方法通过一个简单但有效的层,在给定输入语义布局的情况下合成照片级真实的图像。
以前的方法直接将语义布局作为输入提供给网络,然后通过卷积、归一化和非线性层进行处理。我们证明了以前的方法不是最优的,因为归一化层往往会消除语义信息。
为了解决这个问题,我们建议使用输入布局,通过空间自适应的、学习的变换来调整归一化层中的激活。
在几个具有挑战性的数据集上的实验表明,与现有方法相比,SPADE在视觉保真度和与输入布局的对齐方面具有优势。最后,我们的模型允许用户轻松地控制合成结果的样式和内容,以及创建多模态的结果。
方法简述
在许多常见的归一化技术中,如BatchNormalization(Ioffeetal.,2015),在实际归一化步骤之后会应用到学习的affinelayers(如在PyTorch和TensorFlow)中。
在SPADE中,affinelayers是从语义分割映射中学习的。这类似于条件归一化(DeVriesetal.,2017和Dumoulinetal.,2016),除了学习的affineparameters,还需要空间自适应,这意味着我们将对每个语义标签使用不同的缩放和偏差。
使用这种简单的方法,语义信号可以作用于所有层的输出,而不受可能丢失这些信息的归一化过程的影响。此外,由于语义信息是通过SPADE层提供的,所以可以使用随机的潜在向量作为网络的输入,从而实现操纵所生成的图像的样式。
与现有方法的比较
SPADE在COCO-Stuff数据集上的性能优于现有方法。因为具有更多的场景和标签,COCO-Stuff数据集比Cityscapes数据集更具挑战性。上面的图片比较了GRN、pix2pixhd以及SPADE的效果。
应用到 Flickr 图片
由于SPADE适用于不同的标签,因此可以使用现有的语义分割网络对其进行训练,学习从语义映射到照片的反向映射。上面这些图片是由SPADE对从Flickr上抓取的40k张图片进行训练生成的。
代码开源
安装
克隆这个 repo
git clonehttps://github.com/NVlabs/SPADE.gitcd SPADE/
这段代码需要PyTorch1.0和python3+。请通过以下方式安装依赖项
pip install -r requirements.txt
代码还需要同步的 Synchronized-BatchNorm-PyTorch rep.
cd models/networks/ git clonehttps://github.com/vacancy/Synchronized-BatchNorm-PyTorchcpSynchronized-BatchNorm-PyTorch/sync_batchnorm.-rfcd ../../
为了重现论文中报告的结果,你需要一台有8个V100GPU的NVIDIADGX1机器。
数据集准备
对于COCO-Stuff、Cityscapes或ADE20K,必须预先下载数据集。请在相关网页下载。
准备COCO-Stuff数据集。图像、标签和实例映射应该与数据集/coco_stuff/中的目录结构相同。特别地,我们使用了一个实例映射,它结合了“thingsinstancemap”和“stufflabelmap”的边界。我们使用了一个简单的脚本数据集/coco_generate_instance_map.py。请使用pipinstallpycocotools安装pycocotools,并参考脚本生成实例映射。
准备ADE20K数据集。解压数据集后,将jpg图像文件ADEChallengeData2016/images/和png标签文件ADEChallengeData2016/annotatoins/放在同一个目录中。
使用预训练模型生成图像
数据集准备好后,就可以使用预训练模型生成图像。
1、从 Google Drive Folder 下载预训练模型的 tar,保存在 'checkpoint /‘中,然后运行
cd checkpoints tar xvf checkpoints.tar.gz cd ../
2、使用预训练模型生成图像
python test.py --name [type]_pretrained --dataset_mode [dataset] --dataroot [path_to_dataset]
3、输出图像默认存储在./results/[type]_pretrained/。
训练新模型
可以使用以下命令训练新模型。
1、准备数据集
要在论文中的数据集上训练,可以下载数据集并使用--dataset_mode选项,该选项将选择加载BaseDataset上的哪个子类。对于自定义数据集,最简单的方法是使用./data/custom_dataset。通过指定选项--dataset_modecustom,以及--label_dir[path_to_labels]--image_dir[path_to_images]。你还需要指定更多选项,例如--label_nc(数据集中标签类的数目),--contain_dontcare_label(指定是否有一个未知的标签),或者--no_instance(表示地图数据集没有实例)。
2、训练
# To train on the Facades or COCO dataset, for example.python train.py --name [experiment_name] --dataset_mode facades --dataroot [path_to_facades_dataset]python train.py --name [experiment_name] --dataset_mode coco --dataroot [path_to_coco_dataset]# To train on your own custom datasetpython train.py --name [experiment_name] --dataset_mode custom --label_dir [path_to_labels] -- image_dir [path_to_images] --label_nc [num_labels]
你还可以指定许多选项,请使用 python train.py --help.
测试
测试与测试预训练模型相似
python test.py --name [name_of_experiment] --dataset_mode [dataset_mode] --dataroot [path_to_dataset]
-
代码
+关注
关注
30文章
4791浏览量
68694 -
数据集
+关注
关注
4文章
1208浏览量
24725 -
英伟达
+关注
关注
22文章
3780浏览量
91205
原文标题:草图秒变风景照,英伟达神笔马良GaoGAN终于开源了
文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论