首页 > 其他分享 >轴承故障诊断 (12)基于交叉注意力特征融合的VMD+CNN-BiLSTM-CrossAttention故障识别模型

轴承故障诊断 (12)基于交叉注意力特征融合的VMD+CNN-BiLSTM-CrossAttention故障识别模型

时间:2024-10-22 23:20:27浏览次数:11  
标签:轴承 12 BiLSTM Python VMD 故障 CSDN CNN

往期精彩内容:

Python-凯斯西储大学(CWRU)轴承数据解读与分类处理

Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客

Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客

Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客

三十多个开源数据集 | 故障诊断再也不用担心数据集了!

Python轴承故障诊断 (一)短时傅里叶变换STFT-CSDN博客

Python轴承故障诊断 (二)连续小波变换CWT-CSDN博客

Python轴承故障诊断 (三)经验模态分解EMD-CSDN博客

Python轴承故障诊断 (四)基于EMD-CNN的故障分类-CSDN博客

Python轴承故障诊断 (五)基于EMD-LSTM的故障分类-CSDN博客

Python轴承故障诊断 (六)基于EMD-Transformer的故障分类-CSDN博客

Python轴承故障诊断 (七)基于EMD-CNN-LSTM的故障分类-CSDN博客

Python轴承故障诊断 (八)基于EMD-CNN-GRU并行模型的故障分类-CSDN博客

Python轴承故障诊断 (九)基于VMD+CNN-BiLSTM的故障分类-CSDN博客

Python轴承故障诊断 (十)基于VMD+CNN-Transfromer的故障分类-CSDN博客

基于FFT + CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客

基于FFT + CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客

Python轴承故障诊断 (11)基于VMD+CNN-BiGRU-Attenion的故障分类-CSDN博客

交叉注意力融合时域、频域特征的FFT + CNN -BiLSTM-CrossAttention轴承故障识别模型-CSDN博客

交叉注意力融合时域、频域特征的FFT + CNN-Transformer-CrossAttention轴承故障识别模型-CSDN博客

创新点:利用交叉注意力机制融合模型!

前言

本文基于凯斯西储大学(CWRU)轴承数据,进行变分模态分解VMD的介绍与数据预处理,最后通过Python实现基于交叉注意力CNN-BiLSTM-CrossAttention的时空特征融合模型对故障数据的分类。凯斯西储大学轴承数据的详细介绍可以参考下文:

Python-凯斯西储大学(CWRU)轴承数据解读与分类处理_凯斯西储大学轴承数据集-CSDN博客

模型整体结构

模型整体结构如下所示:

 (1) VMD 分解:

输入:轴承振动信号

 操作:通过VMD技术将原始信号分解成多个本征模态函数(IMF)

 输出:每个IMF表示不同频率范围内的振动成分

(2) CNN 空间特征提取:

输入:VMD分解得到的IMFs

 操作:对每个IMF进行卷积和池化操作,提取空间特征

 输出:卷积池化后的特征表示,用于捕获不同频率下的振动空间特征

(3) BiLSTM 时序特征提取:

输入:VMD分解得到的IMFs

 操作:双向LSTM网络学习序列信息,关注重要的时序特征

 输出:经BiLSTM处理后的时序特征表示,具有更好的故障信号时序建模能力

(4) 交叉注意力机制特征融合:

输入:CNN提取的空间特征,BiLSTM提取的时序特征

 交叉注意力机制:使用交叉注意力机制融合时域和频域的特征。可以通过计算注意力权重,使得模型更关注重要的特征,提高模型性能和泛化能力

1 变分模态分解VMD的Python示例

第一步,Python 中 VMD包的下载安装:


# 下载
pip install vmdpy

# 导入
from vmdpy import VMD

第二步,导入相关包进行分解

​​​​​​

import numpy as np
import matplotlib.pyplot as plt
from vmdpy import VMD

# -----测试信号及其参数--start-------------
t = np.linspace(0, 1, 1000)
signal = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 20 * t)

T = len(signal)
fs = 1/T
t = np.arange(1,T+1)/T

# alpha 惩罚系数;带宽限制经验取值为抽样点长度1.5-2.0倍.
# 惩罚系数越小,各IMF分量的带宽越大,过大的带宽会使得某些分量包含其他分量言号;
alpha = 2000

#噪声容限,一般取 0, 即允许重构后的信号与原始信号有差别。
tau = 0
#模态数量  分解模态(IMF)个数
K = 5

#DC 合成信号若无常量,取值为 0;若含常量,则其取值为 1
# DC 若为0则让第一个IMF为直流分量/趋势向量
DC = 0

#初始化ω值,当初始化为 1 时,均匀分布产生的随机数
# init 指每个IMF的中心频率进行初始化。当初始化为1时,进行均匀初始化。
init = 1

#控制误差大小常量,决定精度与迭代次数
tol = 1e-7
# -----测试信号及其参数--end----------

# Apply VMD
# 输出U是各个IMF分量,u_hat是各IMF的频谱,omega为各IMF的中心频率
u, u_hat, omega= VMD(signal, alpha, tau, K, DC, init, tol)

#得到中心频率的数值
print(omega[-1])

# Plot the original signal and decomposed modes
plt.figure(figsize=(15,10))
plt.subplot(K+1, 1, 1)
plt.plot(t, signal, 'r')
plt.title("原始信号")

for num in range(K):
    plt.subplot(K+1, 1, num+2)
    plt.plot(t, u[num,:])
    plt.title("IMF "+str(num+1))

plt.show()

  

2 轴承故障数据的预处理

2.1 导入数据

参考之前的文章,进行故障10分类的预处理,凯斯西储大学轴承数据10分类数据集:

train_set、val_set、test_set 均为按照7:2:1划分训练集、验证集、测试集,最后保存数据

上图是数据的读取形式以及预处理思路

2.2 故障VMD分解可视化

第一步, 模态选取

根据不同K值条件下, 观察中心频率,选定K值;从K=4开始出现中心频率相近的模态,出现过分解,故模态数 K 选为4。

第二步,故障VMD分解可视化

2.3 故障数据的VMD分解预处理

 3 交叉注意力机制

3.1 Cross attention概念

  • Transformer架构中混合两种不同嵌入序列的注意机制

  • 两个序列必须具有相同的维度

  • 两个序列可以是不同的模式形态(如:文本、声音、图像)

  • 一个序列作为输入的Q,定义了输出的序列长度,另一个序列提供输入的K&V

3.2 Cross-attention算法 

  • 拥有两个序列S1、S2

  • 计算S1的K、V

  • 计算S2的Q

  • 根据K和Q计算注意力矩阵

  • 将V应用于注意力矩阵

  • 输出的序列长度与S2一致

在融合过程中,我们将经过CNN卷积池化操作的空间特征作为查询序列,BiLSTM输出的时序特征作为键值对序列。通过计算查询序列与键值对序列之间的注意力权重,我们可以对不同特征之间的关联程度进行建模。

4 基于VMD+CNN-BiLSTM-CrossAttention的轴承故障诊断分类

下面基于VMD分解后的轴承故障数据,先把分解的分量通过CNN进行卷积池化操作提取信号的空间特征,然后同时把分量送入BiLSTM层提取时序特征,使用交叉注意力机制融合时域和频域的特征, 对特征进行增强,实现CNN-BiLSTM-CrossAttention信号的分类方法。

4.1 定义VMD+CNN-BiLSTM-CrossAttention分类网络模型

4.2 设置参数,训练模型

50个epoch,准确率将近98%,用VMD+CNN-BiLSTM-CrossAttention网络分类效果显著,模型能够充分提取轴承故障信号的空间和时序特征,收敛速度快,性能优越,精度高,交叉注意力机制能够对不同特征之间的关联程度进行建模,从故障信号频域、时域特征中属于提取出对模型识别重要的特征,效果明显,继续调参可以进一步提高分类准确率。

注意调整参数:

  • 可以适当增加CNN层数和隐藏层的维度,微调学习率;

  • 调整BiLSTM层数和维度数,增加更多的 epoch (注意防止过拟合)

  • 可以改变一维信号堆叠的形状(设置合适的长度和维度)

4.3 模型评估

准确率、精确率、召回率、F1 Score

故障十分类混淆矩阵:

5 代码、数据整理如下:

​​​​​​​

标签:轴承,12,BiLSTM,Python,VMD,故障,CSDN,CNN
From: https://blog.csdn.net/2402_85668383/article/details/143133071

相关文章

  • 《使用Gin框架构建分布式应用》阅读笔记:p108-p126
    《用Gin框架构建分布式应用》学习第8天,p108-p126总结,总计18页。一、技术总结1.Redisevictionpolicy(1)什么是evictionpolicy?Theevictionpolicydetermineswhathappenswhenadatabasereachesitsmemorylimit.(2)配置示例在redis.conf中配置。maxmemory-policy......
  • MQTTnet 4.3.7.1207 (最新版)使用体验,做成在线客服聊天功能,实现Cefsharp的物联的功能(如
    一、MQTTnet4.3.x版本客户端将客户端集成到cefsharp定制浏览器中,实现物联网功能网上很多代码是3.x版本代码,和4.x版本差异性较大,介绍较为简单或不系统二、部分代码说明初始化,初始化》连接服务端》发布上线信息(遗嘱)ConnectAsync等订阅主题:SubscribeAsync......
  • 1280,学生们参加各科测试的次数
    学生们参加各科测试的次数分析+实现第一步:让学生表和科目表进行笛卡尔积students表subjects表--学生表和科目表进行笛卡尔积select*fromstudentsscrossjoinsubjectssub;第二步:使用考试表进行统计,查询每个学生每科测试次数selectstudent_i......
  • 题解:P11207 「Cfz Round 9」Rose
    可以考虑把字符串\(s\),\(t\)按\(s_1t_1s_2t_2\dotss_nt_n\)拼接,记为\(a\)。为了方便表述,这里分别把PVW表示为012。Subtask0我会暴力!可以直接在\(a\)上进行dfs,复杂度为\(O(3^{2n})\)。Subtask1我会找性质!注意到答案只有可能是\(0,1,2\),因为在最坏情况下,只......
  • 题解:P11204 「Cfz Round 9」Lone
    首先可以观察出把木棍平均分是最优的。然后平均分后最多只有两种长度的木棒,长度分别为\(\lfloor\frac{m}{n}\rfloor\)和\(\lfloor\frac{m}{n}\rfloor+1\)。最后check一下就行了。代码:#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#define......
  • 20241022每日一题洛谷P1223
    普及洛谷P1223接水问题有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小第一行为一个整数n,第二行n个整数,第i个整数Ti表示第i个人的接水时间Ti输出两行,第一行为一种平均时间最短的排队顺......
  • 2024年TI杯E题-三子棋游戏装置方案分享-jdk123团队-第四弹 第一题
    #1024程序员节|征文#往期回顾前期准备摄像头bug解决手搓机械臂视觉模块的封装第一问:需要将一颗黑棋,放入棋盘中的五号位置。理想思路:依据摄像头,依据机械臂及其传感器。建立机械臂的逆运动学方程。然后完成精准定位,考虑到手搓机械臂的不稳定性。以及摄像头的精度。......
  • P11208 解题报告
    题目传送门将题意转化一下:将序列变为单调上升等价于逆序对总数量为\(0\)。首先看到交换相邻两个数,立马反应过来这种操作最好情况会使逆序对总数减一。为什么呢?首先肯定要前面大于后面才交换,否则一定不优。假设前为\(i\),后为\(j\),钦定我们计算逆序对的方式是从后往前,依次看......
  • 128. 最长连续序列(中)
    目录题目法一、桶排思想---备忘录法二、Set题目给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。示例1:输入:nums=[100,4,200,1,3,2]输出:4解释:最长数字连续序列是[1,2......
  • 【FMC163】基于VITA57.1标准的双通道3GSPS AD采集、双通道12GSPS DA回放FMC子卡模块(10
    板卡概述FMC163是一款基于VITA57.1标准的实现2路14-bit、3GSPSADC采集功能、2路14-bit12GSPSDA回放FMC子卡模块。该模块遵循VITA57.1标准,可直接与FPGA载卡配合使用,该板卡支持对6GHz的射频信号进行数字化采样以及信号生成,板内集成了高性能的时钟管理模块,具有极高的收发动态性能......