从“猜画小歌”背后的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. 为什么要在中国推小程序?

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

原文发布于微信公众号 - AI启蒙研究院(AIEvolve)

原文发表时间:2018-07-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据小魔方

R语言可视化——数据地图离散百分比填充(环渤海)

今天跟大家分享如何以百分比形式填充离散分段数据地图。 案例用环渤海三省二市的地理数据。 library(ggplot2) library(maptools) l...

3094
来自专栏机器学习养成记

小案例(七):口碑分析(python)

案件回顾 商业街口碑分析 顾客在网络上会发表对商品或商店的留言信息 对留言进行分析,可以对商业街进行口碑分析 在论坛中整理了300条留言,并进行分词处理,整理...

3617
来自专栏自学笔记

Aggregation Model : Blending , Bagging , Boosting

比如现在有一支股票,你不知道是跌还是涨。你有T个friends,每一个friend对应的建议分别是g1,g2,g3...gn,那么你应该怎么选择建议?

1273
来自专栏Petrichor的专栏

论文阅读: YOLOv2

本文获得了CVPR 2017 Best Paper Honorable Mention:

2824
来自专栏深度学习自然语言处理

深度学习如何入门?

关于深度学习,网上的资料很多,不过貌似大部分都不太适合初学者。 这里有几个原因: 深度学习确实需要一定的数学基础。如果不用深入浅出地方法讲,有些读者就会有畏难...

3428
来自专栏AI研习社

TOP 5% Kaggler:如何在 Kaggle 首战中进入前 10% | 干货

编者按:本文作者章凌豪,复旦大学计算机科学专业。有兴趣的同学可以移步他的个人主页:https://dnc1994.com/Introduction(点击文末“阅...

3836
来自专栏PPV课数据科学社区

【学习】SPSS聚类分析全过程

案例数据源: 有20种12盎司啤酒成分和价格的数据,变量包括啤酒名称、热量、钠含量、酒精含量、价格。数据来自《SPSS for Windows 统计分析》dat...

3686
来自专栏AI研习社

利用摇滚乐队学习TensorFlow,Word2Vec模型和TSNE算法

学习“TensorFlow方式”来构建神经网络似乎是开始机器学习的一大障碍。在本教程中,我们将一步一步地介绍使用Kaggle的Pitchfork数据构建Band...

1582
来自专栏量化投资与机器学习

【全网首发】机器学习该如何应用到量化投资系列(二)

有一些单纯搞计算机、数学或者物理的人会问,究竟怎么样应用 ML 在量化投资。他们能做些什么自己擅长的工作。虽然在很多平台或者自媒体有谈及有关的问题,但是不够全面...

2756
来自专栏数据结构与算法

中国剩余定理详解

引入 我国古代数学著作《孙子算经》中有一道题目,它的描述是这样的 今有物不知其数,三三数之余二;五五数之余三;七七数之余二。问物几何? 这道题用现代数学理...

37211

扫码关注云+社区

领取腾讯云代金券