写在前面的是,这次是借用Seeed出品的Wio Terminal结合国外的Edge Impulse这个组合来达到的。要想玩的话,前提是有一台Wio Terminal啦。不过看这篇文章的收获并不是知道如何玩Wio Terminal,而是从中得知未来的人工智能的训练将以什么形式被我们这些平凡大众去掌握。
关于Wio Terminal是什么,我这里就不介绍啦,网上一搜一大把,大家可以去了解一下。但这的确会是一台不错的创客玩具,不用管各种接线,一体集成了很多在创作时需要的模块。
对了,操作示范同样通过视频的方式上传到了B站
叨了几句,以下进入正题
这次示范的是官方一个很有代表性的例子,就是让这个小设备来识别剪刀石头布。等等,这个小设备可没有摄像头呀?没错,它的确是没有摄像头,但我们还是有办法玩的。我们其实借用它自带的光传感器,当你以剪刀的手势经过设备上时,阴影投到光传感器上时,明与暗的变化会出现5次交替,因为是两要手指的投影嘛。而如果是石头的话,那就是一大块东西经过,明暗变化自然是3次了。设备学习光线的变化规律,找到其中的特征,就有机会识别出我们的手势了。原理很简单,懂的就懂了。那咱们开始整起来吧。
实际操作
1、环境准备
为了让这个实验的成功率提高,我们需要有一些环境准备。其中最重要的是所有跟光相关的环境因素。首先,要找到一个光线不强的环境,比如封闭的房间,或者最少可以拉上窗帘。然后再准备一个额外的光源,这个光源最好能放到桌面上,并横向射出。当然,为了收集数据并训练模型,还要准备一台能上网的电脑和一根Type C线。如下图:
2、创建模型及收集数据
一切准备好后,就可以开始玩了。我们会先创建模型,并收集数据。
打开电脑上的浏览器,进入http://ide.thinkergen.com。如果没有注册过的请先注册,这里就不介绍怎么注册了。如果没有登录,就先在这里登录。
2.1 创建模型
1️⃣ 进入首页后,能看到“Wio Terminal”,点进去。
2️⃣ 左边能找到“创建与选择模型”,点击它。(默认是已经点击,但点击一下保证界面是对的)
3️⃣ 在中间找到“内置光线传感器识别手势”,输入一个模型名,我用的是“erictest”。
4️⃣ 修改收集数据的代码
因为收集数据的过程是主要是依靠设备本身,为了让设备知道要怎么做,我们要编写一段简单的代码。不用担心,代码是图形化的,我会带着你完成。
进入数据采集界面后,默认是有一段代码的,但是这个代码不太完美,因为它不会收集没有动作时的数据,或者说它除了石头、剪刀、布之外,没有别的标签,那机器在做最后推理时,如果我们什么都没有做,它也只能硬识别成其中一个手势,这不是大问题,但这对于程序员的我来说这是一个大BUG,不能忍受!
所以,第一个动作,就是增加一个叫做NoAction的标签,用来收集一些什么都没有做的数据。点击右边标签区域的“+”,填上“noaction”。
然后,增加一段代码。内容就是告诉设备,当我将遥杆向上推时,就收集没有动作的数据。
5️⃣ 上传代码。按左边的“上传”按钮。记得,要将Wio Terminal通过Type-C线插上电脑哦。
6️⃣ 用设备收集数据
根据代码,不同的按钮收集不同标签的数据。中间按钮收集石头。
按下之后,设备显示正在收集数据。这里就可以上下或者左右地摆动你的手了。
同时,电脑上也会出现“采样中”的字样。
请注意要房间让手指的投影经过这个光传感器哦。
理想的光线状态是这样的。
按照官方的建议,每个手势只要收集10次数据,但从我实测的情况看来,10次数据的准确率还是太低,建议还是收集20次(虽然会很累)。依次通过ABC三个键,还有控制杆“上”,来收集完4种各20次数据后,我们的数据就准备好了。
7️⃣ 训练和部署模型
点击“训练与部署”。看到系统要求我们选择神经网络规模。根据测试的结果,小型规模的准确率比较低,我建议选择中型。但选择中型后,要将训练周期数设置为250才行,这样整个训练才是在20分钟内完成。系统目前也不接受超20分钟的训练请求。其它配置项不需要修改,按默认值就行了。
点击“开始训练”后,我们就可以去喝杯茶去了,因为大概需要20分钟左右的时间进行训练。
显示下图信息就是完成训练了。
展开这个小节就能看到训练报告。这个数据是比较完美的,如果百分率太低的话,就要考虑一下是不是光线或者动作不对了。然后调整一下重新收集数据。
8️⃣ 点击“模型部署”,让模型成为代码中的一个积木块。因为模型会有点大,所以这个动作也需要几分钟。
9️⃣ 编写使用代码
部署完模型后还没完。因为我们只是将一个能分辨各种手势的黑盒做好了,它通过光线的变化确认你做的是什么手势。但设备上还没有这个模型,也还不知道什么时候要观察光线变化,同时更加不知道观察完要做什么。所以接下来要写另一段代码来告诉设备要怎么用模型来完成一个功能。
代码是长这个样子。功能就是当设备认为我们做了剪刀手势时,它就在屏幕上显示剪刀的样子。认为是石头就显示石头,认为是布就显示布。如果认为我们什么都没做,那就不变化。
完成代码后,还是点击“上传”,将代码上传到设备上。这里需要等好几分钟。
可以玩了
好了,现在可以开始玩了。按下C键(就是最边上的那个按钮),设备就会开始进行推理了。测试时要记得尽量按收集数据时的节奏摆动手,这样准确率会更高。
原计划这个实验只通过视频来介绍,但觉得文字也有它的优点,所以同时在这里也发一份。实在没有看懂的,可以查看我B站上的视频呵。
做准备视频和写这篇文章花费了2周时间,如果觉得内容有意思,希望你能为我点“赞”,表示我写得还不错,这将是我继续更新的动力。