前几期推出了两个关于时频变换结合机器学习故障诊断的文章,如下:
保姆级教程之连续小波变换-CNN,ResNet,CNN-SVM,CNN-BiGRU,CNN-LSTM的故障诊断,MATLAB代码
江南大学轴承数据诊断---保姆级教程之连续小波变换-CNN,ResNet,CNN-SVM,MATLAB代码
本期再推出一个:基于S变换-CNN,ResNet,CNN-SVM,CNN-LSTM的轴承诊断方法,同样使用凯斯西储大学和江南大学两大数据集进行验证。
内容简介
针对传统方法在机械故障诊断时存在特征提取困难、分类器训练复杂等问题,提出一种基于S变换和卷积神经网络(CNN)的滚动轴承故障诊断方法。
首先,将轴承的原始数据经过S变换得到时频图,再通过CNN/ResNet/CNN-SVM/CNN-LSTM/CNN-BiGRU对故障进行分类。
关于S变换
S变换改善了短时傅里叶变换和连续小波变换的缺点并继承了两者的优点,采用高斯窗函数(窗宽与频率成反比)避免了窗函数选择和窗宽固定的不足,其时频表示中各频率分量的相位谱与原始信号有直接联系,可适用于非平稳信号的处理。
采用S变换时频图作为故障特征提取的手段,并构建多种机器学习诊断方法,可以自行搭配。包含的有:
ST-CNN,ST-CNN-SVM,ST-ResNet,ST-CNNBiGRU,ST-CNNLSTM。
流程如下
①对凯斯西储大学和江南大学轴承数据进行处理。
②通过S变换将轴承数据集转换为时频图,以提取频域和时域信息, 并为后续的故障诊断提供更详细的特征;
③为了方便模型的训练,以及考虑到计算机的内存,将时频图重新调整为64×64×3的尺寸,并保存提取到的特征数据。
④分别搭建:CNN,ResNet,CNNBiGRU,CNNLSTM,CNNSVM模型,将特征数据送入模型,将70%的数据作为训练集,30%作为测试集,对模型展开训练与测试。
ST-CNN模型结构如下:
内容详解
一、数据处理
①对官方下载的西储大学数据进行处理,步骤如下:
-
一共加载10种数据,然后取每个数据的DE_time(%DE是驱动端数据 FE是风扇端数据 BA是加速度数据 选择其中一个就行)
-
设置滑动窗口w,每个数据的故障样本点个数s,每个故障类型的样本量m
-
将所有的数据滑窗完毕之后,综合到一个data变量中
-
有关西储大学数据的处理之前有文章也讲过,大家可以看这篇文章:西储大学轴承诊断数据处理,matlab免费代码获取
最后得到的数据是一个1000*2048的矩阵,其中1000是样本量,2048是特征。1000又等于100*10,10是指10种故障状态,100是指每种状态有100个样本。在代码中是data_total_1797.mat
② 对江南大学轴承数据进行处理,步骤如下:
-
一共加载4种数据,本文以1000rpm为例,分别取正常、内圈、外圈、和滚动体四种状态的数据;
-
2.设置滑动窗口w,每个数据的故障样本点个数s,每个故障类型的样本量m;
-
将所有的数据滑窗完毕之后,综合到一个data变量中
-
最后得到的数据是一个400*2048的矩阵,其中400是样本量,2048是特征。400又等于100*4,4是指4种故障状态,100是指每种状态有100个样本。在代码中是data_total.mat
二,采用S变换将数据进行时频图转换
①对西储大学轴承数据进行S变换
②对江南大学轴承数据进行S变换
S变换时频图,本文以1000rpm为例进行展示。
三,将构建好的特征向量送入不同模型进行训练与测试
将每种状态的前70组用于训练,后30组用于测试。得到的结果如下:
西储大学轴承故障诊断结果:
CNN的分类结果,并附上t-sne降维分布在模型识别前后的结果图:
CNN-LSTM的分类结果,并附上t-sne降维分布在模型识别前后的结果图:
CNN-SVM的分类结果,并附上t-sne降维分布在模型识别前后的结果图:
CNN-BiGRU的分类结果,并附上t-sne降维分布在模型识别前后的结果图:
ResNet的分类结果:
江南大学轴承故障诊断结果:
以下均为1000rpm的四种状态数据分类结果:
CNN的分类结果,并附上t-sne降维分布在模型识别前后的结果图:
CNN-SVM的分类结果,并附上t-sne降维分布在模型识别前后的结果图:
ResNet的分类结果:
ResNet结构:
其他模型结果就不再一一展示。
以上所有图片均可运行出来。
代码目录
分为西储大学数据和江南大学数据
按照程序步骤一步步执行即可,说明.txt对程序的执行步骤进行了说明。
代码获取
点击下方下卡片获取!
参考文献:
[1]王庆荣,杨磊,王松松.基于S变换和卷积神经网络的滚动轴承故障诊断[J].激光与光电子学进展,2021,58(22):65-74.