用GAN还原语义标注图!还能手动改细节(附论文、代码)

简介:
输入一张语义地图——

df2d882396c6e6b129f63026c42dfcf581767578

就能为你还原整个世界:

004e7ba17a9b0e9a01b7ddb931137484c5797374

输入一张亲妈都认不出来的语义标注图——

d530cb2bdf89d3331f34e19b485aa94ea1067bc5

为你合成一张真实的人脸。

0e478c5af3702121039c58636cc6de7570f8f1aa

聪明的你可能已经发现,这个名为pix2pixHD的神奇算法,可以用条件生成式对抗网络(conditional GAN),将一张语义标注的图像还原成现实世界的样子。pix2pixHD合成的图像分辨率可高达2048x1024,和CRN、pix2pix等其他图像合成工具相比可以发现,pix2pixHD的效果显然领先了好几条街!

ea67f92acea07b70d2639bb3e314651eae338038

△ pix2pixHD与pix2pix、CRN对比图

有趣的是,连李飞飞高徒、现特斯拉人工智能与自动驾驶视觉部门主管Andrej Karpathy也在Twitter上大呼“非常鹅妹子嘤!”

6d8af66ab0fed0dfc01752433918ff7d07b879a1

到底是怎么一回事?上车,我们前去看看论文。

效果惊人

有一个官方演示视频——

237437b49635eee3b1b7c62d407d0fa4cbcb4823

pix2pixHD具有通过语义标注的图像还原到现实世界的能力,并且还能根据需要轻松修改和搭配图像。在视频中可以看到,你可以一键更换车辆的颜色和型号,改变街道的类型,甚至还可以移除图像内景物甚至增加图像中的树木。

一张语义地图背后,是丰富的现实世界。

00a5f4b4a23271e0761c9dd3de081bec649cb0c1

pix2pixHD不仅可以将街景语义图转化为真实图像,还能合成人脸。

和街景类似,根据语义标注的人脸图像,我们可以选择组合人物的眼睛、眉毛和胡须等五官特征,还能在标注图上调整五官的大小。

b473415702c95c7e0226cb52ec792a7a9e5cde9d

无论是在街景中增加和减少物体,还是改变人脸的五官,都是通过一个可编辑的界面完成的。这个界面神似众多穿衣搭配的Falsh小游戏的界面,实现了“一键换车”和“一键换眼”,长胡子、改肤色,也都是点一下鼠标的事。

1d1287ec472f30a4c8b6f67932db256c995cfe2c

只能搞定256×256的pix2pix,怎么就变成这个“鹅妹子嘤”pix2pixHD呢?我们来看看技术细节。

网络架构

要生成高分辨率图片,直接用pix2pix的架构是肯定不行的。作者们在论文中说,他们试过了,训练不稳定,生成图片的质量也不如人意。

还是得在它的基础上,进行改造。

aea5d748e0a34aad96bc6ccc481c7df36390ec97

于是,他们在pix2pix的基础上,增加了一个“从糙到精生成器(coarse-to-
fine generator)”、一个多尺度鉴别器架构和一个健壮的对抗学习目标函数。

从糙到精生成器

生成器包含G1和G2两个子网络,G1是全局生成网络,G2是局部增强网络。两个子网络结合起来使用,结构如下图所示:

43a47b30ac8eff6f5454bfead8d197d2c6f100e8

其中G1计算的分辨率是1024×512,而G2将输出图像的分辨率扩大到4倍,也就是横向纵向分别乘以2,2048×1024。如果想生成分辨率更高的图片,可以再加一个同样的局部增强网络,输出4096×2048的图。

在训练这个生成器时,先训练全局生成器,然后训练局部增强器,然后整体微调所有网络的参数。

多尺度鉴别器

高分辨率图片不仅生成起来难,让计算机鉴别真假也难。

要鉴别高分辨率图像是真实的还是合成的,就需要一个感受野很大的鉴别器,也就是说,要么用很深的网络,要么用很大的卷积核。这两种方法都会增加网络容量,导致容易过拟合,训练时也都会占用更多内存。

跟生成器抢内存?不行不行。于是这篇论文的作者们提出了一种新思路:多尺度鉴别器,也就是用3个鉴别器,来鉴别不同分辨率图片的真假。

5a1f1d2a31811a053f036948ea1a3f486720781e

如上图所示,这三个鉴别器D1、D2和D3有着相同的网络结构,但是在不同尺寸的图像上进行训练。通过对高分辨率图像进行两次降低采样,生成3种大小的图像,然后训练鉴别器D1、D2和D3分别来辨别这3种尺寸图像的真假。

最粗糙尺度上的鉴别器感受野最大,负责让图像全局和谐,最精细尺度的鉴别器负责引导生成器生成出精致的细节。

改良损失函数

在Conditional GAN的目标函数LGAN(G, D)

675e4114cc7cb385225d49f0236b0ddf86320e2f

的基础上,pix2pixHD又基于鉴别器引入了一个特征匹配损失,生成器训练之后所生成的各种尺寸图像越来越自然,损失在也随之稳定。

将鉴别器Dk第i层的特征提取器表示为D(i)k,特征匹配损失函数可以表示如下:

0bc5a72e99f136865c6e103a6de8589c4befc12a

完整的目标函数如下,包含GAN损失和特征匹配损失:

f785edd30b97c241085cf79c06fa7179d119234c



从语义标记图到合成图像

图像生成经常用到语义标记图(semantic lable maps),不过本文作者们认为,实例图(instance map)里最重要信息,并没有包含在语义标记图中。

61c758c01f72108f16a3b5b898868bb8e553528b

比如说上图a里,所有汽车连成一体,无法分开,这就需要先计算出如上图b所示的实例边界图(instance boundary map)。

用了实例边界图,生成的图像就不会出现下图a中两辆汽车细节不清楚的情况了。

253531e9b395ae8957a8ab1b6718862f499e30ca

解决了语义标记图自身的缺陷之后,还有一个问题:我们前面所说的图上每个物体都能单独控制,是怎样实现的呢?

在pix2pixHD中,作者们为了生成低维特征,训练了一个编码网络E来寻找和图中每个实例的真实目标相对应的低维向量。另外,还使用了一个标准的编码器-解码器组成的编码架构。

为了确保每个实例内部的特征都协调,作者们在编码器的输出上添加了一个实例级平均池化层,来计算实例的平均特征。然后这个将这个平均特征广播到实例中的所有像素位置上,如下图所示:

51844be34ec98072c3e8fe2ea22a38f99aa8b8b0

广为流传的pix2pix

这个pix2pixHD,从名字到架构,都可以说是pix2pix的升级版。

这篇新论文主要来自英伟达,不过混入了一位加州大学伯克利分校的作者Jun-Yan Zhu,清华CMU伯克利系列学霸、猫奴、也是pix2pix的二作。

他所在的实验室,在图像合成和风格迁移领域贡献了大量论文,还非常良心地都开源了代码。

其中,pix2pix更是流传甚广。比如说不少广为人知的线稿变照片demo,都是基于他们的pix2pix,其中最知名&好玩的,大概要数随手就能画只猫的edges2cats

1d8eaa64bdc9cb9b15b05b8f0f496b6087a86479

画猫的demo大受欢迎,以至于后来被网友们玩出了各种各样的新高度。同样基于pix2pix,画鞋画包画房子的都有,这里有一系列demo,都可以上手试一试:https://affinelayer.com/pixsrv/index.html

如今,有了高清版的pix2pixHD,同样开源了代码,不知道又要玩出什么新花样了。


原文发布时间为:2017-12-9
本文来自云栖社区合作伙伴“ 数据派THU”,了解相关信息可以关注“ 数据派THU”微信公众号
相关文章
|
1月前
|
人工智能 JavaScript 开发者
解决 AI 落地“最后一公里”:如何优雅地将 Gemini 深度内容无损转为 Word 文档?
本文探讨如何将Gemini生成的Markdown内容无损转换为Word文档,破解公式乱码、图表失效、格式错乱三大难题。对比Google Docs原生导出、Pandoc命令行工具与ai2word等在线方案,从易用性、公式支持、图表渲染等维度评测,助你高效产出可编辑、高保真的专业文档,实现AI写作到办公交付的无缝衔接。
1441 1
|
监控 关系型数据库 MySQL
MySQL 查询数据库响应时长详解
- 启用慢查询日志(`slow_query_log`)分析超时查询,调整`long_query_time`阈值。 - 使用`EXPLAIN`检查查询执行计划,优化索引和查询结构。 - `SHOW PROFILE`揭示查询各阶段耗时,辅助性能调优。 - 开启Performance Schema监控服务器,通过`events_statements_summary_by_digest`等表分析性能。 - MySQL Workbench和Percona Toolkit等工具提供额外的性能分析和管理功能。 - 优化技巧:创建合适索引,精简查询,调整数据库配置以提升响应速度。
|
12月前
|
云安全 人工智能 安全
用AI来做云安全是怎样一种体验?阿里云安全AI能力大曝光
用AI来做云安全是怎样一种体验?阿里云安全AI能力大曝光
|
机器学习/深度学习 并行计算 PyTorch
PyTorch与CUDA:加速深度学习模型训练的最佳实践
【8月更文第27天】随着深度学习应用的广泛普及,高效利用GPU硬件成为提升模型训练速度的关键。PyTorch 是一个强大的深度学习框架,它支持动态计算图,易于使用且高度灵活。CUDA (Compute Unified Device Architecture) 则是 NVIDIA 开发的一种并行计算平台和编程模型,允许开发者直接访问 GPU 的并行计算能力。本文将详细介绍如何利用 PyTorch 与 CUDA 的集成来加速深度学习模型的训练过程,并提供具体的代码示例。
1569 3
|
存储 数据挖掘
服务器数据恢复—用RAID5阵列中部分盘重建RAID5如何恢复原raid5阵列数据?
服务器数据恢复环境: 一台服务器挂接一台存储,该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障: 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性,阵列并没有出现问题。工作一段时间后,服务器出现故障,用户方请人维修。维修人员在没有了解故障磁盘阵列环境的情况下,用另外4块硬盘(除去掉线的硬盘)重新创建了一组全新的RAID5阵列并完成数据同步,导致原raid5阵列数据全部丢失。
|
机器学习/深度学习 数据采集 PyTorch
高效数据加载与预处理:利用 DataLoader 优化训练流程
【8月更文第29天】 在深度学习中,数据加载和预处理是整个训练流程的重要组成部分。随着数据集规模的增长,数据加载的速度直接影响到模型训练的时间成本。为了提高数据加载效率并简化数据预处理流程,PyTorch 提供了一个名为 `DataLoader` 的工具类。本文将详细介绍如何使用 PyTorch 的 `DataLoader` 来优化数据加载和预处理步骤,并提供具体的代码示例。
2412 1
|
SQL 运维 Serverless
阿里云 EMR StarRocks VS 开源版本功能差异介绍
阿里云 E-MapReduce Serverless StarRocks 版是阿里云提供的 Serverless StarRocks 全托管服务,提供高性能、全场景、极速统一的数据分析体验,具备开箱即用、弹性扩展、监控管理、慢 SQL 诊断分析等全生命周期能力。内核 100% 兼容 StarRocks,性能比传统 OLAP 引擎提升 3-5 倍,助力企业高效构建大数据应用。本篇文章重点介绍阿里云 EMR StarRocks 与开源 StarRocks 的对比与客户案例。
1273 5
|
JavaScript
Vue.mixin 的使用场景和原理
Vue.mixin 的使用场景和原理
231 0
|
存储 分布式计算 Hadoop
Hadoop的Secondary NameNode在HDFS中的作用是什么?
Hadoop的Secondary NameNode在HDFS中的作用是什么?
478 0
|
城市大脑 智能设计 运维
首家!阿里云完成数据可视化服务能力评估
阿里云DataV数据可视化团队历经磨炼,走过了10年的可视化之路,在产品和服务上走出了一条属于自己的道路。