本文描述了如何利用SensorTile.box的嵌入式机器学习功能和第三方平台Qeexo AutoML,利用板载LSM6DSOX的嵌入式机器学核心(MLC)功能,构建基本的空中手势识别。该程序可以用任何采集工具进行推广。

目录
 

  1. 为什么检测手势很重要?
  2. SensorTile.box和Qeexo ML的手势检测:项目描述
  3. 问题场景
  4. 参数配置
  5. 传感器配置
  6. 数据收集
  7. 模特培训
  8. 论人生!
 

为什么检测手势很重要?

精细手势识别涵盖了很多潜在的应用领域:从教学中,到。在我们日益互联和数字化的世界里,尤其是在儿童中,存在着失去手工技能和纸上写作能力的明显风险。
 

SensorTile.box和Qeexo ML的手势检测:项目描述

由于上述原因,本文的目的是建立一个机器学习模型来区分人手在空中书写的符号。此演示的硬件支持是SensorTile.box,尤其是嵌入LSM6DSOX传感器中的机器学习核心。
 

问题场景

定义了以下三个类别:

–“X”
–“O”
–没有手势

这种方法是通用的,因为原则上传感器可以检测到的人手精细运动的类型没有限制。
 

参数配置

在初始化项目之前,请打开Qeexo.com并检查您的电脑上是否安装了QeexoML工具。您可能会在“资源”部分、安装和用户指南中找到更多实用信息。硬件准备就绪后,您可以从启动页面启动项目。

 

传感器配置

对于任何传感器配置,我们需要考虑三个因素:

  • 什么类型的数据将捕捉我们类之间的差异
  • 什么信号长度将捕捉到我们班之间的差异
  • 什么范围的传感器值将完全捕获我们输入的范围

基于这些因素,我们将选择加速度计陀螺仪传感器位于476赫兹针对空中手势问题。我们将使用+/-8克+/-500 dps用于传感器FSR。

这两个传感器应该能够捕捉类型因为它们是运动传感器,而我们的问题涉及设备运动的差异。

基于硬件内存限制,我们在Arduino Nano 33 BLE Sense上每个通道只能使用1024个样本,因此476 Hz的ODR应该允许我们拥有信号长度进行每个分类需要几秒钟的时间。

最后,基于设备将处于运动状态这一事实,我们将需要范围可能的传感器值。FSR的这些较大值将防止我们的传感器饱和,即使在设备位置和速度快速变化的情况下也是如此。
 

数据收集

对于这三个类,我们需要使用两种类型的AutoML数据收集:事件不断的。要决定每个类使用哪种类型的数据集合,我们需要考虑平均花费时间在给定的课堂上。如果这个时间是10秒或更短,我们通常应该使用事件数据收集。否则,我们将使用不断的数据收集。

收集连续数据

对于“没有手势“情况下,我们将使用不断的数据收集,因为我们通常会期望我们的最终ML分类器在很长一段时间内(有时是几分钟甚至几小时)输出“没有手势”。我们希望我们的分类器在设备处于静止状态时输出“无手势”不断的数据,我们将选择不断的输入适当的类标签,并输入初始数据收集的时间量。目前,我们将收集30秒的时间来构建初始模型——如果我们发现性能不如我们希望的那么好,我们总是可以稍后收集更多。

从那里,我们将按下“记录”,然后继续收集我们的“没有手势”数据

正在收集事件数据

由于“X”和“O”字母手势是离散事件,通常在一两秒内进入和退出类,我们将使用事件数据收集。

收集事件数据,我们将选择事件输入适当的类标签,然后输入两个附加值:a每个事件的长度,和实例数。目前,我们将收集10个实例来构建初始模型。对于每个事件的长度,我们将选择一个秒数,这将给你足够的时间来完成给定课程的完整示例。例如,由于“X”类通常需要1-2秒,我们将使用3秒甚至4秒的值来确保我们能够及时完成手势。

从那里,我们将按下“记录”,然后收集我们的“X”和“O”字母手势数据。

注意:在每个“事件”的开始和停止时,设备应处于静止状态。这将有助于AutoML并确定实际事件数据发生在收集窗口内的何处。这就是为什么我们应该为每个事件的长度这确保了我们能够开始停止指定时间内的给定事件。

以下是一个好的事件实例:

请注意实际事件是如何完全位于集合窗口中的,并且AutoML能够检测开始停止并突出显示事件信号。

以下是一个令人不快的事件实例:

与前一张图片相比,您可以看到AutoML无法成功找到完整的事件范围。
 

模特培训

在配置了传感器并收集了数据之后,我们就可以构建一个初始模型了。我们将从培训页面中选择数据,然后按“开始新的培训”。

注意:出现的初始窗口(第1步,共4步)是一个可选的“分组标签”页面。我们可以跳过通过这个页面,由于我们只收集了三类数据,并且我们希望构建一个可以区分所有三类的模型。


传感器和特征选择

现在,您将看到传感器和功能选择选项(第2步,共4步)。本节允许选择记录的传感器和特征的子集,以便自动或手动为每个传感器进行计算。自动模式完全自动执行传感器和功能组选择。手动传感器选择可以与自动功能选择或手动功能选择相结合。目前,由于这是我们的初始模型,我们将手动选择记录的传感器、加速计和陀螺仪,并手动选择两个传感器可用的所有功能组。


配置推断设置

构建初始模型的下一步是配置推理设置(第3步,共4步)。有一个选项可以让AutoML为您做出这些选择。如果您想使用该选项,请跳到下一节。

要手动配置推理设置,我们需要考虑两件事:

  • 怎样长的我们的模型需要信号来做出明智的决定吗?
  • 怎样经常我的问题改了课吗?

在我们的案例中,我们的事件信号大约持续1-2秒。这个时间段也应该足够长,以区分我们的手势和“无手势”类。基于此推理,我们将选择2000 太太作为我们的实例长度

由于当前手势类是由用户控制的,并且我们可以在类之间快速移动,因此我们应该为分类区间。值为500毫秒应该经常进行分类,以捕捉状态之间的任何变化。

配置模型设置

构建初始模型的最后一步是配置模型设置。此页面上有多种选项,所有这些选项都控制模型构建过程的各个方面。您可以从各种模型中进行选择,选择进行超参数优化,或者决定是否生成学习曲线。

现在,我们将取消选择页面顶部可用的所有可选优化,并训练一个简单的逻辑回归模型

训练一个简单的逻辑回归模型该模型应该能够很好地处理我们的小数据集,而不是我们可能没有足够数据的深度学习模型,并有望找到一些可以区分这三类的简单模式。


 

论人生!

最后,我们希望将编译后的二进制文件闪存到SensorTile.box中,并检查分类器是否产生了预期的输出。最终的模型能够在嵌入式设备上运行推理,并实时准确地识别各种精细的手势。享受