如何使用NEAI软件工具将带有智能处理单元的MEMS传感器用于异常检测应用
在传感器中运行异常检测是工业应用预测性维护的一项重大创新,在系统级电源效率、减少停机时间和维护成本方面具有显著优势。对…的挑战。。。
在开始之前,你需要什么?
软件
在这篇知识文章中,需要使用以下软件工具和软件包:- NEAI是专门用于查找最佳异常检测库的工具
- X-CUBE-ISPU,这是一个专门为ISPU设备创建正确二进制文件的软件包
- STM32CubeProgramer,它是用于编译X-CUBE-ISPU包的软件工具
硬件
用于实现我们的结果的硬件配置如下:
- NUCLEO-F401RE是STM32核板
- X-NUCLEO-IKS01A3是用于消费类传感器的STM32核屏蔽
- STEVAL-SMKI230AA是DIL24,其上安装有嵌入ISPU功能的ISM330ISN




可以使用其他板配置来获得相同的结果,需要检查软件与硬件的兼容性。
如何使用NEAI软件为您的ISPU设备找到最佳库
当打开NEAI工作室时,第一件事是打开数据记录器,在那里你可以找到许多不同的板配置,可以用来运行异常检测算法。

- 数据速率(Hz):416 Hz
- 范围(g):2 g
- 每个轴的样本量:128
- 轴数:3

一旦完成,就可以通过创建一个新项目,开始使用NEAI软件工具构建异常检测用例。

第一步:项目设置
有很多选项,但要选择的是产品:ISM330ISN。
对于许多设备,必须选择最大RAM、最大闪存和传感器类型的设置,对于ISPU设备,已经设置了所有正确的参数。

第二步:获得正常信号
对于第二步,我们需要单击添加信号,这里有三个不同的源,您可以使用它们来导入正常信号。
我们可以从3个不同的来源导入:
- 从文本或CSV格式的文件
- 来自软件包中的.dat文件
- 从串行USB

应选择COM端口,绑定速率固定为115200。
对于这篇知识文章,正常信号是在风扇线圈以其最大速度运行时获取的。
因此,在将线圈设置为最大速度并单击“开始”后,数据开始流式传输并进行记录。

可以收集所需的所有缓冲区,但对于一个简单的用例,100个样本就足够了,它们代表了风扇的正常行为
为了知识文章的简单性,将只收集代表我们风扇上的一种操作模式的数据,即最大速度,但当然可以收集代表所有不同状态的数据,这些状态将被视为风扇的正常行为。
例如,可以记录所有速度的信号,而不仅仅是一个速度,在这种情况下,可以将所有信号连接起来,这将在一个文件中代表正常状态。
信号屏幕总结了刚刚记录的数据的内容。
在右侧,有一个导入数据的预览,带有所有加速度计轴的FFT图。
也有可能手动添加滤波器以去除不需要的频率,通过这样做,频率图将根据所做的切割立即发生变化。在这篇知识文章中,将跳过这一部分。

第三步:获取异常信号
然后需要从异常行为中导入信号,从被认为异常的地方收集数据,为了简单起见,只有将速度从最快变为最慢才能得到异常信号行为。

为了了解系统是如何工作的,必须进行一个非常重要的考虑。
此时提供的信号示例并不用于训练库,它们只是为下一步将要进行的自动搜索提供一些上下文,因为在库嵌入目标机器之后,所有学习都将稍后在ISPU中进行。这里提供的异常示例不需要详尽无遗。例如,对于一个真实的用例,它们可以在出现故障的机器上收集,或者在您知道异常的情况下收集,或者根据具体情况,它们可以人工创建。
在测试库时,可以检测到以前从未见过的异常,因为嵌入式学习使NEAI库,特别是异常检测具有特别的适应性。
收集完所有数据后,让我们导入它们,检查图表。

第四步:基准
在这一点上,鉴于我们提供的信号,NEAI工作室将开始努力为我们的用例找到尽可能好的库。纳米边缘库由三个主要块组成:
- 信号预处理算法,这可能非常简单,如偏移、归一化或更复杂的FFT或PCA
- ML模型的选择。在所有可用模型的池中,存在不同类别的ML,如KNN、SVN、NN
- ML模型的一组超参数,使其能够尽可能有效地解决问题。
每个库都使用以前导入的信号进行测试。该库将学习正常信号,然后对正常信号和异常信号进行推理。对于使用来自所提供数据的随机子集的每个库,这种全部过程发生多次,以最小化任何可能的偏差。

理想的情况是使对应于正常信号的所有蓝点尽可能接近100%的相似性,并且我们希望表示异常信号的所有红点接近0%。
最重要的性能指标是平衡的准确性,它转换了库将输入信号正确地归为正确类别(正常或异常)的能力。100%的准确度意味着所有蓝色点都在90%的决策边界之上,而所有红色点都在下面。
最后,RAM和闪存的数量也得到了优化,因此可以将找到的最佳库与RAM空间进行比较。
第五步:模拟器
模拟器步骤是可以直接从软件测试库的步骤,以检查其是否正确,从而在最终实现之前了解您使用基准生成的内容是否正常工作。
再次,让我们使用串行数据记录器来收集正常情况下的数据,即当速度达到最大值时。

然后我们转到检测,看看库的行为,我们将再次使用串行数据。
这里的推断结果显示了100%的相似性,这是由于风扇正常运行所预期的。


这里需要强调的一点是,我刚刚向您展示了不同速度的情况,然而,如果我关闭风扇,就会检测到异常,如果我打开风扇本身,也会检测到异常。
我想提醒大家的是,异常检测是预测性维护的第一步,预测性维护只是说明某个事物何时偏离其正常行为。
第六步:验证
一旦模拟阶段完成,验证步骤只是创建的算法的摘要,突出显示总体得分、平衡的准确性和算法流程图。

第7步:部署
在NEAI工作室的最后一步中,通过单击生成库,可以下载带有.zip包中的库的.h文件。


如何在ISPU设备中实现生成的.h文件
现在,一旦生成了尽可能好的库,就需要在嵌入ISPU的MEMS传感器中使用ISM330ISN。
X-CUBE-ISPU软件包
X-CUBE-ISPU软件包有一些示例可以实现使用NEAI工具生成的库,但也有一些预构建示例和模板可以与运行算法的自定义C代码一起使用。
在这篇知识文章中,将解释如何在ISPU设备中使用NEAI工具实现最佳库。
在X-CUBE-ISPU主页中,需要进入与本练习所用硬件匹配的目录,因此:
x-cube-ispu\Projects\NUCLEO-F401RE\Examples\CUSTOM\ISM330ISN_NEAI_正常检测
在这个文件夹中,你可以找到一些已经存在的文件,这些文件必须用NEAI工作室生成的文件进行更改。
因此,第一步是从NEAI包中获取两个文件,并将它们复制到X-CUBE-ISPU软件包中。
- 是的
- ispuctrl.h


此外,ispu_neai.h是在MEMS传感器本身中运行的二进制配置文件。
构建X-CUBE-ISPU程序并在传感器中闪存
打开STM32程序后,需要导入项目。因此,单击导入项目图标,我们将现有项目选择到工作空间中。

接下来,需要在复制两个文件的目录中浏览项目:
x-cube-ispu\Projects\NUCLEO-F401RE\Examples\CUSTOM\ISM330ISN_NEAI_正常检测
第一个框必须不加标签,只保留写入STM32CubeIDE的第二个框。
这里需要考虑的主要问题是理解代码是如何工作的,因为它的目的不是比较两种不同的状态,而是使用像NEAI生成的库一样的库来比较正常状态和异常状态。它主要作为一个状态机工作:
- 第一步是进入学习阶段,在学习阶段中获取新的正常信号
- 一旦完成了这一新的学习,来自NEAI的库将运行,检查信号是否与正常状态匹配,在这种情况下,不会引发中断。另一方面,如果使用库在最佳信号和异常信号之间找到了一些推断,则会引发中断
- 只有当检测到异常时,才会打印与异常对应的数据
下一步是使用屏幕左上角的构建按钮构建项目,完成后,将硬件设置连接到笔记本电脑后,即可开始调试。

调试在点击绿色bug后开始,完成后,我们可以在终端中检查结果。
检查结果
在这篇知识文章中,将使用开放软件工具putty,以便直接从ISPU中查看结果。发射腻子,第一步是点击串行模式,并写出正确的串行线和速度。虽然串行线路可以改变,但速度始终为115200。

一些可视化参数可以修改,例如在终端上进行,为了更好地可视化,需要标记:
- 每个LF中的隐含CR
- 每个CR中的隐式LF

最后,单击打开,终端将显示值。
正如预期的那样,第一步是获取新的正常数据的学习阶段。

一旦完成此步骤,将显示消息“学习阶段结束”,结束学习阶段。

如果库运行良好,那么如果保持学习条件并且不流式传输数据,则不会流式传输任何数据。


一旦创建了异常,数据就会开始针对特定类型的异常进行流式传输。


数据可以在微控制器中收集,以形成用于未来分类的数据集。
结论
在这篇知识文章中,它展示并解释了如何使用ISM330ISN,它将ISPU嵌入NEAI工作室软件工具。
NEAI软件工具允许从一组好信号和坏信号开始,在许多组合中找到尽可能好的库,一旦在学习阶段获得新数据,就可以使用这些信号。
X-CUBE-ISPU是一种软件工具,需要用于在ISPU设备中闪存NEAI工具生成的库。
您可以查看以下链接,了解有关同一主题的分步网络研讨会。
网络研讨会:异常检测与人工智能:距离ST智能传感器又近了一步-意法半导体