大数跨境
0
0

【小喵科技】机器学习教程系列五-六:MNIST模型系列

【小喵科技】机器学习教程系列五-六:MNIST模型系列 KittenBot小喵
2019-05-28
0
导读:MNIST模型系列2019年喵家推出TensorFlow插件,已经成功进入了不少学校的课堂。

MNIST模型系列


2019年喵家推出TensorFlow插件,已经成功进入了不少学校的课堂。

老师们也给喵家提了很多建议,2018年喵家为了进一步降低机器学习的门槛,采用了TensorFlow集成库

(嗯,名字就叫机器学习5…),大家可以理解为一个轻量的TensorFlow,专注更具体的应用。

今天的课程五六两章合一展示哦!


课前喵讲

NEWS



还记得我们上一节让大家保存的sb3项目吗?我们关了Kittenblock重现打开这个项目,发现识别的结果完全不对啊!怎么办呢?是数据丢了?

这是因为TensorFlow本质上是一个插件并不是Scratch3的一部分,sb3保存的时候也并没有将模型进行保存,所有东西都在你的显卡内存中如果重启了软件当然都丢失了喽。

那么这个时候我们只能重新点击绿旗帜建立模型,之后还有导入数据给TensorFlow引擎,最后开始重新训练。每次都要执行这个流程吗?

这个效率很低啊~其实Kittenblock有对应的方块将训练好的模型和进行保存。首先大家还是先耐心的将上一节的项目重新训练下:)




01
MNIST模型保存和加载


保存训练的结果

我们可以使用如下的方块保存训练结果,点击这个方块后连续弹出两次保存框,一个是模型本身的拓扑结构,一个是模型的训练权重。

下面这两个文件就是模型的保存文件

加载训练结果

我们重新建立一个工程,画笔那部分还是照着前一个项目那样拖一个代码

之后新建一个model变量,加入如下方块

第一个参数是模型的拓扑结构文件的路径(.json),第二个参数就是模型的权重文件(.weights.bin)

我们打开sb3后只需要执行这一个方块就可以了,将你的机器学习项目分享给别的小伙伴的时候也记得带上这个模型的保存结果。


02
MNIST模型系列进行物体识别


如何加载已经训练好的模型和权重,其实这就给大家开了一扇无限大的门。我们可以使用别人已经训练好的模型做各种有趣的项目。

这里我们就使用大名鼎鼎的MobileNet识别物体

加载MobileNet模型

MobileNet是一个轻量化的神经网络模型,所谓轻量化就是可以在一般的家用pc和手机上跑起来的模型。一般我们人工智能的在线服务后端很可能是一个有几千层,还有n个模型相互嵌套的引擎,并且还有伴随着很多人工的优化和结果处理。而MobileNet全部细分层加起来也只有88个,最后结果输出1000个常见物品的分类。

下图是mobilenet的拓扑结构

我们新建一个项目,并且记得先新建一个model变量保存模型的名字。

之后我们需要mobilenet的模型和训练权重,这两个文件可以在我们github仓库找到

本节需要下载这三个文件

下载方式需要注意,很容易犯错,CC喵就中招了。下载这三个文件的时候需要点进去(如下图),这里以mobilenet.json为例,点进去后,右键另存为下载。

拖入如下的加载代码

第二个方块是加载模型的输出结果名称,因为机器输出的是0~999这样的数字,我们需要将这些数字转换成名字。其中224label.csv这个文件就保存了我们需要的名称。其中item是一个list变量,加载之后我们可以看看item的内容:




03
添加图片


我们这个示例项目的思路是在背景中加入不同的小动物图片,切换这些图片的过程中识别背景中的动物。

删除白背景,添加动物图(动物图需要自己上传添加,可以自己网上随意找,尽量找背景是白色的,保证识别的准确度。)

猫咪精灵的代码如下(从背景编辑状态切回到精灵状态,需要鼠标点击一下喵咪精灵)

这里用到谷歌翻译插件,因为分类命名是英文的,我们用谷歌翻译成中文(电脑需要联网)

我们设计的猫咪精灵的程序汇总,识别的过程中将猫咪隐藏,防止干扰识别结果。

最后效果如下~可能你做出来的实验结果跟我的不一样,大致分类是对的,但是可能归类到别的大类去。这是正常的,毕竟这个模型还是需要提高精确度。

下一节我们讲解如何改造MobileNet让它识别我们需要的分类,例如剪刀石头布



总结

由于我们的TensorFlow引擎才刚刚移植到Kittenblock中,难免有各种bug或者内存泄漏的情况,大家如果碰到bug或者有任何建议都可以在我们的

1.QQ群 568084773

2.喵家论坛

https://bbs.kittenbot.cn/forum.php

3.我们的Kittenblock软件http://learn.kittenbot.cn/zh_CN/latest/kittenblock/index.html

4.小喵科技店铺https://kittenbot.taobao.com/shop/view_shop.htm?tracelog=twddp&user_number_id=2830157417

  • 由于TensorFlow使用了GPU进行计算,请确保你的电脑配置还过的去,部分太老的电脑或者集成显卡的电脑可能因为资源限制会有部分例子无法正常完成。

  • 其实TensorFlow移植的早在Google发布tfjs第二天我们就列入开发计划了,但是因为我们团队实在太小了,各种项目花式优先级排序才拖了这么久。另外在重申一下正确提需求方式是要不停地骚扰我们的产品经理CC喵,而且是要组团骚扰,念叨地多了就自然落地了。

  • 第5-6章结束!


机器学习教系列七
  • 使用MobileNet模型进行任意物体识别——剪刀石头布为例

六一精彩活动明日上线!


人工智能教程系列


学习 

01

02

03

04

05

系列十二:视觉识别06识别印刷文字


机器学习教程系列


系列一:Tensorflow简介

系列二:TensorFlow快速开始(程序包集合)

系列三:鸢尾花(Iris)分类

系列四:MNIST 手写数字识别



小喵提示

如果你喜欢本文,分享到朋友圈

想要获得更多信息,请关注小喵哦!





【声明】内容源于网络
0
0
KittenBot小喵
专注于从入门到精通的移动机器人开源学习平台
内容 560
粉丝 0
KittenBot小喵 专注于从入门到精通的移动机器人开源学习平台
总阅读305
粉丝0
内容560