学贯中西(7):介绍生成对抗网路(GAN)
2022-05-30高焕堂
高焕堂
1 GAN与NFT的结合
在上一期里,我们说明了天字第一号模型:分类器。接着本期就来看看它的一项有趣应用:GAN(generativeadversarial networks,生成对抗网络)。自从2014 年问世以来,GAN 在电脑生成艺术(generative art) 领域,就开始涌现了许多极具吸引力的创作和贡献。GAN 如同生成艺术的科技画笔,使用GAN 进行创作特别令人振奋,常常创作出很特别的效果,给人们许多惊喜的感觉,例如图1。
近年来,非同质化代币NFT(non-fungible token),可以让艺术创作者发行其创作品,使得电脑生成艺术和NFT 结合起来,成为一条鸟语花香的新领域。换句话说,NFT 让生成艺术获得了很好地表达机会,它将在NFT 的土壤里成长茁壮、无尽繁荣。
2 从分类器到GAN模型
GAN 是由蒙特利尔大学的Ian Goodfellow在2014 年提出来的神经网路模型。GAN 通常包含两个角色,两者互相较量( 对抗),但又展现出教学相长,共同成长的美好机制和效果。这两个角色就是:判别者(discriminator) 与生成者(generator)。其中判别者的实现架构就是上一期所介绍的分类器。所以分类器在GAN 里扮演很重要的角色就是判别者。这判别者(D) 是老师角色,而生成者(G) 则是学生角色。老师引导学生创作,两者互相较量( 对抗),但又展现出教学相长的效果。例如,在图像渲染的应用上,它们的功能分别如下所述。
● G( 学生) 负责生成图片。它接收一个随机噪声(z),或者其他条件( 如黑白底图或边框),然后基于这个噪声或條件来生成新图片。
● D( 老师) 负责辨别一张图片的真或假。它的输入是一张图片,进行辨别之后,输出其判断为真品或假品的概率。如果输出值愈接近于1,代表其为真品的概率愈大;而当输出值愈接0,代表其为假品的概率愈大。
在GAN 模型的训练过程中,我们会拿真品来输入给D,也会拿由G 生成的假品来输入给D。其目的是要训练D,以便提升它判断图片真或假的能力。如果D 判断正确,表示G( 学生) 生成的新作品( 假品) 被D 识破了,这意味着G 的作品不够逼真,此时G 就会依据D 的反馈而调整其参数,因而G 就成长了。反之,如果D判断错误,表示D的辨别能力不足,例如被G骗了( 将假品误判为真品),于是D 就会调整其参数,因而D 也成长了。这样的训练过程,持续重复下去,GAN 里的两个角色,互相较量( 对抗),展现出了教学相长的美好效果。最后,G 大幅成长了,绘制出来非常逼真的作品( 假品) 了。
3 解说<教学相长>的情境
话说有一位学生(G),想从老师(D) 学习画漫画( 例如龙猫故事的插画)。但是这位老师并不会画漫画,那么他( 她) 又如何教学生画漫画呢? 在教学的过程中,两者都是从零开始,一起成长。这可以说是一个教学相长的过程(如图3- 图)。一开始,老师和学生,两者都是从零开始。
1. 虽然老师不会画,但它会拿学生作品来与龙猫漫画书来做特征对比。
2. 如果学生作品没有龙猫漫画的重要特征,就会感觉画得不像。
3. 于是,学生开始作画了。
4. 老师发现了学生作品里没有龙猫漫画的重要特征:胡须。
5. 老师就要求学生加以改善。
6. 老师又发现学生作品里少了龙猫漫画的另一项特征:娃娃哭时嘴巴张很大。
7. 老师就要求学生加以改进。
8. 两者互相较量,又协同创新、教学相长。
然后,持续不断地改进下去,就会止于至善。图12里,左图是鉴赏者所握有的原图,而右图则是创作者所生成的创作品。可以看出来了,透过生成对抗协同创新,所生成的作品已经几可乱真了。
4 范例解说:学习毕加索的画作风格
此范例使用百度飞桨(PaddlePaddle) 框架而设计来的GAN 模型。它可以自己观察毕加索(Picasso) 的画作而自我学习。并且渲染很接近原图的彩色作品了。其目标是:训练了一个GAN 模型,学习毕加索的画风。其作法:采取Lab 颜色空间,将*.jpg 图像,分解为L、a、b 三通道。将单通道 L 输入给G( 生成者),由G 自己生成两通道:new_a 和new_b。然后将[L, new_a,new_b] 汇合成为一张新的*.jpg 图像。
在您的电脑上,需要安装飞桨模型框架,以及相关的套件。然后准备训练资料:即10 张毕加索的画作(*.jpg)。
图片大小不拘,GAN 会自动调整为256 x 256 大小。接下来,就以这10 张图像作为训练数据,在飞桨环境里,对这GAN 模型展开训练。训练完毕了,就可以来检测一下了。现拿毕加索的一张画作原图如图14。
这模型会先取出图像的L 通道,也就是一张黑白底图。
于是GAN 就基于张黑白底图,自动生成new_a 和new_b 两通道的值,最后汇合出极为接近逼真的新图像,如图16。
于是,这个GAN 模型学习了毕加索的画作风格。您也可以把您自己的任何彩色(JPG) 图片,取出L 通道,输入给这训练好的模型。它就会重新彩绘出毕加索的色彩风格了。此外,您还可以继续拿莫内、梵高等的画作让它学习,就能将您的图像彩绘出这些名家的混合风格了。
4 结语
本文首先说明GAN 在电脑生成艺术领域里,将提供更精彩的贡献,然后说明了GAN 的架构。GAN 里的重要角色之一就是判别者(D),它就是分类器,这在上一期里已经详细介绍过了,请您复习之。至于生成者(G)的架构,就请您期待本专栏的下一期继续解说GAN 的更多魅力。