Raspberry_Chen 发表于 2016-8-24 17:56:18

Arduino/Genuino 101 神经网络开发工具 CurieNeurons Tool 入门教程

本帖最后由 Raspberry_Chen 于 2016-8-24 18:41 编辑

CurieNeurons工具的介绍
为了方便开发者和极客们的对神经元使用, general Vision这家公司提供了CurieNeurons这个工具。
我们将要进行的CurieNeurons_andIMU实验正是这个工具中的一个例程


General Vision 的介绍:
正如大家所知,arduino101与其他arduino最大的不同之处是arduino 101采用了intel curie 模组。
这个模组采用NeuroMem技术,从而具有强大的学习和识别能力。
而NeuroMem技术正是由General Vision这家公司开发


CurieNeurons_andIMU的上手
实验描述:
这个示例主要是用来带我们体验如果根据Curie自带的混合传感器(加速度计和陀螺仪)所采集的数据,进行对Curie当前运动状态和姿态的训练和识别。

所需材料:
arduino 101 和数据线
dfrobot或其他适配扩展板(可选: 方便固定arduino101,让神经元准确识别相应模式)

准备工作
1. 下载并正确安装arduino IDE和添加对arduino 101 的支持

   参考:http://bbs.makercollider.com/?/article/19

2. 下载并正确安装CurieNeurons免费版

    参考:http://bbs.makercollider.com/?/article/20

操作流程:
参考视频链接:http://v.qq.com/x/page/m0316zbpx77.html?start=2
   
1. 上传“CurieNeurons_andIMU”示例程序到arduino 101
   
    务必在上传前检查端口和开发板
   
   http://bbs.makercollider.com/uploads/article/20160801/2dd1971eea14cb2c06d054cecd3cbc30.png


    在菜单栏中依次点击“文件→示例→CurieNeurons→CurieNeurons_andIMU”

http://bbs.makercollider.com/uploads/article/20160808/04a17ced26d49cec0fff061ecbebe3a3.png



http://bbs.makercollider.com/uploads/article/20160801/148c9da57a7a01a3795afb6a30ed158f.png


http://bbs.makercollider.com/uploads/article/20160801/79b370fb2b04c0aec77e75745e46fa13.png


2. 按提示信息等待5s后,打开串口监视器
   http://bbs.makercollider.com/uploads/article/20160801/071153aa8f970af5aeaef1d8ed806c42.png

    这里会显示板中程序的加载信息,并可以对Arduino/Genuino101发送指令,在发送指令之前,我们需要将结束符设置为换行符:
   http://bbs.makercollider.com/uploads/article/20160801/87334a4f49f4dced7ecd2e50107c2c7d.png


CurieNeurons_andIMU建议我们训练的三种模式:
输入“1”并按下回车或点击“发送”按钮,来训练开发板识别开发板的垂直状态;
输入“2”并按下回车或点击“发送”按钮,来训练开发板识别开发板的水平状态;
输入“0”并按下回车或点击“发送”按钮,来训练开发板识别开发板的任何其他动作或状态;
Motion unknown是开发板开始的第一次运动识别,因为还没有进行训练,所以是未知。
为了方便放置,我们先为开发板加上一个扩展板,如果你手边没有扩展板可以找些其他的东西来固定开发板。
http://bbs.makercollider.com/uploads/article/20160801/1171e74c639491a24525ff77eed961e0.png


3. 根据串口监视器的示例信息,我们先垂直放好arduino101。
   然后在“串口监视器”界面的输入框中输入“1”,并按下回车或点击“发送”按钮。
   这一步是告诉CurieNeurons垂直的状态是1
http://bbs.makercollider.com/uploads/article/20160801/102fd50bd2bf6b01e58915f38137ae1f.png


http://bbs.makercollider.com/uploads/article/20160801/a718a72fcb977a4fd6219b168c5e07c0.png

    这里“Learning motion category 1”表示开发板已经学习并记下了当前的状态。
    学习结束后自动进行了当前状态的识别,这里我们看到他已经识别出当前的状态为“#1”,也是就竖直的状态。

    那么竖直还有其他几种方式:
http://bbs.makercollider.com/uploads/article/20160801/72836c78dc379f630b90cfb6d1bb47d4.png

    我们对这几种状态进行多次学习,建议每种状态训练两次以上。
http://bbs.makercollider.com/uploads/article/20160801/9dd4dda26e8580d41baa8527d5f10592.png


4. 同理,我们再把开发摆放到水平状态,来训练开发板进行水平状态的识别。
http://bbs.makercollider.com/uploads/article/20160801/d9d53943fb2c77daa8316ada8f7f3752.png

我们可以把开发板分别放置为以上两种水平状态,在“串口监视器”界面中输入“2”并按下回车或“发送”按钮。
建议每个状态至少训练两次。

5.学习完成后在水平和竖直状态中进行随机摆放

http://bbs.makercollider.com/uploads/article/20160808/f2a4bce705e76a62d156e6e1acb0f5bb.png


可以看到每次的识别速度都是瞬间识别的~
垂直和水平这两个都只是简单的状态识别,接下来我们来做点复杂的运动状态识别。

因为人手的会有一定幅度的晃动和不稳定性,所以我们在体验环节采用较为稳定的方法进行试验。
但在实际项目应用中,可能需要多次训练来提高准确性。

补充说明:
1.以下是对该例程的详细解释,如有疏漏之处,还请各位网友指出
setup()函数:采用了一系列的初始化和校准,包括串口,设备和神经元的初始化,对加速度计和陀螺仪的校准。

loop()函数中:刚开始垂直状态,当没有回车键按下,也就是没有指定学习状态时,神经元处于识别的状态,此时由于未指定状态从而motion unknown。
当数字输入回车键按下,神经元处于学习状态,会短时间内连续输出对垂直状态的识别。
此时若当没有回车键按下,改变开发板位置到水平状态,从而motion unknown;若再改变开发板位置到垂直状态,则可以继续识别。

2.当然目前为止我们仅仅熟悉了CurieNeurons的主要功能,如何开发出更加有趣,好玩的东西,还需各位共同努力
3.关于CurieNeurons免费版和收费版:免费版很强大,收费版更强大!
收费版可使用的函数更多,识别的动作相对更加精准
4. 更多有关CurieNeurons开发库的信息,请参阅GeneralVision的官方API文档和技术指南https://www.general-vision.com/products/curieneurons/


   http://bbs.makercollider.com/uploads/article/20160808/2f8b0827786658be7886d15211295846.jpg


凌风清羽 发表于 2016-8-25 21:43:11

学习了~~~

dsweiliang 发表于 2016-8-26 08:24:35

学习学习

iooops 发表于 2016-8-31 19:28:40

我靠 大神们开发的Curie板

iooops 发表于 2016-8-31 19:29:06

{:5_141:} 啊好神奇

liweilin 发表于 2017-2-8 22:54:26

这个学习功能好玩
页: [1]
查看完整版本: Arduino/Genuino 101 神经网络开发工具 CurieNeurons Tool 入门教程