在过去的几周里,我一直在花一些时间研究一些人称之为人工智能人工智能的东西。在物联网的广阔领域,许多为它提供动力的技术并不新鲜。例如,术语机器学习实际上可追溯到 1959 年(!),我们当然没有等到 IoT 成为将设备连接到 Internet 的东西,对吗?

在接下来的几篇博文中,我想分享我进入AIoT的部分旅程,特别是,我会尽力帮助你理解如何:

  • 快速高效地训练使用传感器数据的 AI 模型
  • 运行处理能力非常有限的 AI 模型(想想 MCU)
  • 远程操作您的 TinyML® 解决方案,即从 AI 发展到 AIoT

• 小ML:以低于1 mW的能源成本运行神经网络模型的能力。

皮特·典狱长 (@petewarden
微型ML:在 Arduino 和超低功耗微控制器上使用 TensorFlow Lite 的机器学习

简化数据捕获和模型培训

根据维基百科,监督学习是机器学习任务,学习一个函数,该函数根据示例输入输出对将输入映射到输出。

例如,您可能希望使用振动信息形式的输入数据(例如,可以使用加速度计进行测量),以预测轴承何时开始磨损。

您将建立一个模型(想想:类固醇上的数学函数!),将能够查看,比如说,1秒的振动信息(输入),并告诉你振动对应于什么(输出– 例如:”轴承确定”/”轴承磨损”)。要使模型准确无误,您将通过为模型提供训练数据集来”教”它如何将输入与输出更好地关联。对于此示例,这将是几分钟/小时的振动数据,以及关联的标签(即预期结果)。

向 IoT 项目添加一些 AI 通常会遵循类似的模式:

  1. 捕获和标记来自实际”事物”的传感器数据
  2. 设计神经网络分类器,包括处理信号可能需要的步骤(例如滤波器、提取频率特征等)
  3. 训练和测试模型
  4. 导出模型以在应用程序中使用它

对于在数据科学方面具有背景的人来说,所有这些步骤可能并非什么不平凡,但对于绝大多数人来说——包括你的!• 这的任务太大了com/”rel=”不跟随”目标=”_blank”=边缘脉冲。Edge Impulse 提供了一套相当完整的工具和库,它提供了一种用户友好的(阅读:无需成为数据科学家)方法来:

他们有一个伟大的教程基于STM32开发人员工具包,但由于我没有手头上,当最初看他们的解决方案,我创建了一个快速工具,从我的MXCHIP AZ3166开发人员工具包捕获加速度计和陀螺仪数据。

为了构建一个准确的模型,您需要获取大量的数据点。由于 IoT 设备通常受到很大限制,因此通常需要有点创意才能捕获此数据,因为您的设备可能不会让您简单地将价值数兆字节的数据存储在它上,因此您需要以某种方式卸载某些数据收集。

边缘脉冲公开一组 API,以尽量减少获取训练模型所需的数据所需的手动步骤数:

  • 引入服务用于向边缘脉冲发送新设备数据;
  • 远程管理服务提供了一种远程触发从设备获取数据的方法。

如边缘脉冲文档所示,”设备可以通过 WebSocket 直接连接到远程管理服务,也可以通过代理进行连接”。基于 WebSocket 的远程管理协议并不十分复杂,但将其移植到 IoT 设备上可能会过度破坏,而实际上,您可能只是将计算机用作代理,一方面,该代理会从 IoT 设备接收传感器数据,另一方面与边缘脉冲后端通信。

那么,如果您希望捕获和标记来自 MXChip 开发人员工具包的传感器数据,它在实践中是如何工作的呢?

自定义 MXChip 固件

您可以直接转到此GitHub 存储库,并下载可直接复制到 MXChip 开发基的即用固件。一旦在 MXChip 上安装了此固件,其生命周期中的唯一用途将是尽可能快地在其串行接口上转储从其加速度计和陀螺仪传感器获取的原始值(±150 Hz)。如果您要查看 MXChip 的串行输出,您将看到大量类似于此的跟踪:

Java

 

11
 
1
...
2
[67,-24,1031,1820,-2800--70]
3
[68,-24,1030,1820,-2730--70]
68,24,1030,1820273070|

5
[68,-23,1030,1820,-2730--70]
6
[68,-24,1030,1820,-2800-7070]
7
[68,-24,1030,1820,-2800-7070]
8
[68,-24,1031,1820,-2800--70]
9

10
[69,-22,1030,1820,-2800--70]
11
...

可能会有大量的更好的选项来揭示传感器数据在串行更优雅或更有效率(例如Firmata,二进制编码,如CBOR等),但我解决的东西快!

串行桥接到边缘脉冲

为了快速将传感器数据馈入边缘脉冲,我开发了一个非常简单的 Node.js 应用程序,它一方面从串行端口读取输入,另一方面与边缘脉冲远程管理 API 进行对话。一旦安装并启动网桥(当然,假设将 MXChip 连接到计算机),即可直接从边缘脉冲门户远程触发传感器数据的采集。您需要创建边缘脉冲帐户和项目。

npm installserial-edgeimpulse-remotemanager -g

该工具应使用以下环境变量进行配置:

  • EI_APIKEY:EdgeImpulse API 密钥(例如ei_e48a5402eb9ebeca5f2806447218a8765196f31ca0df798a6aa393b7165fad5fe'),用于您的项目;
  • EI_HMACKEY: EdgeImpulse HMAC 键(例如'f9ef9527860b28630245d3ef2020bd2f')为您的项目;
  • EI_DEVICETYPE:边缘脉冲设备类型(例如"MXChip");
  • EI_DEVICEID:边缘脉冲设备 ID(例如"mxchip001");
  • SERIAL_PORT:串行端口(例如:'COM3'、'/dev/tty.usbmodem142303',...)

npmjs.com/package/dotenv"rel="nofollow"目标="_blank"-在文件中声明它们 .env ),您可以运行该工具:

serial-edgeimpulse-remotemanager 

从那时起,您的 MXChip 设备将在边缘脉冲项目中访问。




现在,您可以非常轻松地开始捕获和标记数据,基于此数据构建和训练模型,甚至在实际训练模型后测试模型的准确性。

事实上,让我们通过下面的视频教程来了解端到端体验。

MCU 上的张力流?!

现在,我们已经训练了一个模型,将传感器数据转化为有意义的见解,我们将在未来的文章中了解如何直接在 MXChip 上运行该模型。你不觉得我们训练那个模特只是为了好玩吧?

Comments are closed.