概要
本期实现基于pytorch框架实现4种顶会注意力机制模块及1D-CNN的滚动轴承故障诊断。对西储大学数据进行加噪处理,实验结果证明,添加注意力机制的CNN比原始的CNN诊断的准确率更高。其中原始的1DCNN准确率为97.5%,ECA-1DCNN准确率:99.21875%,CBAM-1DCNN准确率:99.53125%,GAM-1DCNN准确率:100%。
4种注意力机制模块分别为:
SE 注意力模块:
论文地址:https://arxiv.org/pdf/1709.01507.pdf
CBAM 注意力模块
论文地址:https://arxiv.org/pdf/1807.06521.pdf
ECA 注意力模块
论文地址:https://arxiv.org/abs/2103.02907
GAM注意力模块
论文地址:https://arxiv.org/pdf/2112.05561v1.pdf
下图为CNN-AM 模型结构。其中的AM表示注意力机制模块,本期代码实现4种注意力机制与1DCNN的结合。
实验过程介绍
实验采用凯斯西储大学滚动轴承振动数据,为SKF-6205驱动端轴承,采样频率为12 kHz,转速为1797 r/min,负载设定有0、1、2、3 hp 这4 种,实验选择0 负载工况下的数据训练模型。故障类型有10种:滚动体故障(B)、外圈故障(OR)、内圈故障(IR),每种故障类型包含3 种故障尺寸:0.007、0.014 和0.021 in(1 in 等于0.0254 m)。因此可将轴承状态划分为9 种故障状态和1 种正常状态,取连续的2048 个数据点为一个样本。每种状态设置320个样本,选取测试集比例为20%。
同时为了提高模型的泛化能力,证明添加注意力机制的CNN比原始CNN效果更好,在原始信号的基础上加入高斯白噪声,信噪比SNR =1.2。
实验在Pytorch深度学习框架中实现。训练前将数据集划分为训练集、测试集,其比例分别为80%、20%。训练时采用Adam 优化器,学习率为0.001,训练次数为30 次,小批量mini-batch 大小为64,损失函数选用交叉熵损失函数。
实验结果展示
原始的1DCNN结果:
对原始轴承数据添加信噪比为1.2的情况下,原始的1DCNN结果如下,测试集准确率为:97.5%
ECA-1DCNN结果:
对原始轴承数据添加信噪比为1.2的情况下,融合ECA注意力机制的1DCNN结果如下,测试集准确率可达99.21875%。
CBAM-1DCNN结果:
对原始轴承数据添加信噪比为1.2的情况下,融合CBAM注意力机制的1DCNN结果如下,测试集准确率可达99.53125%。
SENET-1DCNN结果:
对原始轴承数据添加信噪比为1.2的情况下,融合SENET注意力机制的1DCNN结果如下,测试集准确率可达98.75%。
GAM-1DCNN结果:
对原始轴承数据添加信噪比为1.2的情况下,融合GAM注意力机制的1DCNN结果如下,测试集准确率可达100%。
五种实验结果的损失曲线对比图:
可以看到表现最佳的是GAM-CNN,准确率可达100%。
每种方法在跑完程序后都可以绘制Tsne降维图、损失函数图等,这里仅以GAM-1DCNN为例进行展示:
代码获取
链接:https://mbd.pub/o/bread/ZpqUk51x
或者点击下方阅读原文获取。
已将此代码添加至故障诊断全家桶中
已购买故障诊断全家桶的小伙伴,可以直接跳转以下链接下载哦!
故障诊断全家桶获取链接:
一次购买永久更新!目前已经包含数十种方法了!
https://mbd.pub/o/bread/ZJ2Ym5ts
获取更多代码:
或者复制链接跳转:https://docs.qq.com/sheet/DU3NjYkF5TWdFUnpu