前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从“猜画小歌”背后的AI原理,教大家如何得高分

从“猜画小歌”背后的AI原理,教大家如何得高分

作者头像
用户1594945
发布2018-08-10 17:20:57
8000
发布2018-08-10 17:20:57
举报
文章被收录于专栏:AI启蒙研究院AI启蒙研究院

作者:邵宇,清华大学计算机专业博士

近期谷歌的“猜画小歌”小程序在微信里很风靡,大家对它又恨又爱,原来电脑这么好玩,画得这么乱都能识别出来,但是有时候明明画得很像,为什么就不能正确识别呢?

谷歌在2017年5月发布的文章《ANeural Representation of Sketch Drawings》中,详细介绍了如何对这类简笔画进行建模,以及如何用电脑自动生成简笔画。

如果想自己动手玩,网址是:https://magenta.tensorflow.org/sketch-rnn-demo

0. 这篇文章有哪些好玩的结果?

答:(1)模仿人画画。上面一排是人画的,下面一排是AI在人画的基础上,重建的简笔画

(2)能画出“狮身人面像”。如输入一个牙刷到猫模型里面,就出现了具有牙刷样子的猫

(3)能帮人纠错。如果输入了八条腿的猪,输出会纠正为四条腿。

(4)能做变换。从一个物体变到另一个物体,如从自行车渐变到瑜伽,从猫变到一头猪。

(5)能做预测。预测人未来可能画画的步骤,如下图红色的人画的,其它颜色是AI预测的。

(6)能从一个简单的输入,得到不同的简笔画。如输入一个圆圈和正方形,在不同的模型中,得到了蚂蚁、自行车、直升飞机等等不一样的输出。

1. 电脑AI识别简笔画具体的模型?

答:该模型谷歌将其称为:sketch-rnn。

蓝色的部分是将简笔画进行编码,生成一个图像的特征向量,自动编码框架的目标是训练一个将输入序列编码为浮点数向量的神经网络,这个向量称为latent vector。而粉红色的部分是是利用特征向量生成简笔画,使用解码器从latentvector重构输出序列。

该模型的训练过程非常好理解,就是深度学习里的自动编码器原理。由于这篇文章是开创性的,考虑到画画是一个序列过程,因此这篇文章很自然的:在编码和解码都用到了RNN,后续也有其他学者对其进行来改进,如用 CNN-RNN来进行编码。

2. GAN模型也能让AI自动画画,为什么不用GAN模型?

答:GAN往往是基于像素来生成,会出现很奇怪、很吓人的结果,如三个头的猴子。而sketch-rnn是基于笔画建模的,最终AI画画的结果是向量图。

3. 为什么这个自动编码器能这么成功?

答:所有的深度学习训练过程都用到自动编码,首先将输入的绘画序列变为一个本征向量(参数为。sketch-rnn中的两个金字塔神经网络模型(一个是编码、一个是解码)放在一起竟然能成功!其实谁也不知道为什么,但它就是好用,结果好行。

4. 画画的过程如何变成模型的输入?

答:一般一个简笔画,大概200~300个像素点。第一步:以落笔的第一点为原点,以后的每一点都用5个元素表示(X,Y,P1,P2,P3)来表示,其中X,Y是坐标点,P1,P2,P3是one-hot 向量,也即是这三个中只有一个为1,其余两个为0,其中P1=1表示当前正在画画,P2=1表示笔将离开画板,P3=1表示画画结束。

自动编码器的模型输入是不超过300点的序列。下面这个乌龟,用5个元素的序列表示如下。

5. 训练的样本量有多大?

答:每个类别都有7万个训练样本,以及2500个验证和测试样本。

6. 以上的sketch-rnn模型建模和训练,只能做到让电脑自动画简笔画,那电脑是如何判断我画的画是属于什么类别?

答:谷歌没有披露具体的过程,我猜一个简单的方法:是用sketch-rnn模型训练数据库里所有的数据,然后将模型蓝色部分(也就是编码部分)latentvector作为简笔画的特征,然后基于监督方法训练出一个判别函数,用于判别我画的内容属于哪一类。在实践中,AI可能同时猜出好几个类别出来,这可能是判别函数的输入latent vector上加了一点噪声,使得输出有好几种类别。

当然,也可以用比较复杂的方式实现:对样本中350多个类别,每个类别建立一个sketch-rnn模型,再叠加一个判别函数。

7. 玩“猜画小歌”有什么技巧?

答:(1)不要拖泥带水,简洁最重要。因为程序只能接受大约200个左右的输入点,如果画很多细节,反而认不出来。以下是我画的蝴蝶,够简单吧。那个斑马图输在脖子画太多细节了。

(2)如果第一次画的没有识别出来,迅速擦掉重画,不要希望AI会后期力挽狂澜。从sketch-rnn模型可以看出,画画的路径转换为latent vector,前期的数据比重很重要。

(4)最后一招:谷歌公开了所有类别的训练样本,大家可能上这个网站(https://github.com/googlecreativelab/quickdraw-dataset)下载,看看每个类别“正确”的画法。

8. 为什么要在中国推小程序?

答:因为谷歌的网页版猜画小歌,由于大家都知道的原因,没有中国的数据。这次利用微信小程序刚好收集一下中国的数据。有人还做了不同国家画画的差别,比如日本人画圆是顺时针的,而绝大多数国家是逆时针的,原因是日文中的圆的顺时针写的。韩国和俄罗斯用户脑中,最直觉性的椅子图像是侧放的,而美国、德国、巴西、南非都是正面放置的。后续基于这个大样本,还能分析出很多好玩的东西。

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

本文分享自 AI启蒙研究院 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档