麻省理工学院博士后,泄露天机:用机器学习生成图片
【猛虎按语】
这是译智社成员gdyming翻译的AI文章,不仅仅是翻译,更重要的是,还有总结和归纳。
译智社,旨在为各行业专业人士以及学生提供最优质的人工智能前沿资讯:从国外优质技术博客到经典和创新性论文,从AI领域的发展大势到AI人物的深度报道,从人工智能的入门知识到实践应用的各类丰富教程。
这是一个来自人工智能技术前沿的社区团队,有顶尖高校人工智能的科研工作者,有高校计算机竞赛的优胜者,有创立人工智能企业的实际应用推进者,我们聚集在这里,为人工智能技术的推广和普及做一份实在的努力。
研究学术的顶尖高校与实力强劲的商务公司结合在一起,象牙塔中的学术研究与社会生活中的务实践行融合为一体,译智社,是一个人工智能的互联网社区。
文 | gdymind
编辑 | strongnine
用机器学习生成图片(上)—— GAN 和 pix2pix
本文翻译、总结自朱俊彦的线上报告,主要讲了如何用机器学习生成图片。
来源:
https://games-cn.org/games-webinar-20180913-64/
主讲嘉宾
姓名:朱俊彦(Jun-Yan Zhu)
现状:
麻省理工学院博士后(PostDoc at MIT)
计算机科学与人工智能实验室(Computer Science and Artificial Intelligence Laboratory, CSAIL)
个人主页:
http://people.csail.mit.edu/junyanz/
主持人
姓名:周晓巍
现状:
浙江大学 CAD&CG 国家重点实验室
个人主页:
https://fling.seas.upenn.edu/~xiaowz/dynamic/wordpress/
这是机器学习滴时代!
计算机视觉(Computer Vision, CV)领域近年来发生了巨大的变化。在 2012 年之前,CV 的主要研究方法是使用人工设计(hand-designed)的特征完成各种任务(见下图)。
2012 年使用深度神经网络(Deep Neural Network, DNN)在ImageNet的分类任务上取得了巨大成功(见下图)。
从此深度学习(Deep Learning)的相关研究如火如荼地展开了,比如说下面这三个栗子:
物体识别(Object detection)
[Redmon etal., 2018]
对人体的理解(Human understanding)
[Guler et al., 2018]
自动驾驶(Autonomous driving)
[Zhao et al., 2017]
图形学中的尝试:趁手的武器 or 白费功夫?
在传统的图形学管线(pipeline)中,输出图像需要经过建模、材质贴图、光照、渲染等一系列繁琐的步骤(见下图)。
现在大家看到了Deep Learning的潜力,那我们自然的就有个想法:有没有可能使用Deep Learning简化计算机图形学(Computer Graphics)的研究呢?
一个直接的想法是把DNN「倒过来用」。之前的DNN可能是输入一幅图像,输出一个标签(比如说猫),那我们能不能输入「猫」这个字,输出一张猫的照片呢?
很遗憾,答案是No!因为这种任务实在太复杂啦!我们很难让DNN凭空输出图像这样的高维数据(High dimensional data)(这里的「高维」可以理解成数据量大)。实际上,在很长一段时间里,DNN只能输出数字这种简单的、低分别率的小图像,就像下面这样:
而想要生成想游戏场景这类的图片,这种方法根本没用。所以,我们必须得想出更厉害滴东西完成这项任务(使命感爆棚)!
GAN 就完了?Naive!
于是…在月黑风高的某一天(画风逐渐跑偏),一个叫做生成对抗网络(Generative Adversarial Network),也就是大名鼎鼎的GAN—— 的东西横空出世。作者是下面这位小哥和他的小伙伴们:
那么,我们该怎么GAN出图像呢?且听我细细道来~
一般来说,GAN中包含两种类型的网络G和D。其中,G为Generator,它的作用是生成图片,也就是说,在输入一个随机编码(random code)之后,它将输出一幅由神经网络自动生成的、假的图片G(z)。
另外一个网络D为Discriminator是用来判断的,它接受G输出的图像作为输入,然后判断这幅图像的真假,真的输出 1,假的输出 0。
在两个网络互相博弈(金坷垃日本人:不邀哒架)的过程中,两个网络的能力都越来越高:G生成的图片越来越像真的图片,D也越来越会判断图片的真假。到了这一步,我们就能「卸磨杀驴」—— 丢掉D不要了,把G拿来用作图片生成器。
正式一点儿讲(上公式啦),我们就是要在最大化D的能力的前提下,最小化D对G的判断能力,这是一个最小最大值问题,它的学习目标是:
为了增强D的能力,我们分别考虑输入真的图像和假的图像的情况。上式中第一项的D(G(z))处理的是假图像G(z),这时候评分D(G(z))需要尽力降低;第二项处理的是真图像x,这时候的评分要高。
GAN的局限性
即便如此,传统的GAN也不是万能的,它有下面两个不足:
1. 没有用户控制(user control)能力
在传统的GAN里,输入一个随机噪声,就会输出一幅随机图像。
但用户是有想法滴,我们想输出的图像是我们想要的那种图像,和我们的输入是对应的、有关联的。比如输入一只喵的草图,输出同一形态的喵的真实图片(这里对形态的要求就是一种用户控制)。
2. 低分辨率(Low resolution)和低质量(Low quality)问题
尽管生成的图片看起来很不错,但如果你放大看,就会发现细节相当模糊。
怎样改善?
前面说过传统的GAN的种种局限,那么现在,我们相应的目标就是:
提高GAN的用户控制能力
提高GAN生成图片的分辨率和质量
为了达到这样的目标,和把大象装到冰箱里一样,总共分三步:
pix2pix:有条件地使用用户输入,它使用成对的数据(paired data)进行训练。
CycleGAN:使用不成对的数据(unpaired data)的就能训练。
pix2pixHD:生成高分辨率、高质量的图像。
下面分别进行详细叙述~
pix2pix
pix2pix对传统的GAN做了个小改动,它不再输入随机噪声,而是输入用户给的图片:
但这也就产生了新的问题:我们怎样建立输入和输出的对应关系。此时的G输出如果是下面这样,D会判断是真图:
但如果G的输出是下面这样的,D拿来一看,也会认为是真的图片QAQ…也就是说,这样做并不能训练出输入和输出对应的网络G,因为是否对应根本不影响D的判断。
为了体现这种对应关系,解决方案也很简单,你可以也已经想到了:我们把G的输入和输出一起作为D的输入不就好了?于是现在的优化目标变成了这样:
这项研究还是挺成功的,大家可以去在线体验一下demo,把草图(sketch)变成图片:
链接地址:https://affinelayer.com/pixsrv/
当然,有些比较皮的用户输入了奇形怪状的草图,然后画风就变成了这样:
应用
pix2pix的核心是有了对应关系,这种网络的应用范围还是比较广泛的,比如:
1. 草图变图片[Isola, Zhu, Zhou, Efros, 2016]:
2. 灰度图变彩色图[Isola, Zhu, Zhou, Efros, 2016]:
3. 自动着色Data from [Russakovsky et al. 2015]:
4. 交互式着色[Zhang*, Zhu*, Isola, Geng, Lin, Yu, Efros, 2017]:
下次会讲CycleGAN和pix2pixHD,它们分别解决了数据不成对和图像分辨率低的问题。
点击原文可查看链接哟!
领取专属 10元无门槛券
私享最新 技术干货