【滚动轴承故障诊断】【Pytorch】基于1DCNN、ECA-1DCNN、CBAM-1DCNN、GAM-1DCNN的滚动轴承故障诊断研究(Python代码实现)

     💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

基于1DCNN及其注意力机制改进的滚动轴承故障诊断研究

一、1DCNN的基础结构与原理

二、注意力机制改进模型的核心创新

1. ECA-1DCNN:高效通道注意力机制

2. CBAM-1DCNN:通道与空间注意力结合

3. GAM-1DCNN:全局跨维度交互

三、滚动轴承故障诊断数据集与评价体系

四、性能对比与适用场景分析

五、未来研究方向

📚2 运行结果

🎉3 参考文献 

🌈4 Python代码、数据、文章


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

基于1DCNN及其注意力机制改进的滚动轴承故障诊断研究

一、1DCNN的基础结构与原理

1DCNN是一种专门处理一维时序信号的卷积神经网络,其核心结构包括输入层、卷积层、池化层和全连接层(图9)。卷积层通过一维卷积核在时间轴上滑动提取局部特征,池化层(如最大池化或平均池化)降低特征维度并保留关键信息,全连接层整合特征完成分类任务。相较于传统方法,1DCNN能自动提取振动信号中的故障特征,避免人工特征提取的局限性。例如,在凯斯西储大学轴承数据集中,1DCNN的原始准确率可达97.5%。

技术优势

  • 实时性与低成本:仅需线性乘加运算,适合硬件部署。
  • 平移不变性:对大卷积核的兼容性使其能捕捉长序列中的全局特征。
  • 数据增强策略:通过窗口切片和重叠采样,数据集容量可扩展30倍。

二、注意力机制改进模型的核心创新
1. ECA-1DCNN:高效通道注意力机制

ECA模块通过局部跨通道交互(1D卷积)生成通道权重,避免降维操作,参数仅需80个。其核心公式为:
Mc(F)=Sigmoid(Conv1D(GAP(F)))

其中,GAP为全局平均池化,卷积核大小k通过通道数C自适应确定(如k=2)。实验表明,ECA-1DCNN在滚动轴承诊断中准确率达99.22%,且抗噪性能显著。

性能表现

  • 在加噪数据(SNR=0 dB)下,准确率仍保持92%以上。
  • 与DFT结合(DFT-ECANet),频域特征增强后准确率提升至99.8%。
2. CBAM-1DCNN:通道与空间注意力结合

CBAM模块分两步:

  1. 通道注意力:结合全局平均池化和最大池化,通过共享MLP生成权重。
  2. 空间注意力:沿通道轴聚合特征,通过卷积生成空间权重。
    公式为:
    F′=Mc(F)⊗F;F′′=Ms(F′)⊗F

实验显示,CBAM-1DCNN准确率达99.53%,且收敛速度提升30%。

应用案例

  • 在TensorFlow框架中,结合双池化层替代全连接层,测试集准确率99%。
  • 噪声环境下(高斯白噪声),鲁棒性优于传统SVM和随机森林模型。
3. GAM-1DCNN:全局跨维度交互

GAM通过3D排列和MLP保留通道-空间信息,避免信息弥散。其结构为:
F2=Mc(F1)⊗F1;F3=Ms(F2)⊗F2

通道子模块使用两层MLP,空间子模块采用卷积融合特征。实验显示,GAM-1DCNN在滚动轴承诊断中准确率高达100%,且参数量仅增加1.2%。

对比优势

  • 在CIFAR-100和ImageNet-1K数据集中,GAM超越CBAM和SENet。
  • T-SNE可视化显示,GAM能更好分离不同故障类别的特征。

三、滚动轴承故障诊断数据集与评价体系
  1. 常用数据集

    • 凯斯西储大学(CWRU)数据集:包含内圈、外圈、滚动体故障及正常状态,采样频率12 kHz,负载0-2,206 W。
    • MFPT数据集:涵盖真实工业场景下的轴承故障,含不同噪声和负载工况。
  2. 评价指标

    • 准确率:主流模型可达95%-100%。
    • 鲁棒性:在30-40 dB噪声下,ECA-1DCNN和GAM-1DCNN准确率下降小于5%。
    • 收敛速度:CBAM-1DCNN训练迭代次数减少至975次,优于传统1DCNN的2700次。

四、性能对比与适用场景分析
模型准确率参数量抗噪性适用场景
1DCNN97.5%中等低噪声、实时诊断
ECA-1DCNN99.22%极低资源受限环境
CBAM-1DCNN99.53%中等复杂噪声、多负载工况
GAM-1DCNN100%较高极高高精度要求的离线分析

结论

  • ECA-1DCNN适合边缘设备部署,平衡性能与计算成本。
  • CBAM-1DCNN在变工况和噪声干扰下表现稳健,适合工业现场。
  • GAM-1DCNN在实验室环境中可实现极致精度,但需更高算力支持。

五、未来研究方向
  1. 多模态融合:结合声发射、温度等多传感器数据提升诊断可靠性。
  2. 轻量化设计:探索注意力机制的量化与蒸馏技术,降低计算开销。
  3. 迁移学习:跨设备、跨工况的模型泛化能力优化。
  4. 实时诊断系统:嵌入FPGA或边缘计算设备,实现毫秒级响应。

通过上述改进,1DCNN及其注意力机制变体有望在工业4.0中成为滚动轴承故障诊断的核心技术。

📚2 运行结果

🎉3 参考文献 

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)

🌈Python代码、数据、文章

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

### 关于通道注意力机制模块的相关代码 在深度学习领域,通道注意力机制(Channel Attention Mechanism, CAM)被广泛应用于提升模型性能。CAM的核心思想是通过对不同通道的特征图赋予不同的权重来突出重要信息并抑制冗余信息。这种技术已被成功应用于图像分类、目标检测等多个任务。 #### GitHub上的相关实现 以下是几个常见的开源项目,提供了通道注意力机制的具体实现1. **SENet (Squeeze-and-Excitation Network)** SENet 是最早引入通道注意力机制的经典工作之一。其核心思想是对每个通道计算一个权重,并将其乘回原始特征图以增强有用的信息。可以在以下仓库找到其实现: ```bash git clone https://github.com/hujie-frank/SENet.git ``` 这个项目包含了完整的 SE 模块实现以及训练脚本[^1]。 2. **CBAM (Convolutional Block Attention Module)** CBAM 同时考虑了通道和空间两个维度的注意力机制。它先通过通道注意力子模块调整通道权重,再通过空间注意力子模块进一步优化特征图的空间分布。可以参考以下仓库获取其实现: ```bash git clone https://github.com/Jongchan/attention-module.git ``` 此外,在 `PyTorch` 中也有许多第三方实现可供选择,例如: ```python import torch.nn as nn class ChannelAttention(nn.Module): def __init__(self, in_planes, ratio=8): super(ChannelAttention, self).__init__() self.avg_pool = nn.AdaptiveAvgPool2d(1) self.max_pool = nn.AdaptiveMaxPool2d(1) self.fc1 = nn.Conv2d(in_planes, in_planes // ratio, 1, bias=False) self.relu1 = nn.ReLU() self.fc2 = nn.Conv2d(in_planes // ratio, in_planes, 1, bias=False) self.sigmoid = nn.Sigmoid() def forward(self, x): avg_out = self.fc2(self.relu1(self.fc1(self.avg_pool(x)))) max_out = self.fc2(self.relu1(self.fc1(self.max_pool(x)))) out = avg_out + max_out return self.sigmoid(out) ``` 3. **ECA-Net (Efficient Channel Attention Network)** ECA-Net 提出了更高效的通道注意力机制,减少了参数量的同时保持了良好的效果。具体实现在以下仓库中提供: ```bash git clone https://github.com/BangguWu/ECANet.git ``` 4. **Global Attention Mechanism (GAM)** GAM 结合了通道和空间维度的全局交互作用,旨在解决传统注意力机制中存在的信息丢失问题。可以从以下仓库下载其实现: ```bash git clone https://github.com/shanglianlm0525/CvPytorch.git ``` 或者访问另一个包含更多实验细节的仓库: ```bash git clone https://github.com/shanglianlm0525/PyTorch-Networks.git ``` #### 实现示例 下面是一个简单的基于 PyTorch 的通道注意力机制模块实现: ```python import torch import torch.nn as nn class ChannelAttentionModule(nn.Module): def __init__(self, channels, reduction_ratio=16): super(ChannelAttentionModule, self).__init__() self.channels = channels # 平均池化分支 self.avg_pool = nn.AdaptiveAvgPool2d(1) # 最大池化分支 self.max_pool = nn.AdaptiveMaxPool2d(1) # 共享MLP层 self.mlp = nn.Sequential( nn.Linear(channels, channels // reduction_ratio), nn.ReLU(), nn.Linear(channels // reduction_ratio, channels) ) def forward(self, x): batch_size, num_channels, _, _ = x.size() # 计算平均池化的特征向量 avg_out = self.avg_pool(x).view(batch_size, num_channels) avg_out = self.mlp(avg_out) # 计算最大池化的特征向量 max_out = self.max_pool(x).view(batch_size, num_channels) max_out = self.mlp(max_out) # 将两种方式的结果相加并通过sigmoid激活函数得到最终的通道注意力权重 channel_attention_weights = torch.sigmoid(avg_out + max_out).view(batch_size, num_channels, 1, 1) # 返回经过通道注意力调制后的特征图 return x * channel_attention_weights ``` 此代码定义了一个基础的通道注意力模块,适用于大多数卷积神经网络架构[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值