前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >草图秒变风景照,英伟达神笔马良GaoGAN终于开源了

草图秒变风景照,英伟达神笔马良GaoGAN终于开源了

作者头像
代码医生工作室
发布2019-06-21 17:22:03
1.7K0
发布2019-06-21 17:22:03
举报
文章被收录于专栏:相约机器人

英伟达最近发布的图像合成 “黑魔法”GauGAN 效果令人惊叹,现在,相关代码和预训练模型终于公开了。

还记得英伟达在 GTC 2019 披露的令人惊叹的图像生成器 GauGAN 吗?仅凭几根线条,草图秒变风景照,自动生成照片级逼真图像的技术堪比神笔马良。

图中,左边是人类操作员画的,右边是 AI 直接 “简单加上几笔细节” 后生成的。在普通人看来,右边的图像几乎毫无破绽,看不出这并非一张风光照片,而是 AI 生成的虚拟海滩。

从图中我们可以看出,GauGAN 并不是像 Photoshop 里贴一个图层那样,简单的把图形贴上去,而是根据相邻两个图层之间的对应关系对边缘进行调整。比如石头在水里的倒影应该是什么样的、被瀑布冲刷的山石应该是怎样的状态、近处的山和远处的山之间的层次应该如何表现…

请看下面的demo:

相关阅读:英伟达再出黑魔法GauGAN:凭借几根线条,草图秒变风景照

GauGAN 背后的技术来自来自英伟达和 MIT 的研究团队。这个团队,包括来自英伟达的 Ting-Chun Wang、刘明宇(Ming-Yu Liu),Taesung Park (当时在英伟达实习),以及来自 MIT 的朱俊彦(Jun-Yan Zhu)。

论文地址:https://arxiv.org/pdf/1903.07291.pdf

他们提出一种名为 “空间自适应归一化”(SPADE) 的语义图像合成技术,论文已经被 CVPR 2019 接收,并入选 oral paper。

近日,SPADE 的代码终于发布,包括预训练模型等,有兴趣的同学赶紧来试试复现吧。

SPADE:空间自适应归一化

GauGAN 是基于名为 “空间自适应归一化”(spatially-adaptive normalization, SPADE) 技术实现的。该方法通过一个简单但有效的层,在给定输入语义布局的情况下合成照片级真实的图像。

以前的方法直接将语义布局作为输入提供给网络,然后通过卷积、归一化和非线性层进行处理。我们证明了以前的方法不是最优的,因为归一化层往往会消除语义信息。

为了解决这个问题,我们建议使用输入布局,通过空间自适应的、学习的变换来调整归一化层中的激活。

在几个具有挑战性的数据集上的实验表明,与现有方法相比,SPADE 在视觉保真度和与输入布局的对齐方面具有优势。最后,我们的模型允许用户轻松地控制合成结果的样式和内容,以及创建多模态的结果。

方法简述

在许多常见的归一化技术中,如 Batch Normalization (Ioffe et al., 2015),在实际归一化步骤之后会应用到学习的 affine layers (如在 PyTorch 和 TensorFlow) 中。

在 SPADE 中,affine layers 是从语义分割映射中学习的。这类似于条件归一化 (De Vries et al., 2017 和 Dumoulin et al., 2016),除了学习的 affine parameters,还需要空间自适应,这意味着我们将对每个语义标签使用不同的缩放和偏差。

使用这种简单的方法,语义信号可以作用于所有层的输出,而不受可能丢失这些信息的归一化过程的影响。此外,由于语义信息是通过 SPADE 层提供的,所以可以使用随机的潜在向量作为网络的输入,从而实现操纵所生成的图像的样式。

与现有方法的比较

SPADE 在 COCO-Stuff 数据集上的性能优于现有方法。因为具有更多的场景和标签,COCO-Stuff 数据集比 Cityscapes 数据集更具挑战性。上面的图片比较了 GRN、pix2pixhd 以及 SPADE 的效果。

应用到 Flickr 图片

由于 SPADE 适用于不同的标签,因此可以使用现有的语义分割网络对其进行训练,学习从语义映射到照片的反向映射。上面这些图片是由 SPADE 对从 Flickr 上抓取的 40k 张图片进行训练生成的。

代码开源

安装

克隆这个 repo

代码语言:javascript
复制
git clone https://github.com/NVlabs/SPADE.git
cd SPADE/

这段代码需要 PyTorch 1.0 和 python 3+。请通过以下方式安装依赖项

代码语言:javascript
复制
pip install -r requirements.txt

代码还需要同步的 Synchronized-BatchNorm-PyTorch rep.

代码语言:javascript
复制
cd models/networks/ 
git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch 
cp Synchronized-BatchNorm-PyTorch/sync_batchnorm . -rf 
cd ../../

为了重现论文中报告的结果,你需要一台有8个 V100 GPU 的 NVIDIA DGX1 机器。

数据集准备

对于 COCO-Stuff、Cityscapes 或 ADE20K,必须预先下载数据集。请在相关网页下载。

准备 COCO-Stuff 数据集。图像、标签和实例映射应该与数据集 /coco_stuff/ 中的目录结构相同。特别地,我们使用了一个实例映射,它结合了 “things instance map” 和 “stuff label map” 的边界。我们使用了一个简单的脚本数据集 /coco_generate_instance_map.py。请使用 pip install pycocotools 安装 pycocotools,并参考脚本生成实例映射。

准备 ADE20K 数据集。解压数据集后,将 jpg 图像文件 ADEChallengeData2016/images/ 和 png 标签文件 ADEChallengeData2016/annotatoins/ 放在同一个目录中。

使用预训练模型生成图像

数据集准备好后,就可以使用预训练模型生成图像。

1、从 Google Drive Folder 下载预训练模型的 tar,保存在 'checkpoint /‘中,然后运行

代码语言:javascript
复制
cd checkpoints 
tar xvf checkpoints.tar.gz 
cd ../

2、使用预训练模型生成图像

代码语言:javascript
复制
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_mode custom,以及 --label_dir [path_to_labels] --image_dir [path_to_images]。你还需要指定更多选项,例如 --label_nc (数据集中标签类的数目),--contain_dontcare_label (指定是否有一个未知的标签),或者 --no_instance (表示地图数据集没有实例)。

2、训练

代码语言:javascript
复制
# 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 dataset
python 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.

测试

测试与测试预训练模型相似

代码语言:javascript
复制
python test.py --name [name_of_experiment] --dataset_mode [dataset_mode] --dataroot [path_to_dataset]

GitHub地址:

https://github.com/NVlabs/SPADE

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 英伟达最近发布的图像合成 “黑魔法”GauGAN 效果令人惊叹,现在,相关代码和预训练模型终于公开了。
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档