继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

大三少年造出AI写意画家,像人类一样挥笔作画丨已开源,有Demo

量子位
关注TA
已关注
手记 281
粉丝 5271
获赞 368
郭一璞 发自 北大旁边 
量子位 报道 

5cc5b3c70001d6ca02560256.jpg

从茫茫的一片白,到细细勾勒出建筑的轮廓。

雕梁画栋悄悄的构建,飞檐区分出天和地。

正前方道路悄悄显现,雪地由模糊变得清晰,道路通向的,则是庄严的大殿。

一切都像梦里一般,宫殿如同电影镜头那样显现,刚开始模糊抽象,定睛一看却是实景,绘画风格十分独特。

这个AI名叫LearningToPaint,作者是北大信息科学技术学院大三学生黄哲威(hzwer)。

同样的效果,还可以出现在照片上:

5cc5b40400011de502560256.jpg

“复现”名家油画也可以:

5cc5b4050001e44f02560256.jpg

从大面积的花瓶、花朵,到勾勒细节的花瓣,梵高的作品就这样演绎出来。

印象派的也ok:

5cc5b43d0001adef02560256.jpg

光影粗略勾勒,描绘出一个高度马赛克状态的日出,之后补充细节,水面、云霞、船上的桅杆依次出现。

这个AI的思路非常写意派,就像“画马”一样,粗略勾勒出马的形态,之后便能迅速的补充每个细节,画面形象也因此在屏幕上活过来了。

https://img1.mukewang.com/5cc5b4a400012d9b03880480.jpg

https://img2.mukewang.com/5cc5b4b70001085904500257.jpg

写意派绘画AI的诞生

不仅这个AI会画画,它的作者也会画画。黄哲威的灵感,正是来自于学习绘画的经历。

小时候学素描的时候,他觉得素描老师就是画技高超的大佬,无论是描绘静物还是人物画像,老师都能画得惟妙惟肖。

然而,单纯画得像并不意味着画得好。

后来,当他看到毕加索、丢勒等画家的作品时才发现,绘画大师们根本无需刻意“画得像”,而是只用寥寥数笔,就能勾勒出景物的本质,描绘出生动的形象。

https://img2.mukewang.com/5cc5b535000185e809601398.jpg

那AI能不能这样画呢?

不让AI一个像素一个像素的填充,而是教他们像人类一样一笔一划的绘画。让AI学会在连续的动作空间上作决策,每步决定一个笔画的形状,位置,颜色等参数。如果还能限制笔画数量,是不是就能像大画家们一样,用简单的几笔就能画出景物的灵魂呢?

为了实现这样一个AI,黄哲威和同伴选定了深度确定策略梯度 (DDPG) 算法

和GAN有些类似,DDPG也是一个“精神分裂”的算法,分为两个网络:

策略网络Actor,负责画画,是一个面向评委的画师,为了获得评委的高评价不断进步;

价值网络Critic,负责当评委,Actor画出的每一笔他都要做出评价,力求成为一个客观、中立、公允的评委老师,最终目标是帮助Actor画出一个最像原图的画。

因此,在这样一个“精神分裂”的状态下,AI学会了对自己严格要求。

https://img.mukewang.com/5cc5b54d0001a27404960466.jpg

 DDPG

即使增加了许多改进,原版DDPG算法的效果依然不理想,经过大量训练的AI,依然很难画出像样的笔画。

最后,黄哲威把DDPG改造成了一个基于模型的方法。

https://img4.mukewang.com/5cc5b55b0001935105890445.jpg

 Model-based DDPG

他想到,可以预训练一个神经网络作为笔画渲染器,帮助AI完成对绘画过程的建模。

改造之后,训练速度和表现都有了大大的提高。

https://img2.mukewang.com/5cc5b5700001af0206510519.jpg

整个网络的结构长这样,使用了带有梯度惩罚的WGAN(WGAN with gradient penalty),用来度量画和目标的相似度:

https://img3.mukewang.com/5cc5b57b00012fd206780330.jpg

FC指的是全连接层,除了最后一个全连接层的输出向量,策略网络Actor和价值网络Critic采用了同样的结构。

https://img4.mukewang.com/5cc5b58b0001c1e806770357.jpg

Conv指的是卷积层,GAP指的是全局平均池化层。

https://img2.mukewang.com/5cc5b5a10001b3c906500270.jpg

神经渲染器,由几个全连接层和子像素卷积层(Sub-Pixel)组成,可以生成各种不同种类的笔画。

有了网络结构之后,就可以在包括MNIST、SVHN、CelebA和ImageNet等各个知名数据集上训练了。训练的过程实际上是AI不断尝试绘画,不断改进自身策略的过程,不需要标注数据,也不需要人类的绘画经验。

以CelebA为例,训练需要一张 GPU,10小时预训练笔画渲染器,40小时训练AI,总共要画百万张画。

在线Demo,你也能让AI画画

LearningToPaint的代码和CelebA上训练好的模型已经开源,Colab上还有一个在线Demo,不会写代码的同学也可以试用。

https://img4.mukewang.com/5cc5b5b2000119b507010324.jpg

只要依次点每一行开头的符号运行,运行到Training之前的部分,AI就可以画出一张川普头像。

5cc5b46c0001e30c02560256.jpg

把第五行中的地址换成任意一张你喜欢的图片,接着继续运行到第八行,就可以看到AI画出这张图。

当然,由于显示窗口是正方形的,如果上传的是非正方形图片会被压缩,建议裁剪之后再放上来,或者也可以把第七行的512×512改成你想要的尺寸。

如果运行到第7行,问你要不要重新做一个视频:

File 'video.mp4' already exists. Overwrite ? [y/N]

就在后面的框框里输入y表示yes。

比如,我们试了试让AI画新垣结衣小姐姐:

5cc5b5b50001c90902560256.jpg

最近因为巴黎圣母院事件又火起来的《刺客信条》中的主角:

5cc5b5b60001d7b802560256.jpg

甚至抽象版《复联4》的海报,海报上的字都能辨识:

5cc5b5b70001364002560256.jpg

另外,你还可以设定强制AI用不同形状的画笔来绘制,比如只许画圆:

5cc5b5b80001f75b02560256.jpg

或者只许画三角形:

5cc5b5b900018d8f02560256.jpg

信息学竞赛选手黄哲威

虽然黄哲威现在还是本科在读,但是他在高中的时候就是信息学竞赛选手,接触CS领域有相当长的时间了。黄哲威对量子位说,自己的算法博客hzwer.com日均有上万浏览量。

5cc5b5ba0001e57e02560256.jpg

2013年,他被保送到福建省顶尖高中福建师大附中,从高一开始接触信息学竞赛,最终进入第32届全国信息学竞赛福建省队,获得全国赛银牌,也获得了北京大学本一线录取的机会。

进入北大信科一年后,他获得了ICPC区域赛金牌,还成为了旷视科技智能计算组(IC组)的实习生,之后参加了NIPS 2017的Learning to Run比赛,使用Actor-Critic Ensemble算法获得了第二名。

传送门

论文:
Learning to Paint with Model-based Deep Reinforcement Learning
Zhewei Huang, Wen Heng, Shuchang Zhou
https://arxiv.org/abs/1903.04411

GitHub:
https://github.com/hzwer/LearningToPaint

作者撰写的介绍文章:
https://zhuanlan.zhihu.com/p/61761901

Demo:
https://colab.research.google.com/github/hzwer/LearningToPaint/blob/master/LearningToPaint.ipynb

—  —


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP