注意力魔改 | 超强轴承故障诊断模型!

往期精彩内容:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

轴承故障诊断 (12)基于交叉注意力特征融合的VMD+CNN-BiLSTM-CrossAttention故障识别模型_基于残差混合域注意力cnn的轴承故障诊断及其时频域可解释性-优快云博客

Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-优快云博客

Python轴承故障诊断 (14)高创新故障识别模型-优快云博客

Python轴承故障诊断 (15)基于CNN-Transformer的一维故障信号识别模型-优快云博客

Python轴承故障诊断 (16)高创新故障识别模型(二)-优快云博客

轴承故障全家桶更新 | 基于时频图像的分类算法-优快云博客

Python轴承故障诊断 (17)基于TCN-CNN并行的一维故障信号识别模型-优快云博客

独家原创 | SCI 1区 高创新轴承故障诊断模型!-优快云博客

基于 GADF+Swin-CNN-GAM 的高创新轴承故障诊断模型-优快云博客

Python轴承故障诊断 (18)基于CNN-TCN-Attention的创新诊断模型-优快云博客

基于通道注意力SENet的改进VGG与基于全局注意力机制GlobalAttention的BiGRU并行轴承故障诊断模型!

环境:python 3.9  pytorch 1.8 及其以上都可以

效果:在西储大学、哈工大航空数据集上均表现 百分百故障识别率!

模型创新点还未发表,有毕业设计或者发小论文需求的同学必看,模块丰富,创新度高,性能优越!

创新点:

1.提出一种基于快速傅里叶变换(FFT)和变分模态分解VMD的数据预处理方法,提取轴承振动信号在不同频率范围上的故障特征,捕捉故障信号的时频特性,减少噪声的影响。有助于改善轴承故障的检测和诊断效果,提高故障诊断的准确性和灵敏度;(独家原创)

2.我们设计出一种基于通道注意力机制(SENet)的改进VGG模型提取故障信号预处理后的多尺度特征的空间特征;(独家原创)

3.提出一种基于GlobalAttention优化的BiGRU网络模型来提取故障信号预处理后的多尺度特征的时域特征;(独家原创)

4. 通过并行模型融合空间、时域特征,从而提高特征的表示能力来实现故障信号的识别,取得了极佳的效果!

注意:此次产品,我们还有配套的模型讲解(方便学习网络结构)和参数调节讲解!有毕业设计或者发小论文需求的同学必看,模块丰富,创新度高,性能优越!

前言

本文基于凯斯西储大学(CWRU)轴承数据,进行快速傅里叶变换(FFT)和变分模态分解VMD的数据预处理,最后通过Python实现基于VGGSENet-BiGRUGlobalAttention的时空特征融合模型对故障数据的分类。凯斯西储大学轴承数据的详细介绍可以参考下文:

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

1 模型整体结构

预处理:一维故障信号分别经过FFT变换、VMD分解处理,然后把变换分解后的结果进行堆叠。

分支一:通过基于通道注意力机制(SENet)的改进VGG模型网络,来自适应地调整通道特征的权重,使模型能够自动学习到不同通道的重要性,提取了轴承故障信号中与故障相关的重要空间特征;

分支二:预处理后的数据同时通过基于GlobalAttention优化的BiGRU网络,GlobalAttention是一种用于加强模型对输入序列不同部分的关注程度的机制。在 BiGRU 模型中,全局注意力机制可以帮助模型更好地聚焦于输入序列中最相关的部分,从而提高模型的性能和泛化能力。在每个时间步,全局注意力机制计算一个权重向量,表示模型对输入序列各个部分的关注程度,然后将这些权重应用于 BiGRU 输出的特征表示,通过对所有位置的特征进行加权,使模型能够更有针对性地关注重要的时域特征, 提高了模型对轴承故障信号时域特征的感知能力;

特征融合:然后两个分支提取的空间特征和全局时域特征通过堆叠融合,使模型能够更好地融合不同层次的特征表示,提高模型性能和泛化能力。

通道注意力机制

Squeeze-and-Excitation Networks

全局注意力机制:

Global Attention Mechanism

2 轴承故障数据的预处理

2.1 导入数据

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

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

2.2 故障FFT变换可视化

图片

2.3 故障VMD分解可视化

图片

2.4 故障数据的特征预处理数据集制作

图片

3 基于FFT-VMD+VGGSENet-BiGRUGlobalAttention的轴承故障诊断分类

3.1 定义VGGSENet-BiGRUGlobalAttention分类网络模型

3.2 设置参数,训练模型

50个epoch,准确率100%,用FFT-VMD+VGGSENet-BiGRUGlobalAttention网络分类效果显著,快速傅里叶变换(FFT)和变分模态分解(VMD)可以有效地挖掘信号中的多尺度特征,VGGSENet-BiGRUGlobalAttention创新模型能够充分提取轴承故障信号的空间和时序特征,收敛速度快,性能优越,精度高,能够从故障信号频域、时域特征中属于提取出对模型识别重要的特征,效果明显,创新度高!

注意调整参数:

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

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

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

3.3 模型评估

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

故障十分类混淆矩阵:

4 代码、数据整理如下:

### 注意力机制在YOLOv8中的应用 #### PSA注意力机制的应用 PSA(Pyramid Spatial Attention)是一种空间金字塔注意机制,它通过多尺度的空间特征提取来增强模型对不同大小目标的检测能力。为了将PSA引入到YOLOv8中,可以按照以下方法操作[^1]: - 首先定义PSA模块类,在该类中实现多尺度卷积以及后续的融合逻辑。 - 将PSA模块嵌入到YOLOv8的骨干网络或颈部结构中。 以下是PSA模块的一个简化版本代码示例: ```python import torch.nn as nn class PSAModule(nn.Module): def __init__(self, channels=512, reduction=4): super(PSAModule, self).__init__() self.conv_reduce = nn.Conv2d(channels, channels // reduction, kernel_size=1) self.relu = nn.ReLU(inplace=True) self.conv_expand = nn.Conv2d(channels // reduction, channels, kernel_size=1) def forward(self, x): out = self.conv_reduce(x) out = self.relu(out) out = self.conv_expand(out) return x + out ``` --- #### SEAM注意力机制的作用 SEAM(Spatial Enhanced Attention Mechanism)主要针对物体遮挡场景下的检测性能提升进行了优化。其核心思想是在空间维度上进一步强化特征图的有效区域表达能力。具体来说,SEAM通过对输入特征图进行逐像素加权处理,突出显示感兴趣的目标部分[^2]。 下面是一个简单的SEAM模块实现: ```python class SEAMModule(nn.Module): def __init__(self, channel, reduction=16): super(SEAMModule, self).__init__() self.avg_pool = nn.AdaptiveAvgPool2d(1) self.fc = nn.Sequential( nn.Linear(channel, channel // reduction), nn.ReLU(inplace=True), nn.Linear(channel // reduction, channel), nn.Sigmoid() ) def forward(self, x): b, c, _, _ = x.size() y = self.avg_pool(x).view(b, c) y = self.fc(y).view(b, c, 1, 1) return x * y.expand_as(x) ``` --- #### SEAttention机制集成至YOLOv8 SENet的核心在于通道间的依赖关系建模,而SEAttention则将其扩展到了更广泛的视觉任务领域。对于YOLOv8而言,可以在主干网络(Backbone)、FPN(Feature Pyramid Network)或者PANet(Path Aggregation Network)中加入SEAttention模块以提高整体表现[^3]。 下面是将SEAttention应用于YOLOv8的具体步骤说明: 1. 定义`SEAttention`类; 2. 修配置文件,指定哪些层启用此功能; 3. 更新训练脚本以便支持新组件加载与保存。 这里给出一段基础版的SEAttention代码片段作为参考: ```python class SEAttention(nn.Module): def __init__(self, channel=512, reduction=16): super(SEAttention, self).__init__() self.avg_pool = nn.AdaptiveAvgPool2d(1) self.fc = nn.Sequential( nn.Linear(channel, channel // reduction, bias=False), nn.ReLU(inplace=True), nn.Linear(channel // reduction, channel, bias=False), nn.Sigmoid() ) def forward(self, x): b, c, _, _ = x.size() y = self.avg_pool(x).view(b, c) y = self.fc(y).view(b, c, 1, 1) return x * y.expand_as(x) ``` --- #### 总结 无论是采用PSA、SEAM还是SEAttention等不同的注意力机制,都可以显著善YOLOv8在复杂背景条件下的识别精度。实际开发过程中需依据特定应用场景选择合适的方案并调整超参数设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值