使用micro:bit CreateAI进行个性化的一个简单项目。 制作一个能检测您进行不同运动用了多久的智能计时器。
项目的逐步指南
第 1 步:理解
工作原理?
在这个项目中,您将训练一个机器学习(ML)模型来识别当您佩戴BBC micro:bit时是否在进行特定的运动。
您将把这个模型与MakeCode程序结合成一个运动计时器,并将模型和代码传给您的micro:bit。 只需穿戴上micro:bit,即可对您进行不同运动的时间进行计时。
按下按钮A或按钮B,可以查看您在每项运动上都用了多少秒。
什么是机器学习?
机器学习(machine learing,缩写ML是一种人工智能(artificial intelligence,缩写AI),让计算机从数据中学习并基于数据做出决策。
ML模型由人类训练,来帮助人类做决策,例如通过您移动micro:bit的差异来识别您当时做的是什么动作。
我需要做什么?
AI系统需要人类来设计、搭建、测试和使用。 您将使用micro:bit和micro:bit CreateAI网站,收集数据来训练一个ML模型,测试它,改进它并将它与计算机代码组合在一起,制作一个使用了AI技术的智能设备。 您将使用micro:bit和micro:bit Create AI网站来完成上面的工作。
第2步:制作
所需材料
- 一个V2版本的micro:bit,USB数据线,装有2节AAA电池的电池组
- 一台电脑(例如台式机,笔记本电脑或者Chromebook),必须能访问micro:bit CreateAI 网站,可以使用Chrome或者Edge网页浏览器
- 如果您的电脑没有自带蓝牙,您需要另外的一个V2版本的micro:bit。
- 一条带子和一个固定器,或者找到另一种方法将micro:bit固定在您的手腕上(例如,柔性手工毛根或弹力带)
- 您或许会从我们的micro:bit CreateAI 教学提示中获益
收集数据样本
当您在micro:bit CreateAI中打开下面链接里的项目,您会看到我们已经提给行走、跳跃和静止这三个运动提供了一些数据样本:
walking
jumping
being still
您可以利用micro:bit的运动传感器或加速计来添加您自己的运动样本。
在micro:bit CreateAI中,点击“连接“按钮来连上您用来收集数据的micro:bit,然后按照说明来操作。
将数据收集用的micro:bit,以按钮B朝上的方式固定在您右脚踝内侧;重要的是,在同一项目中所有的样本采集中,必须使用相同方式的佩戴micro:bit。 如果您想更改穿戴micro:bit的方式,那需要替换掉已有的全部数据样本。
您可以为行走、跳跃和静止亲自添加动作数据样本。 每次点击一个动作,然后点击它旁边的“record”按钮,来为这个动作记录样本。 如果您搞错了什么,您可以删除您不想要的样本。 您也可以按下micro:bit的按钮B来启动录制。
检查数据样本:看看动作“walking”里的所有样本是不是看起来差不多? 看看动作“rolling”里的样本是不是都和动作“jumping”和动作“sleeping”的不同?
训练和测试模型
点击“训练模型”按钮来训练模型,然后测试它。 穿戴上micro:bit后走走看,看看估计动作是不是“walking”。 也用类似方法来尝试跳跃和保持静止。将您的micro:bit给别人穿戴起来试试,看看也能不能正常识别到他们的动作。
改良您的模型
这将是您反复迭代的一步。 绝大部分的模型可以通过给与更多数据来得到改进。 如果需要改进模型来识别您的动作,请点击“← 编辑数据样本”。
您可以删除您认为不合适的数据样本(因为这些样本与同一动作下的其他样本差异巨大)。 您也可以添加从您自己或别人获取到的更多样本。
您可能需要将非常细微的动作作为“being still”数据样本的一部分,来帮助模型从其他动作中区分出这个动作。 让micro:bit朝向不同方向时,分别录制“being still”动作的样本,也有助于模型学习。
再次训练模型然后测试它。
将模型和代码传到您的micro:bit里
在micro:bit CreateAI里点击“在MakeCode中编辑”,从而在MakeCode编辑器里查看项目代码。
您可以像在任意micro:bit MakeCode 项目中一样修改代码,或者只是试试它。 用USB数据线连接计算机和micro:bit,然后在MakeCode窗口里点击“下载”按钮,按照指示来讲您的AI模型和代码快传输到micro:bit上。 拔掉micro:bit,连接上电池组,把它穿戴起来然后做一下各种运动来测试一下。
- 按下按钮A,看看您之前累计行走了多少秒。
- 按下按钮B,看看您之前累计跳跃了多少秒。
- 同时按下按钮A和按钮B,看看您之前累计静止不动了多少秒。
- 按下micro:bit背面的重置按钮或插拔一下电池组,就能重置各个计时器。
代码块如何工作
代码使用了三个变量来记录您进行特定活动的时间长度。 当程序首次运行时,它会将这些计时器变量设置为0。
“on ML... start”代码块在机器学习模型判断您开始了一个它能识别的运动时被触发。 根据它估算出您正在做的动作的不同,micro:bit的LED显示屏上显示不同的图标。
“on ML... stop”代码块在机器学习模型认为你完成一个动作(例如走路、跳跃或静止)时被触发。 每个代码块里的代码会清除屏幕,并根据刚刚结束的动作的不同,将刚才这个动作的最新持续时间加到到存储走路、跳跃或静止总时间的对应变量中。
“on button... pressed'”块包含了用于显示变量的代码,这些变量表示您进行每种运动的总时间。 计时器以毫秒(千分之一秒)为单位计数,因此以秒为单位显示时会被除以1000。
评估
这个AI运动计时器在测量出来的活动累计时长有多准确? 其他人用它时,效果一样好吗?
使用下面这三个步骤,来测试计时器和模型是否工作正常:
- 按下重置按钮。
- 跳跃30秒。
- 按下按钮A,您应该看到屏幕上滚动显示接近30的一个数字。
- 如果您想改善模型,点击MakeCode编辑器左上方的<箭头,添加更多的数据样本并重新训练模型。
比较我们这个AI运动计时器和没有使用ML(机器学习)的计步器项目或者灵敏计步器项目:
- 如何使用ML来创建一个更有用的项目?
- 我们创建有用的项目中是否总需要AI/ML呢?
第 3 步: 拓展
- 尝试添加一个新的不同动作,使用触摸徽标来查看做这个动作的累计时间。
- 通过添加声音代码块,让程序检测到不同动作时,发出声音提示。
- 您能利用您对机器学习的新知识来“破坏模型”吗? 您能以某些方式的动作来欺骗模型,让它对您正在进行的运动做出错误判断吗? 您也可以尝试添加“混淆”的数据样本,并看看它们对机器学习模型的影响。 根据您知道的数据样本,对比为什么有些数据样本工作得很好,而有些则不然,是加深您对这个技术理解的一个好方法。
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.