在传感器中运行异常检测是工业应用预测性维护的一项重大创新,在系统级电源效率、减少停机时间和维护成本方面具有显著优势。想要监测即将发生的设备故障的警告信号的设计师面临的挑战是如何为预测性维护应用构建可靠的电池操作传感器节点。利用边缘的人工智能,你可以将部分人工智能移到更接近数据采集的位置,这样异常检测应用程序就可以在传感器中运行。一旦检测到异常,传感器就会唤醒主机处理器以进行进一步干预。NanoEdge AI Studio提供了一种快速直观的方法来构建传感器中的异常检测应用程序。在这篇知识文章中,您将学习如何在嵌入ST ISM330ISN惯性传感器的ISPU上轻松实现机器学习,用于边缘的异常检测功能。

在开始之前,你需要什么?

软件

在这篇知识文章中,需要使用以下软件工具和软件包:
  • 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
 

 
然后可以点击生成数据记录器并下载要在硬件板中闪存的.bin文件。
一旦完成,就可以通过创建一个新项目,开始使用NEAI软件工具构建异常检测用例。
 
 
现在有七个步骤需要完成才能完成库的生成。

第一步:项目设置

在这里,它需要为项目命名,并选择用于异常检测练习的正确设备。
有很多选项,但要选择的是产品:ISM330ISN。
对于许多设备,必须选择最大RAM、最大闪存和传感器类型的设置,对于ISPU设备,已经设置了所有正确的参数。
 
 

第二步:获得正常信号

对于第二步,我们需要单击添加信号,这里有三个不同的源,您可以使用它们来导入正常信号。
我们可以从3个不同的来源导入:

  • 从文本或CSV格式的文件
  • 来自软件包中的.dat文件
  • 从串行USB

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

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

第三步:获取异常信号

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

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

第四步:基准


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

 
结果显示在上图中。在X轴上有信号数,而Y轴是相似度的%,这是推理或检测函数的原始输出。
理想的情况是使对应于正常信号的所有蓝点尽可能接近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智能传感器又近了一步-意法半导体