成为VIP会员查看完整内容
VIP会员码认证
首页
主题
发现
会员
服务
注册
·
登录
0
在浏览器训练个剪刀石头布探测器,你的小电脑也可以
2019 年 8 月 23 日
机器之心
选自Heartbeat
作者:Gant Laborde
机器之心编译
参与:韩放
你知道怎样在浏览器中训练并测试机器学习模型吗?本文带你快速训练一个「剪刀石头布」的识别模型,你可以在家向朋友演示你的模型效果。
假设你回到两年前,现在要让我写一个算法,拍摄一只手的图像,并确定它是石头、剪刀还是布。我会说这有可能实现,但需要给我 6 个月时间。
现在,如果你再问我这个问题,我可以引导你访问 https://rps-tfjs.netlify.com/,并说:「您可以 10 分钟内在浏览器中训练一个模型。」
什么是网页版「石头剪刀布」
通过这个网站,我们可以在浏览器中准确得完成识别石头剪刀布这一任务,所有计算都在本地完成,速度将取决于本地硬件的好坏。因为该项目使用了 TensorFlow.js,所有繁重的工作都发生在浏览器和 JavaScript 中!
机器学习需要数据来训练模型,我们期待经过一段时间的训练后,这个模型变得足够聪明,从而识别以前从未见过的石头、剪刀和布的照片。
首先,我们需要一些「石头、剪刀、布」图像的训练数据。先不要急着给所有的朋友打电话收集数据,我们可以使用谷歌 Laurence Moroney 提供的一些优秀数据。
数据集地址:http://www.laurencemoroney.com/rock-paper-scissors-dataset/
浏览器怎样加载训练数据
在正常的机器学习工作流程中,我们可以按文件夹组织图像文件,并通过简单的全局变量获取。但是在浏览器中,系统对内存中加载的内容进行了沙盒处理,如果我们要加载 10MB 的图像,那么就会遇到障碍。
幸运的是,我们可以利用一个经典的技巧将一组图像传输到浏览器:sprite 表。我们把一组图像粘在一起形成单独的图像。在这种情况下,每一个小图都展开成一个向量,这些向量堆叠在一起就是一张「大图」。通过这种方式,我们就可以创建 10MB 的大图像来保存所有小图像。
将二维图像展开成一维向量的效果图。
我编写了自己的 sprite 表生成器,并在「石头剪刀布」数据集上运行它。结果看起来很疯狂。您可以看到这样的图像:
转换成这样的集合:
单张小图缩小到 64x64,上图一共 2520 张,产生的图像是(4096x2520)。
Python 源代码在这个项目的 spritemaker 文件夹中,因此如果你要对完全不同的数据集执行类似的操作,可以用它创建自己的 sprite 表。
既然所有图像都被组合成单一的图像,我们就可以将图像分割开来进行训练和验证。
单击按钮-准备训练
可能需要一秒钟的时间来加载并解析大图像,并且当你按下网站上的按钮时,信息将被填充到 TensorFlow Visor。它基本上是一个小的滑动菜单,帮助我们在训练时显示信息。
在 visor 上,我们将看到从数据集中随机抽取了 42 张图像作为测试数据。所有图像数据是 RGB 的,但是如果我们打开 constants.js,可以将通道数减少到 1。
加载 42 张随机样本并显示在 vis 中。
此外,我们将在此侧菜单中看到模型层、未经训练的结果、训练统计信息和训练结果。
你创建模型的界面如下:
我得到了一个适用于简单数据的简单模型,还有一个高级模型。其中高级模型对多个角度和背景的数据更有效,它的鲁棒性更强。
什么样的「石头剪刀布」模型才算好
你可能会想,我们应该使用高级的模型,这是一个常见的陷阱。如果你选择高级模型,你可能会遇到一些常见的问题。首先,它需要更长的时间来训练,第二,它甚至可能训练地不好。第三,如果训练时间过长,高级模型将出现过度拟合现象。
过度拟合意味着该模型在预测训练数据方面非常出色,但是对从未见过的数据非常糟糕,一个好的机器学习模型应该是可以泛化的。
在训练模型时,每一次迭代更新一张效果图表,在本例中为 512 个图像迭代一次。并且每个 epoch 更新一次图标(所有 2100 个训练图像)。良好的训练迭代意味着损失减少,准确度提高。
准确率图表中的橙色线是在验证集上的表现,即模型在未经训练的 420 张图像上精确度如何。可以看到橙色线的训练准确率很高!我们的模型应该很好地泛化(只要新的图像在复杂性和样式上与训练数据相似)。
如果点击「查看训练后模型」,会看到一些很好的结果!
正如你所看到的,剪刀总是准确的,而我们最差的类是布,只有 95% 的准确率。由于训练是随机初始化的,所以每次结果会略有不同。为了进一步挖掘识别效果,我们也得到了一个混淆矩阵。
正如在这里看到的,布被意外地归类为剪刀 6 次。这是有道理的,有时候布看起来有点像剪刀。像上面这样的混淆矩阵可以帮助我们找出需要解决的问题。
最后看看效果吧
现在我们终于可以在现实世界中测试我们的模型了。使用网络摄像头,我们可以检查我们自己的手是否有石头剪刀布!请记住,我们希望我们的照片与我们的训练图像相似,以便正常运行(无旋转和白色背景)。
网络摄像头将拍摄并转换为 64x64 图像。
你已经在你的浏览器中训练了一个模型,验证测试了它,甚至在现实场景中测试了它。很少有人能做到这一点,在浏览器中完成这一切的人甚至更少。
最后本项目的一些资源:
源代码:https://github.com/GantMan/rps_tfjs_demo
Demo:https://rps-tfjs.netlify.com/
本
文为机器之心编译,
转载请联系本公众号获得授权
。
✄------------------------------------------------
加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com
投稿或寻求报道:
content
@jiqizhixin.com
广告 & 商务合作:bd@jiqizhixin.com
登录查看更多
点赞并收藏
0
暂时没有读者
0
权益说明
本文档仅做收录索引使用,若发现您的权益受到侵害,请立即联系客服(微信: zhuanzhi02,邮箱:bd@zhuanzhi.ai),我们会尽快为您处理
相关内容
训练数据
关注
3
【ICML2020-伯克利】反直觉!大模型重压缩提升Transformer的训练和推理效率,47页ppt
专知会员服务
69+阅读 · 2020年7月1日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【干货书】高级应用深度学习,294页pdf
专知会员服务
151+阅读 · 2020年6月20日
【实用书】挖掘社交媒体,208页pdf使用Python分析网络数据
专知会员服务
61+阅读 · 2020年5月8日
【2020新书】《“一行”Python:如何写出精炼的Python代码》,216页pdf
专知会员服务
249+阅读 · 2020年4月19日
自回归模型:PixelCNN
专知会员服务
26+阅读 · 2020年3月21日
模型压缩究竟在做什么?我们真的需要模型压缩么?
专知会员服务
27+阅读 · 2020年1月16日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
86+阅读 · 2019年11月25日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
PC微信逆向:两种姿势教你解密数据库文件
黑客技术与网络安全
16+阅读 · 2019年8月30日
OpenAI「假新闻」生成器GPT-2的最简Python实现
机器之心
4+阅读 · 2019年4月20日
你真的会正确地调试 TensorFlow 代码吗?
数据库开发
7+阅读 · 2019年3月18日
158万张图像的鉴黄数据集
机器学习算法与Python学习
15+阅读 · 2019年2月14日
已删除
AI科技评论
4+阅读 · 2018年8月12日
【学界】毫秒级图像去噪!英伟达、MIT新AI系统完美去水印
GAN生成式对抗网络
8+阅读 · 2018年7月17日
手把手教你搭建AI开发环境 !(附代码、下载地址)
数据派THU
6+阅读 · 2017年12月15日
教你用TensorFlow和自编码器模型生成手写数字(附代码)
数据派THU
3+阅读 · 2017年11月21日
30行代码,带你分分钟创建神经网络!(附工具&教程)
数据派THU
9+阅读 · 2017年9月21日
从TensorFlow安装开始,在MNIST数据集上构建神经网络
AI前线
12+阅读 · 2017年7月3日
OK-VQA: A Visual Question Answering Benchmark Requiring External Knowledge
Arxiv
9+阅读 · 2019年9月4日
CapsuleGAN: Generative Adversarial Capsule Network
Arxiv
4+阅读 · 2018年9月25日
Bidirectional Attention for SQL Generation
Arxiv
4+阅读 · 2018年6月21日
To Create What You Tell: Generating Videos from Captions
Arxiv
3+阅读 · 2018年4月23日
Phrase-Indexed Question Answering: A New Challenge for Scalable Document Comprehension
Arxiv
3+阅读 · 2018年4月20日
Correlated discrete data generation using adversarial training
Arxiv
5+阅读 · 2018年4月3日
DDRprog: A CLEVR Differentiable Dynamic Reasoning Programmer
Arxiv
5+阅读 · 2018年3月30日
Finding ReMO (Related Memory Object): A Simple Neural Architecture for Text based Reasoning
Arxiv
4+阅读 · 2018年1月26日
Vision-and-Language Navigation: Interpreting visually-grounded navigation instructions in real environments
Arxiv
3+阅读 · 2017年11月24日
DuReader: a Chinese Machine Reading Comprehension Dataset from Real-world Applications
Arxiv
4+阅读 · 2017年11月15日
VIP会员
自助开通(推荐)
客服开通
详情
相关主题
训练数据
数据集
机器学习模型
机器学习
Laurence Moroney
图像传输
相关VIP内容
【ICML2020-伯克利】反直觉!大模型重压缩提升Transformer的训练和推理效率,47页ppt
专知会员服务
69+阅读 · 2020年7月1日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【干货书】高级应用深度学习,294页pdf
专知会员服务
151+阅读 · 2020年6月20日
【实用书】挖掘社交媒体,208页pdf使用Python分析网络数据
专知会员服务
61+阅读 · 2020年5月8日
【2020新书】《“一行”Python:如何写出精炼的Python代码》,216页pdf
专知会员服务
249+阅读 · 2020年4月19日
自回归模型:PixelCNN
专知会员服务
26+阅读 · 2020年3月21日
模型压缩究竟在做什么?我们真的需要模型压缩么?
专知会员服务
27+阅读 · 2020年1月16日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
86+阅读 · 2019年11月25日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
热门VIP内容
开通专知VIP会员 享更多权益服务
机器战争:将自主系统纳入军事框架
《作战战略和决策规划的数学模型》
美空军条令《反陆作战》最新84页
《军事高价值资产自主防御与护航的深度强化学习方法》最新148页
相关资讯
PC微信逆向:两种姿势教你解密数据库文件
黑客技术与网络安全
16+阅读 · 2019年8月30日
OpenAI「假新闻」生成器GPT-2的最简Python实现
机器之心
4+阅读 · 2019年4月20日
你真的会正确地调试 TensorFlow 代码吗?
数据库开发
7+阅读 · 2019年3月18日
158万张图像的鉴黄数据集
机器学习算法与Python学习
15+阅读 · 2019年2月14日
已删除
AI科技评论
4+阅读 · 2018年8月12日
【学界】毫秒级图像去噪!英伟达、MIT新AI系统完美去水印
GAN生成式对抗网络
8+阅读 · 2018年7月17日
手把手教你搭建AI开发环境 !(附代码、下载地址)
数据派THU
6+阅读 · 2017年12月15日
教你用TensorFlow和自编码器模型生成手写数字(附代码)
数据派THU
3+阅读 · 2017年11月21日
30行代码,带你分分钟创建神经网络!(附工具&教程)
数据派THU
9+阅读 · 2017年9月21日
从TensorFlow安装开始,在MNIST数据集上构建神经网络
AI前线
12+阅读 · 2017年7月3日
相关论文
OK-VQA: A Visual Question Answering Benchmark Requiring External Knowledge
Arxiv
9+阅读 · 2019年9月4日
CapsuleGAN: Generative Adversarial Capsule Network
Arxiv
4+阅读 · 2018年9月25日
Bidirectional Attention for SQL Generation
Arxiv
4+阅读 · 2018年6月21日
To Create What You Tell: Generating Videos from Captions
Arxiv
3+阅读 · 2018年4月23日
Phrase-Indexed Question Answering: A New Challenge for Scalable Document Comprehension
Arxiv
3+阅读 · 2018年4月20日
Correlated discrete data generation using adversarial training
Arxiv
5+阅读 · 2018年4月3日
DDRprog: A CLEVR Differentiable Dynamic Reasoning Programmer
Arxiv
5+阅读 · 2018年3月30日
Finding ReMO (Related Memory Object): A Simple Neural Architecture for Text based Reasoning
Arxiv
4+阅读 · 2018年1月26日
Vision-and-Language Navigation: Interpreting visually-grounded navigation instructions in real environments
Arxiv
3+阅读 · 2017年11月24日
DuReader: a Chinese Machine Reading Comprehension Dataset from Real-world Applications
Arxiv
4+阅读 · 2017年11月15日
大家都在搜
palantir
汽车智能化
武器目标分配
兵棋推演
知识图谱
壁画
大模型
RE-NET
PRML
EBSD晶体学织构基础及数据处理
Top
提示
微信扫码
咨询专知VIP会员与技术项目合作
(加微信请备注: "专知")
微信扫码咨询专知VIP会员
Top