使用Arduino Nano 33 BLE Sense训练TensorFlow模型以识别某些关键字并控制RGB灯带。
与传统代码相比,边缘机器学习对于创建可通过更少的编程和逻辑流程图完成“智能”任务的设备非常有用。这就是为什么我想要结合边缘关键字检测功能,该功能可以识别某些单词,然后根据所说的内容执行任务。
该项目只有一个组件:Arduino Nano 33 BLE Sense。真正的魔力发生在机器学习模型中。Arduino Nano 33 BLE Sense充满了传感器,包括麦克风,9轴IMU,环境传感器以及手势/接近度/颜色/环境光传感器(APDS-9960)。它上的微控制器是nRF52840,它以64MHz运行,并包含1MB闪存和256KB RAM。该项目还使用其板载RGB LED来显示当前颜色。
我首先在Edge Impulse上创建一个新项目,然后安装Edge Impulse CLI工具。有关如何执行此操作的更多说明,请访问安装说明页面。这使Arduino Nano与云服务通信以接收命令并自动发送传感器数据。我下载了最新的Edge Impulse固件,然后通过双击重置按钮使其进入引导加载程序模式,将其刷新到板上。然后我跑去flash_windows.bat转移它。
在命令提示符上,我运行edge-impulse-daemon并跟随向导进行设置。现在,Nano出现在项目的设备列表中,该列表允许获取样本并作为培训/测试数据集的一部分上载。
训练机器学习模型需要数据,并且数据很多。我希望RGB LED灯带具有以下模式:
开
关
红色
绿色
蓝色
在每种模式下,我都会听到大约1分钟的声音,在这种情况下,我会以1-2秒的间隔反复说出单词并将其分开。
但是仅仅拥有这些样本是不够的,因为背景噪声和其他词语会给出错误的读数。值得庆幸的是,Edge Impulse已经为噪声和“未知”单词提供了一个预先构建的数据集,因此我使用了它们的“上传现有数据”工具将这些音频文件上传到训练数据中。