在过去的几周里,我一直在花一些时间研究一些人称之为人工智能,人工智能的东西。在物联网的广阔领域,许多为它提供动力的技术并不新鲜。例如,术语机器学习实际上可追溯到 1959 年(!),我们当然没有等到 IoT 成为将设备连接到 Internet 的东西,对吗?
在接下来的几篇博文中,我想分享我进入AIoT的部分旅程,特别是,我会尽力帮助你理解如何:
- 快速高效地训练使用传感器数据的 AI 模型
- 运行处理能力非常有限的 AI 模型(想想 MCU)
- 远程操作您的 TinyML® 解决方案,即从 AI 发展到 AIoT
简化数据捕获和模型培训
根据维基百科,监督学习是机器学习任务,学习一个函数,该函数根据示例输入输出对将输入映射到输出。
例如,您可能希望使用振动信息形式的输入数据(例如,可以使用加速度计进行测量),以预测轴承何时开始磨损。
您将建立一个模型(想想:类固醇上的数学函数!),将能够查看,比如说,1秒的振动信息(输入),并告诉你振动对应于什么(输出– 例如:”轴承确定”/”轴承磨损”)。要使模型准确无误,您将通过为模型提供训练数据集来”教”它如何将输入与输出更好地关联。对于此示例,这将是几分钟/小时的振动数据,以及关联的标签(即预期结果)。
向 IoT 项目添加一些 AI 通常会遵循类似的模式:
- 捕获和标记来自实际”事物”的传感器数据
- 设计神经网络分类器,包括处理信号可能需要的步骤(例如滤波器、提取频率特征等)
- 训练和测试模型
- 导出模型以在应用程序中使用它
对于在数据科学方面具有背景的人来说,所有这些步骤可能并非什么不平凡,但对于绝大多数人来说——包括你的!• 这的任务太大了com/”rel=”不跟随”目标=”_blank”=边缘脉冲。Edge Impulse 提供了一套相当完整的工具和库,它提供了一种用户友好的(阅读:无需成为数据科学家)方法来:
他们有一个伟大的教程基于STM32开发人员工具包,但由于我没有手头上,当最初看他们的解决方案,我创建了一个快速工具,从我的MXCHIP AZ3166开发人员工具包捕获加速度计和陀螺仪数据。
为了构建一个准确的模型,您需要获取大量的数据点。由于 IoT 设备通常受到很大限制,因此通常需要有点创意才能捕获此数据,因为您的设备可能不会让您简单地将价值数兆字节的数据存储在它上,因此您需要以某种方式卸载某些数据收集。
边缘脉冲公开一组 API,以尽量减少获取训练模型所需的数据所需的手动步骤数:
- 引入服务用于向边缘脉冲发送新设备数据;
- 远程管理服务提供了一种远程触发从设备获取数据的方法。
如边缘脉冲文档所示,”设备可以通过 WebSocket 直接连接到远程管理服务,也可以通过代理进行连接”。基于 WebSocket 的远程管理协议并不十分复杂,但将其移植到 IoT 设备上可能会过度破坏,而实际上,您可能只是将计算机用作代理,一方面,该代理会从 IoT 设备接收传感器数据,另一方面与边缘脉冲后端通信。
那么,如果您希望捕获和标记来自 MXChip 开发人员工具包的传感器数据,它在实践中是如何工作的呢?
自定义 MXChip 固件
您可以直接转到此GitHub 存储库,并下载可直接复制到 MXChip 开发基的即用固件。一旦在 MXChip 上安装了此固件,其生命周期中的唯一用途将是尽可能快地在其串行接口上转储从其加速度计和陀螺仪传感器获取的原始值(±150 Hz)。如果您要查看 MXChip 的串行输出,您将看到大量类似于此的跟踪: