概要
本期实现基于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为例进行展示:


点击下方卡片关注,获取更多代码
1779

被折叠的 条评论
为什么被折叠?



