尽管当今可穿戴设备种类繁多,但大多数人工智能功能归结为仅定义非常简单的动作。他们确定一个人是在跑步还是在睡觉,他们计算步数,并确定一个人是否跌倒。
在我看来,我们已经准备好从我们的设备进行更复杂的分析。如果他们能够识别更具体、相似和复杂的活动会怎样?它将开启前所未有的可能性,创造出许多有趣的新应用程序和设备。
然而,识别更复杂的活动需要庞大而复杂的神经网络,这需要大量的计算。这显然会很快耗尽嵌入该神经网络的物联网设备的电池。大多数可穿戴设备应在常亮模式下运行,这对此类解决方案的能源效率提出了严格要求。
我们如何解决这个挑战?在我的项目中,我想展示一个示例,说明如何显着增加智能功能的复杂性,并确定可穿戴设备可以使用非常小且准确的神经网络识别什么。
在我的项目中,您将找到有关如何使用 Nicla Sense ME 实施多项日常活动识别的详细指南。
如果你有 Nicla Sense ME,你可以在你的实验/项目/课程中尝试我的预训练模型。
我们的测试结果表明,该模型完美地识别了 30 名未使用其数据训练模型的参与者的动作。
按照本教程,您还可以轻松地进行自己的实验并根据您的数据训练神经网络以识别相同或不同的动作。
我们相信,使用小型神经网络识别极其复杂和相似的动作的能力为永远在线的设备开辟了一个新时代。
下面,您将找到有关如何重现此实验的完整教程,包括数据收集、模型训练、模型嵌入和推理。此外,我们还创建了一个带有预训练模型的公共存储库,该模型已证明对新用户具有良好的泛化能力。它是一个预编译的模型存档,您只需点击几下鼠标即可下载并嵌入到您的 Nicla Sense ME 中,然后开始测试。
https://github.com/NeutonTinyML/hand-activity-recognition
对于这个案例,我选择了 5 种类型的活动(对于您的实验,您可以选择其他活动):
对于每种活动类型,我使用 Nicla Sense ME 连续 10 分钟不间断地收集传感器数据。数据是从 7 个不同地点的 7 个不同的人那里收集的。这是一个非常具有挑战性但又很有趣的过程,因为为了正确收集数据,中断是不可取的。对于那些计划重新进行我的实验的人,这里有一些建议:在为另一项活动收集数据之前,先休息一下!但是,如果 10 分钟的持续刷毛太多了,您可以进行两个 5 分钟的数据收集流,然后将两个文件连接起来。
对于负类,我们收集了 60 分钟的数据。这次不需要做任何特别的事情;继续你的日常活动。在键盘上打字,操作鼠标,接听电话,喝茶,或做任何你想做的事。只需确保在收集负面类别数据期间,您的手不会完全闲着不动。负面类别是除上述 4 类之外的所有其他类别的子集。
现在让我为您提供有关如何调整 Arduino 板 Nicla Sense ME 以收集数据的详细指南。
1.访问https://www.arduino.cc/en/software,为您的操作系统下载 Arduino IDE 2.xx,并安装软件包。
2.打开 Arduino IDE,单击Boards Manager图标,键入“nicla sense me”并安装Arduino Mbed OS Nicla Boards包。
单击库管理器图标,在搜索框中键入“nicla sense me”并安装两个库:Arduino_BHY2和ArduinoBLE 。
在搜索框中键入“printf”并安装LibPrintf 。
3.在主菜单中选择File->Examples->Arduino_BHY2>BHYFirmwareUpdate 。
4.将Nicla Sense ME板连接到 USB 并在下拉菜单中选择端口。
5.点击上传按钮...
…等到上传过程完成。
6.单击串行监视器图标并选择115200 波特,然后单击 Nicla 开发板上的重置按钮。
7. 5-10 秒后,您会看到 BHY 固件已上传。
8.使用 Nicla Sense ME 从 Neuton存储库下载用于传感器数据收集的 Arduino 预编译库。
模型 -> Arduino_Neuton.zip(不要解压存档)
9.将“Arduino_Neuton.zip”模型安装到 Arduino IDE 中:
Sketch -> Include Library -> Add .ZIP Library…(指向下载的“Arduino_Neuton.zip”存档)
10.退出并重新启动 Arduino IDE(Arduino IDE 最多需要一分钟时间来索引所有示例,包括新安装的“Arduino_Neuton”)
11、打开安装好的例子:File -> Examples -> Arduino_Neuton -> Inertial_Sensor_Data_Collection (会弹出一个新的Arduino IDE窗口,关闭之前的Arduino IDE窗口)
12.将 Nicla Sense ME 连接到计算机的 USB 端口。
13.在 IDE 中选择您的 MCU 并上传固件。
14.固件上传后(1-2 分钟),打开串行监视器 - 您应该看到传感器读数(如果您看到连接错误 - 重新启动 Arduino IDE 并再次打开串行监视器)
现在您可以从 USB 端口拔下威廉希尔官方网站 板。
15.将威廉希尔官方网站 板牢固地连接到手表或手链上。Micro-USB 端口应位于右下角。
16.将带有威廉希尔官方网站 板的手表或手环戴在右手上,并连接数据线。确保连接器附近的电缆没有拉紧,以免损坏威廉希尔官方网站 板。
17.根据您的操作系统,打开串行端口并尝试记录数据。在提示中可以看到串口。
如果您使用的是 macOS,请在终端中使用此命令:
stty -f /dev/cu.usbmodem85EB3A0F2 115200 | 猫/dev/cu.usbmodem85EB3A0F2 | T 恤 4_brushing_hair.csv
这会将端口速度设置为 115200 波特。从串行端口打印出文本数据并将其保存为 CSV 文件。
按 Control-C 停止录制。将有一个 CSV 文件,其中包含来自传感器(加速度计、线性加速度计和陀螺仪)的数据和时间戳。
18.开始记录运动。按下 Nicla 板上的重置按钮并重新开始记录到文件。
例如,拍手 10 分钟(使用智能手机中的秒表应用程序)。在此过程中,改变双手的位置,使数据更加多样化。录制过程中不要停止移动。
按下重置按钮后约 7 秒内将开始录制。
10 分钟结束后,继续运动 10-20 秒并停止记录。
19.对每个活动类型重复第 18 步(使用不同的文件名):
在记录每个动作之前重置板。
在您收集了所有活动的数据并将它们组合成一个数据集后,前往Neuton.ai平台训练您的模型。
1.创建一个新的解决方案
2.选择数据类型,上传数据
3.在左侧字段中删除变量 lacc_X、lacc_Y、lacc_Z(此模型不需要线性加速度计);在右边的字段中选择目标变量并单击下一步。
4.选择任务类型。
5.选择输入数据类型为 INT16。
6.启用数字信号预处理,选择 Window size 200 和 Sliding shift 5。
7.对于每个特征(acc_X、acc_Y、acc_Z、gyro_X、gyro_Y、gyro_Z)重复以下步骤:
A。点击“编辑”
b. 选择“全部删除”
C。选择“统计”功能并检查以下功能:均值、均方根、平均绝对偏差、标准偏差、均值交叉率、过零率
8.选择单片机位深:8位,开始训练。
模型训练完成后,进入“预测”选项卡,检查模型质量指标并下载包含模型的存档以进行嵌入。
下载的模型源代码如下所示:
该档案包含将模型嵌入任何 MCU 所需的一切。使用存档内容编译一个 Arduino 草图,用这个草图刷新你的 Nicla Sense ME 并开始推理。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !