设计一款自行车手的智能AI头盔
扫描二维码
随时随地手机看文章
每个骑自行车的人在使用手势左转和右转时都会遇到困难,在某些情况下这可能相当危险。我已经开发了一个原型,可以戴在任何自行车头盔,使其便携和易于使用。
在模型中,我们需要遵循以下步骤在边缘脉冲。
首先,我们将创建一个数据库,并将样本数据标记为“右”,“左”,背景道路噪声和“道路噪声”作为单独的数据集。随后,我们将使用边缘脉冲启动模型训练过程。基于验证的结果,可能需要调整训练参数或合并额外的数据集,然后重新训练模型以提高其性能。一旦模型已成功训练和验证,达到可接受的精度水平,我们将继续利用Arduino库将其部署在Portenta H7硬件上。
要将Arduino Portenta H7板连接到EI帐户,请按照下面链接中列出的步骤进行操作。
设备连接
固件安装完成后,打开命令窗口/终端(MacOs),输入以下daemon命令:
edge-impulse-daemon
连接设备后,导航到数据采集部分。
通过Portenta H7录制音频,开始收集音频数据。这里我读左,并记录数据在边缘脉冲工具,并标记为左。同样,为Right记录音频数据,并单独收集道路噪音,以提高准确性。
边缘脉冲中的模型训练
在Create Impulse部分,请将预处理模块设置为MFCC,选择“Classification”作为学习模块。
然后生成特征并可视化以获得每个标签的高级概述。
神经网络设置:
在神经网络设置中,将训练周期设置为200,学习率设置为0.005
在Neural Network部分,按指示配置层。
我使用重塑层将音频数据转换为1D数组,并应用1D卷积层进行模型训练。为了提高准确性,我也使用了drop out图层。
该模型在训练阶段达到了100%的准确率,这足以进行下一步。
模型试验
在测试阶段,使用未纳入训练过程的新数据集对模型进行评估。该模型达到了84.21%,足以用于硬件部署。
部署
在成功验证训练模型后,将其部署回Arduino Portenta H7。
然而,我们不会直接将其部署到Arduino Portenta H7上,因为我们需要在机器学习预测之上添加更多的逻辑。
下载模型后,按照以下步骤将库导入Arduino IDE:
Arduino IDE中导入库:
1. 打开Arduino IDE,转到**Sketch** > **Add File**,选择下载的文件。
2. 导入后,导航到**Examples** > **Smart_Helmet_V2_Inferencing** > **Portenta_H7** > **Portenta_h7_microphone_continuous**。
连续音频采样
在对音频进行分类时,例如在关键字检测中,必须确保捕获和分析所有信息,以避免遗漏任何事件。这需要你的设备在分析音频样本的同时捕获它们。
为什么需要连续推理?
在对数据进行分类的标准(非连续)推理模式中,您将对数据进行采样,直到有一个完整的窗口(例如,1秒用于关键字发现模型,如studio中的Create Impulse选项卡中详细介绍的那样)。一旦有了这个窗口,就可以使用‘ run_classifier ’函数对其进行分类,该函数将返回一个预测。之后,清除缓冲区,采样新数据,并再次运行推理过程。然而,在现实世界中部署模型时,有一些重要的注意事项需要考虑:
1. 窗口之间存在延迟,因为对每个窗口进行分类需要时间,并且在此分类期间不会对数据进行采样。这可能导致事件丢失。
2. 窗户之间没有重叠。因此,如果事件正好发生在窗口的末尾,则可能无法完全捕获它,从而导致不正确的分类。
为了减轻这种情况,我们需要进行连续推理。关于连续推理的详细说明请点击下面的链接。
算法
在检测到关键字“右”或“左”后,SW将各自的led(左或右)闪烁7000毫秒,周期时间为500毫秒。
我已将自定义逻辑集成到此库中,以激活特定的通用输入/输出(GPIO)引脚,以便在检测到关键字时打开/关闭特定的led。A修改后的链接。一旦将库添加到Arduino中,将提供ino文件以供参考。
最终的模型
我已经连接了5V迷你电源,为Portenta H7和led供电。
结论
这个TinyML模型,通过Edge Impulse工具使用连续推理方法,在微控制器中启用“嘿Siri”功能。这些机器学习模型可以用于各种用例,例如在家庭自动化中打开或关闭灯。
本文编译自hackster.io





