深度学习代码生成的手臂上使用小波散射和复发性神经网络故障检测
这个例子演示了代码生成acoustic-based机故障检测使用小波散射网络搭配了一个递归神经网络。这个示例使用MATLAB®编码器™,深度学习MATLAB编码器接口,MATLAB支持包树莓π®硬件生成一个独立的可执行文件(金宝app.elf
覆盆子π)文件,利用手臂®计算库的性能。声的输入数据由时间序列记录从空气压缩机和输出是机械的状态机的预测LSTM-based RNN网络。这个独立的可执行的覆盆子π运行流分类器在接收到的输入数据从MATLAB和转移计算分数为每个标签MATLAB在主机。音频预处理和网络训练的更多细节,请参考使用小波散射和复发性深网络故障检测。
代码生成小波次散射提供了显著的性能改进。看到为小波生成和部署优化的代码时间对部门目标散射为更多的信息。
这个例子遵循这些步骤:
先决条件
MATLAB®编码器™
嵌入式编码器®
覆盆子π硬件
臂计算库版本20.02.1(目标ARM硬件)
环境变量的编译器和库。设置环境变量,看到环境变量(MATLAB编码器)。
支持编译器和库的列表,请参阅金宝app生成的代码使用第三方库(MATLAB编码器)。
准备输入数据集
下载并解压缩的数据集数据文件在一个文件夹,你有写权限。记录存储. wav
文件在文件夹命名为各自的国家。
%下载AirCompressorDataset.zip组件=“音频”;文件名=“AirCompressorDataset / AirCompressorDataset.zip”;localfile = matlab.internal.examples.download金宝appSupportFile(组件,文件名);% downloadFolder解压缩下载的zip文件downloadFolder = fileparts (localfile);如果~ (fullfile (downloadFolder,存在“AirCompressorDataset”),“dir”)解压缩(localfile downloadFolder)结束%创建一个audioDatastore对象,数据存储、管理数据数据存储= audioDatastore (downloadFolder IncludeSubfolders = true, LabelSource =“foldernames”);%使用countEachLabel获取的每个类别的样本数据集countEachLabel(数据存储)
ans =8×2表标签数_____ _____轴承225飞轮225健康225丽芙·225值列表225 NRV 225活塞225 Riderbelt 225
录音的分类,构造小波散射网络提取小波散射系数和用于分类。每个记录有50000 16岁千赫采样样本。构造小波散射网络基于数据特征。设置不变性规模为0.5秒。
Fs = 16 e3;windowLength = 5 e4;= 0.5;sn = waveletScattering (SignalLength = windowLength SamplingFrequency = Fs,…InvarianceScale = 0.5);
与这些网络设置,有330个散射路径和25时间窗口/音频记录。这将导致减少6倍为每个记录的数据的大小。
[~,npaths] =路径(sn);Ncfs = numCoefficients (sn);总和(npaths)
ans = 330
Ncfs
Ncfs = 25
初始化signalToBeTested
指打乱数据存储
你下载。通过signalToBeTested
到faultDetect
函数的分类。
rng默认的;数据存储= shuffle(数据存储);[InputFiles ~] = splitEachLabel(数据存储,0.5);signalToBeTested = readall (InputFiles);
在MATLAB环境下识别机器故障检测
的faultDetect
函数读取输入音频样本,计算小波散射特性,并执行深度学习分类。有关更多信息,进入类型
faultDetect
在命令行中。
类型faultDetect
函数= faultDetect () % # codegen %版权2022年MathWorks公司持续净;如果isempty(净)净= coder.loadDeepLearningNetwork (“faultDetectNetwork.mat”);结束持久sn;如果isempty (sn) windowLength = 5 e4;Fs = 16 e3;= 0.5;sn = waveletScattering (SignalLength = windowLength SamplingFrequency = Fs,…InvarianceScale =);S = sn.featureMatrix(“变换”,“日志”);TestFeatures = S (2:330 1:25); %Remove the 0-th order scattering coefficients out = net.classify(TestFeatures); end
通过每一个音频输入faultDetect
,提取小波散射系数。传递系数的LSTM-based RNN网络分类并返回输出。每个输出映射到健康八个州每输入音频检索。有关详细信息,在网络上创建,请参考使用小波散射和复发性深网络故障检测。
inputCount = 1;numInputs = 10;% 10音频输入文件进行验证负载(“faultDetectNetwork.mat”);而inputCount < = numInputs%得到音频数据的帧x = signalToBeTested {inputCount};%应用流分类器函数outputLabel (inputCount) = net.Layers (5) . class (faultDetect (x));inputCount = inputCount + 1;结束散射(1:numInputs outputLabel, 140,“填充”)包含(“音频输入”);ylabel (“机器健康状况”);标题(“每个音频输入主机机器健康状况”)
识别机器故障检测覆盆子π使用公益诉讼工作流
本节演示了代码生成和部署的机器故障检测使用小波散射和RNNs覆盆子π硬件。使用一个processor-in-the-loop(公益诉讼)工作流部署和配置。有关更多信息,请参见银/公益诉讼经理验证工作流(嵌入式编码)。
创建一个代码生成配置对象生成公益诉讼的功能。
cfg = coder.config (“自由”,“是”,真正的);cfg。VerificationMode =“公益诉讼”;
创建一个深度学习配置对象(dlcfg
)“arm-compute”
图书馆。设置部门计算版本和体系结构,然后附上dlcfg
编码器配置对象。
dlcfg = coder.DeepLearningConfig (“arm-compute”);dlcfg。ArmArchitecture =“v7”;dlcfg。ArmComputeVersion =“20.02.1”;cfg。DeepLearningConfig = dlcfg;
使用MATLAB支持包树莓π硬金宝app件功能raspi
创建一个连接的覆盆子π。在这段代码中,取代这些关键词和取消代码:
raspiname
与你的主机名覆盆子π用户名
和你的用户名密码
用你的密码
如果(~ (“r”,“var”)r = raspi (“raspiname”,“用户名”,“密码”);结束hw = coder.hardware (“树莓π”);cfg。硬件= hw;
指定构建目录,设置目标语言c++。
buildDir =“~ / remoteBuildDir”;cfg.Hardware。BuildDir = BuildDir;cfg。TargetLang =“c++”;
使分析和生成公益诉讼代码。一个墨西哥人的文件命名faultDetect_pil
是你当前文件夹中生成。
cfg。CodeExecutionProfiling = true;audioFrame = 1 (windowLength, 1);codegen配置cfgfaultDetectarg游戏{audioFrame}沉默;
部署代码。这可能需要几分钟。# # #连接配置功能“faultDetect”:“覆盆子π”
从MATLAB调用生成的公益诉讼功能检测输出和执行时间。
inputCount = 1;numInputs = 10;% 10音频输入文件进行验证负载(“faultDetectNetwork.mat”);而inputCount < = numInputs%得到音频数据的帧x = signalToBeTested {inputCount};%应用流分类器函数outputLable (inputCount) = net.Layers (5) . class (faultDetect_pil (x));inputCount = inputCount + 1;结束
# # #开始应用程序:“codegen / lib / faultDetect /公益诉讼/ faultDetect。精灵的终止执行:明确faultDetect_pil # # #启动应用程序faultDetect.elf……执行分析数据可供浏览。开放的仿真数据检查员。执行分析报告后终止。
散射(1:numInputs outputLable, 140,“填充”)包含(“音频输入”)ylabel (“机器健康状况”)标题(“机器健康状况/音频输入覆盆子π”)
公益诉讼执行终止。
清晰的faultDetect_pil;
# # #主机应用程序产生以下标准输出(stdout)和标准错误(stderr)消息:执行分析报告:coder.profile.show (getCoderExecutionProfile (faultDetect))
生成执行概要报告评估执行时间。
executionProfile = getCoderExecutionProfile (“faultDetect”);报告(executionProfile,…“单位”,“秒”,…“ScaleFactor”,“1 e 03”,…“NumericFormat”,“% 0.4 f”);
总结
在本例中,您使用小波散射变换用一个简单的周期性网络以空气压缩机故障进行分类。散射变换提取健壮的特性允许你学习的问题。此外,取得的数据减少你在时间维度的数据通过使用小波散射变换是至关重要的建立一个计算可行的复发性网络的问题。
引用
[1]Verma Nishchal K。,Rahul Kumar Sevakula, Sonal Dixit, and Al Salour. “Intelligent Condition Based Monitoring Using Acoustic Signals for Air Compressors.”IEEE可靠性65年,没有。1(2016年3月):291 - 309。https://doi.org/10.1109/TR.2015.2459684。
2022年版权MathWorks公司。