成为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),我们会尽快为您处理
相关内容
训练数据
关注
4
一份简明有趣的Python学习教程,42页pdf
专知会员服务
77+阅读 · 2020年6月22日
【2020新书】《“一行”Python:如何写出精炼的Python代码》,216页pdf
专知会员服务
252+阅读 · 2020年4月19日
自回归模型:PixelCNN
专知会员服务
28+阅读 · 2020年3月21日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
98+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
88+阅读 · 2019年11月25日
PC微信逆向:两种姿势教你解密数据库文件
黑客技术与网络安全
17+阅读 · 2019年8月30日
你真的会正确地调试 TensorFlow 代码吗?
数据库开发
7+阅读 · 2019年3月18日
手把手教你搭建AI开发环境 !(附代码、下载地址)
数据派THU
6+阅读 · 2017年12月15日
30行代码,带你分分钟创建神经网络!(附工具&教程)
数据派THU
9+阅读 · 2017年9月21日
从TensorFlow安装开始,在MNIST数据集上构建神经网络
AI前线
12+阅读 · 2017年7月3日
OK-VQA: A Visual Question Answering Benchmark Requiring External Knowledge
Arxiv
10+阅读 · 2019年9月4日
CapsuleGAN: Generative Adversarial Capsule Network
Arxiv
4+阅读 · 2018年9月25日
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日
VIP会员
自助开通(推荐)
客服开通
详情
相关主题
训练数据
数据集
机器学习模型
机器学习
Laurence Moroney
图像传输
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
77+阅读 · 2020年6月22日
【2020新书】《“一行”Python:如何写出精炼的Python代码》,216页pdf
专知会员服务
252+阅读 · 2020年4月19日
自回归模型:PixelCNN
专知会员服务
28+阅读 · 2020年3月21日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
98+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
88+阅读 · 2019年11月25日
热门VIP内容
开通专知VIP会员 享更多权益服务
【博士论文】面向真实世界音视联合语音识别的可扩展框架
《通过仿真与开源数据提升战略决策:机遇与局限》最新报告
【AAAI2026】善始则事半功倍:基于前缀优化的大语言模型推理强化学习
评估大语言模型在科学发现中的作用
相关资讯
PC微信逆向:两种姿势教你解密数据库文件
黑客技术与网络安全
17+阅读 · 2019年8月30日
你真的会正确地调试 TensorFlow 代码吗?
数据库开发
7+阅读 · 2019年3月18日
手把手教你搭建AI开发环境 !(附代码、下载地址)
数据派THU
6+阅读 · 2017年12月15日
30行代码,带你分分钟创建神经网络!(附工具&教程)
数据派THU
9+阅读 · 2017年9月21日
从TensorFlow安装开始,在MNIST数据集上构建神经网络
AI前线
12+阅读 · 2017年7月3日
相关论文
OK-VQA: A Visual Question Answering Benchmark Requiring External Knowledge
Arxiv
10+阅读 · 2019年9月4日
CapsuleGAN: Generative Adversarial Capsule Network
Arxiv
4+阅读 · 2018年9月25日
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日
大家都在搜
Palantir
朱克爱德华兹家族
大型语言模型
多域作战
未来战争
突防
机场
反恐
蓝牙安全攻防
模型压缩 | 知识蒸馏经典解读
Top
提示
微信扫码
咨询专知VIP会员与技术项目合作
(加微信请备注: "专知")
微信扫码咨询专知VIP会员
Top