{{ title }}
{{ errorMessage }}


{{ errorMessage }}





{{ registerSuccessMessage }}
当前位置: 首页> 技术应用> 正文 
收藏
点赞
投稿
工业机械异常检测
来源: 作者:
  2021-11-10   

Rachel /文   MathWorks公司的预测性维护产品经理

 您怎么知道一台机器是否在正常运行?问题的回答是:通过利用深度学习来检测工业机器的常规振动数据中的异常情况。异常检测有很多用途,而尤其在预测性维护中特别有用。

 这个深度学习的例子讲的是基于双向长短期记忆网络(biLSTM)的自动编码器。虽然这个词很拗口,但它仅表示训练网络来重构“正常”数据。这样,当我们给算法提供一些看起来不同的数据时,重构错误会提示您机器可能需要维护。当您所拥有的数据均为“正常”数据时,自动编码器不失是一个很好的尝试方法。

数据集有两部分:维护前的数据和维护后的数据。从逻辑上讲,我们可以假定维护后的数据是“正常”的(当我们有一个称职的维护团队的情况下!)。但是我们对维护前的数据并不确定。

                                               image.png

以下显示了两个相互叠加在一起的数据样本。

image.png

与其在原始信号上进行训练,不如提取特征区分训练前后的数据,这往往帮助更大。使用Diagnostic Feature Designer应用程序,一次性从所有数据中自动提取特征并对其排序。然后,这个应用程序可以自动创建一个函数generateFeatures,以编程方式重做所有这些工作。

 

trainFeatures = generateFeatures(trainData);

这就是那个基于biLSTM的自动编码器。

featureDimension = 1;

 

% Define biLSTM network layers

layers = [ sequenceInputLayer(featureDimension, 'Name', 'in')

bilstmLayer(16, 'Name', 'bilstm1')

reluLayer('Name', 'relu1')

bilstmLayer(32, 'Name', 'bilstm2')

reluLayer('Name', 'relu2')

bilstmLayer(16, 'Name', 'bilstm3')

reluLayer('Name', 'relu3')

fullyConnectedLayer(featureDimension, 'Name', 'fc')

regressionLayer('Name', 'out') ];

 

自动编码器是这样工作的:在正常数据上训练网络。如果您把正常的数据传给它,就能很好地重构它。如果您把一些不正常的数据传给它,就无法重构它,并且您会从重构错误中看到提示。

在每个通道的排名前四的特征上训练网络—仅根据正常(维护后)数据。

通过挑选合适的重构误差阈值,算法能以相当高的准确率识别出异常情况。而我们有一些已知为异常的测试数据,可以明确地测试算法的准确率。


预测类别

文本框: 真实类别文本框: 重构误差image.png



分享到:
  点赞
  收藏
  打印
评论(0
已输入0
最新文章