Skip to content

活动

AI 运动计时器

中级 | MakeCode | 加速计 | 数据收集, 数据清洗, 机器学习组件, 理解AI

使用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步:制作

所需材料

收集数据样本

当您在micro:bit CreateAI中打开下面链接里的项目,您会看到我们已经提给行走、跳跃和静止这三个运动提供了一些数据样本:

您可以利用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运动计时器在测量出来的活动累计时长有多准确? 其他人用它时,效果一样好吗?

使用下面这三个步骤,来测试计时器和模型是否工作正常:

  1. 按下重置按钮。
  2. 跳跃30秒。
  3. 按下按钮A,您应该看到屏幕上滚动显示接近30的一个数字。
  • 如果您想改善模型,点击MakeCode编辑器左上方的<箭头,添加更多的数据样本并重新训练模型。

比较我们这个AI运动计时器和没有使用ML(机器学习)的计步器项目或者灵敏计步器项目:

  • 如何使用ML来创建一个更有用的项目?
  • 我们创建有用的项目中是否总需要AI/ML呢?

第 3 步: 拓展

  • 尝试添加一个新的不同动作,使用触摸徽标来查看做这个动作的累计时间。
  • 通过添加声音代码块,让程序检测到不同动作时,发出声音提示。
  • 您能利用您对机器学习的新知识来“破坏模型”吗? 您能以某些方式的动作来欺骗模型,让它对您正在进行的运动做出错误判断吗? 您也可以尝试添加“混淆”的数据样本,并看看它们对机器学习模型的影响。 根据您知道的数据样本,对比为什么有些数据样本工作得很好,而有些则不然,是加深您对这个技术理解的一个好方法。