欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~html
"猜画小歌"用到的quickdraw模型本质上是一个分类模型,输入是笔画的点的坐标信息和每笔起始的标识信息,应用几个级联的一维卷积,再使用 BiLSTM 层并对结果进行求和,最后使用Softmax层进行分类。github
整个网络结构如图:算法
模型结构数据库
开源数据和代码详见后面参考文档。整个网络比较简单,并且用其默认的参数最终的模型准确率在75%,以下图,不算是一个要求较高的场景,效果已经足够好。小程序
这里分享笔者注意到的有几个有意思的小细节(高手轻拍)。微信
对于stroke-3(x,y,n),Google默认使用的TFRecord数据对坐标作了归一化与差值处理。网络
# 1. Size normalization. lower = np.min(np_ink[:, 0:2], axis=0) upper = np.max(np_ink[:, 0:2], axis=0) scale = upper - lower scale[scale == 0] = 1 np_ink[:, 0:2] = (np_ink[:, 0:2] - lower) / scale # 2. Compute deltas. np_ink[1:, 0:2] -= np_ink[0:-1, 0:2] np_ink = np_ink[1:, :]
为何归一化?ide
为何差值处理?函数
使用多个一维卷积(conv1d)级联,并使用线性激活函数,没有使用pooling层。
为何线性激活和去掉pooling层效果提高2-3个点?
pooling层有哪些做用:
笔者(单纯的)理解简笔画已是人类对于物体的高度抽象了,所以没有必要在用复杂的CNN网络去抽象特征,而且全局的特征有后面的RNN层获取。
Google 16年11月就推出了QuickDraw网页版,最近只是借助小程序又火了一把,以前已经获取过大量真实的用户数据,并用于此次小程序效果的优化。
模型还能用来作啥?
最近看到了一片研究这份简笔画数据中不一样国家的人的绘画顺序与其国家文字的关系的文章,并且时序分类模型在异常分析、手写体识别、语音识别、文本分类等领域有大量的研究和进展。
画圆的不一样
笔者研究生阶段曾经研究过电脑使用者的异常分析,根据用户的鼠标轨迹和键盘操做等特征创建分类模型识别是否是本人在操做。如今想来,直接拿这个模型来跑以前的任务,应该还不错。
产品层面,咱们还能有些什么创新?
这些绘画数据还有什么能够挖掘的价值?
绘画是人在用本身的方式描述本身理解的世界,若是从这些简单的简笔画入手,可以从中学习出人理解物体和世界的方法,简单来讲能够迁移到目前图像识别算法的高层抽象阶段,提高某些任务的效果;复杂一点甚至能够用做提高机器的推理能力,学习人类对物体和世界抽象建模的能力(脑洞)。
https://tensorflow.juejin.im/tutorials/recurrent_quickdraw.html
https://github.com/tensorflow/models/blob/master/tutorials/rnn/quickdraw/
https://www.jiqizhixin.com/articles/2017-09-12-5
https://juejin.im/post/5b559b76e51d45616f4596dd
https://zhuanlan.zhihu.com/p/39059583
问答
相关阅读
此文已由做者受权腾讯云+社区发布,原文连接:https://cloud.tencent.com/developer/article/1171905?fromSource=waitui
欢迎你们前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~
海量技术实践经验,尽在云加社区!