|
使用Edge Impulse Studio训练发烧检测模型 使用Edge Impulse训练机器学习模型非常简单,只需7-8个步骤即可完成。下面解释了使用Edge Impulse训练模型的所有步骤:
1. 在网站上注册并创建您的项目 第一步是在Edge Impulse网站上注册。注册后,您将看到仪表板界面,该界面将显示边缘脉冲模型开发的基本工作流程。创建并命名一个新项目。如项目信息中所述,选择标记方法为“one label per data item”,延迟计算为Cortex-M4F 80 MHz。对于基于视觉的模型,您可以选择bounding boxes选项。Edge Impulse Studio支持许多其他处理器和板卡,如Spresense套件、ST 探索物联网套件等。 在Danger zone,,有一个称为重新平衡数据集的选项,它将划分您的训练和测试数据80:20的比例。
2. 使用数据转发器收集数据 现在第二步是收集用于模型训练的数据。如果您单击““LET’S COLLECT SOME DATA”按钮,您将看到各种选项。
我们将使用data-forwarder选项,它使用python3、node.js 和 cli 从您的硬件设备收集数据,然后将收集的硬件中继到边缘脉冲平台。使用官方边缘脉冲安装文档的设置边缘脉冲数据转发器后,首先,上传提供给您的Arduino 33 IOT板设置的数据收集脚本。打开具有管理员或sudo 权限的 cmd 或终端,然后键入以下命令: - $ edge-impulse-data-forwarder
复制代码然后数据转发器应相应地响应: - Edge Impulse data forwarder v1.5.0
- ? What is your user name or e-mail address (edgeimpulse.com)? <enter registered email-id>
- ? What is your password? <enter password>
- Endpoints:
- Websocket: wss://remote-mgmt.edgeimpulse.com
- API: https://studio.edgeimpulse.com
- Ingestion: https://ingestion.edgeimpulse.com
- [SER] Connecting to /dev/tty.usbmodem401203
- [SER] Serial is connected
- [WS ] Connecting to wss://remote-mgmt.edgeimpulse.com
- [WS ] Connected to wss://remote-mgmt.edgeimpulse.com
- ? To which project do you want to add this device? <project_name>
- ? 3 sensor axes detected. What do you want to call them? Separate the names with ',': <axis1,axis2,axis3,…>
- ? What name do you want to give this device? <device_name>
- [WS ] Authenticated
复制代码输入有效的注册凭据、刚刚创建的项目名称,并将检测到的 2 个轴分别命名为 O_Temp 和 A_Temp。应自动检测数据频率。
如果你回到边缘脉冲 UI,你应该看到刚刚添加的设备的名称,如下所示 -
绿点表示设备处于活动状态并已插入。现在,选择左侧的数据采集选项卡,您将能够看到以下页面:
输入所需的样本长度,然后单击“开始采样”按钮。计数器应开始代替刚刚按下的采样按钮,在输入的时间过去后,收集的数据将如图所示显示。您可以通过单击每个收集的样本右侧的 3 个点来重命名样本并更改其标签。要可视化收集的样本,只需单击它。
3. 创建Impulse Impulse用于根据收集的信号值训练模型。选择左侧的 Impulse 设计选项卡,您将看到一个新页面。将其设置为如下所示-
查看可用的各种选项和块。您可以根据数据选择块,甚至可以选择要训练数据的轴。边缘脉冲解释了每个块及其一般用例。我们将使用原始数据,因为它允许我们将传感器的值直接提供给模型的 API,同时也节省了处理时间。将频率保持在2赫兹。这意味着我们将每 500 毫秒向模型提供一次传感器数据。请注意,这并不意味着我们将以相同的速率从传感器读取数据。我们可能会更快地读取数据,以便在将其提供给模型之前对其进行平均。因此,我们的样本长度将为 1 / 频率或 500 毫秒。窗口大小为 500 毫秒时,我们将对 500 毫秒长度的数据进行推理,在我们的例子中,这是单个样本的长度。窗口大小越大,分类在一起的样本越多,特征列表就越多。为避免复杂化,我们将对每个样本进行单独分类。在原始数据块中同时检查 - O_Temp 和 A_Temp,因为我们希望我们的模型在各种环境温度下工作。
4. 生成特征 现在我们继续从原始数据创建特征。在Impulse设计下,一旦您保存了刚刚创建的Impulse,“Create impulse”旁边的圆圈应变为绿色,表明您的Impulse已被创建。您还应该看到其他选项卡,例如“Raw data”,具体取决于您添加的块。
您可以使用右上角的下拉菜单选择要查看的收集的训练样本。在可视化下方,您可以看到两种类型的功能 - 原始和 DSP。 DSP 功能在本项目中并不重要,因此我们稍后将对其进行说明。如果您仔细观察,原始特征只不过是我们正在收集的 O_Temp、A_Temp 或 1 个样本。这似乎是正确的,因为我们使用了 2 的频率和 500 毫秒的窗口大小。在 Topmost 选项卡上选择“Generate features”这将导致此页面-
您不会看到任何图表,因为我们尚未生成任何特征。单击“Generate features”按钮,您将看到边缘脉冲已开始从收集的数据中学习特征。它基本上运行 K-means 算法,将具有相同标签的数据聚类在一起。您应该能够在右侧看到一个 3D 图形,所有不同的标签都有不同的颜色。完成后,我们现在可以继续训练模型。
5. 模型架构和训练 选择左侧的 NN Classifier 选项卡。您将能够看到如下所示的窗口,保持默认设置不变或像我所做的那样对它们进行一些修改。单击开始训练,在几分钟内,您应该已经完成了 50 个 epoch,向您展示了模型的准确性。由于这是一个相对简单的问题,我们应该会看到> 98% 的非常高的准确率。
6. 在测试样本上测试模型 在此之后,我们可以使用实时分类选项卡检查模型的执行情况。
您可以通过使用数据转发器连接已注册的数据收集设备来获取新样本,也可以对现有测试样本进行分类。
您将能够在“Detailed result”部分下以视觉和类似报告的格式查看新/测试样本的每个窗口的分类情况。
7. 计算测试精度 现在我们将看到模型在我们收集的整体测试数据上的表现。选择“Model testing”选项卡,然后按“Model testing”按钮。
现在应该能够以混淆矩阵的形式看到测试精度。
8. 版本控制和部署 版本控制将帮助您创建同一模型和项目的多个版本。最后,我们转到Deployment选项卡。选择创建库下的Arduino库选项,然后往下走。您将看到 NN 分类器的可用优化选项。按分析优化按钮查看哪种优化更好。在我们的例子中,float32性能更好,因此我们将使用它来构建库。
单击构建按钮,会自动开始下载一个zip文件。
恭喜!您已经成功构建了第一个边缘脉冲模型! |