猜画小歌刷屏,其实你也可以很skr

ssss

前言

“猜画小歌”是谷歌推出的首款小程序应用,其是利用的是神经网络技术,基于对大量涂鸦样本的学习。因为觉得很有趣,所以我也做了一个简版的猜画小歌,希望能帮非程序员理解更形象背后的原理,能给想实现的小伙伴提供一点技术帮助!skr是被吴亦凡带出的,这里取的是“赞”的意思!哈哈哈哈哈

一.背景

前段时间猜画小歌刷屏朋友圈,整个朋友圈都充满了幼稚园美术班的气息!随处可见的“神画手”(ps:其实我自己也是一个“超神画手”😛给你们看看我画的,注意是螃蟹,螃蟹,螃蟹  重要的事情说三遍

企业微信截图_fb2cf4ff-61ff-420c-ba17-712cc22aacab

这样都能猜中,我都佩服Google AI!

查看了一下背后的技术主要是计算机视觉和神经网络,由来自谷歌AI的神经网络驱动!

听到计算视觉,神经网络   一听到这两个词  让我一下脑海联想到这个表情👇

6af89bc8gw1f8t0d9culij209x080gly

一堆数学公式在我脑袋穿梭!差点就放弃了~

二.实现简版猜画小歌

来来来。。。说了那么多,不绕圈子啦!怎样让你也能写出一个简版的猜画小歌??重点来了,介绍一个前端的神经网络库:

brain.js

支持多种神经网络RNN 、LSTM 、 GRU等

轻松创建神经网络,然后根据输入/输出进行训练

来看下到底有多简单!看官方这段实例代码👇

55

实现一个简版的rgb颜色识别

一行代码创建一个反向传播前馈神经网络实例

var net = new brain.NeuralNetwork();

好了什么神经网络算法的书可以再见了~

00000

还有主要是两个方法:

第一个 train() 训练模型

第二个 run() 使用训练好的模型进行预测

是不是很简单!

基于brain.js,我做了一个简单的例子来帮助大家理解一下猜画小歌背后的原理

1.首先在前端用canvas 创建六个涂鸦画板

22

2.然后把canvas的数据喂给神经网络进行模型训练,主要代码如下

33

3.再通过likely函数对你画的图进行预测

44

好了,来看看效果~

呀呀呀

哈哈哈哈……怎么样?太skr了有木有👇

IMG_6678

三.结尾

例子的训练是直接加载到网页上,如果要进行大数据的训练,最好Node.js环境中运行,因为训练会占用大量的资源。例子所使用的训练数据还是比较少的,所以错误率在0.005左右,训练数据越多,错误率越低!

其实程序是很傻瓜的,你会发现Google AI如果你画得细节一点,它是认不出来的,因为它主要是涂鸦抽象训练,认不出来复杂的细节图~

大家不用担心机器人统治人类,西部世界离我们还很远,送上一张Google AI创作出来的图片
😆😆😆“from its dreams”

google-ai

 

最后附上brain.js的GitHub地址:https://github.com/BrainJS/brain.js

发表评论