基于注意力机制的多尺度卷积神经网络在滚动轴承故障诊断中的应用

news2026/4/8 11:52:24
基于注意力的多尺度卷积神经网络轴承故障诊断 针对传统方法在噪声环境下诊断精度低的问题提出了一种多尺度卷积神经网络的滚动轴承故障诊断方法 首先构建多尺度卷积提取不同尺度的故障特征同时引入通道注意力自适应地选择包含故障特征的通道来提高模型的抗噪能力抑制噪声干扰此外利用自适应大小的一维卷积调整不同尺度的特征通道权重自适应融合不同尺度的特征提高判别性特征提取能力最后通过凯斯西储大学开源滚动轴承数据集CWRU进行验证证明了所提方法对有效性 参考文献2023年吉林大学学报EI《基于注意力的多尺度卷积神经网络轴承故障诊断》 ●数据预处理支持1维原始数据 ●网络模型1DMACNN ●数据集凯斯西储大学开源滚动轴承数据集CWRU、十分类 ●网络框架pytorch ●结果输出损失曲线图、准确率曲线图、混淆矩阵、tsne图 ●准确率测试集100% ●使用对象初学者 ●代码保证代码注释详细、即拿即可跑通一、项目概述本项目基于注意力机制的多尺度卷积神经网络MACNN针对滚动轴承故障诊断场景解决传统卷积神经网络在噪声环境下诊断精度低的问题。通过多尺度特征提取、通道注意力机制与自适应特征融合技术实现了高抗噪性、高泛化能力的轴承故障分类。项目基于 PyTorch 框架开发支持 CWRU 等主流轴承数据集提供完整的训练、测试、可视化流程可直接用于工业场景中的轴承故障诊断任务。二、核心技术原理2.1 模型架构设计MACNN 模型核心分为五大模块各模块协同实现从原始振动信号到故障类别的端到端诊断宽卷积层使用大尺寸卷积核64×1从原始振动信号中初步筛选特征抑制高频噪声保留关键时间尺度信息。多尺度特征提取层通过 5×1、7×1、9×1 三种不同尺寸的卷积核并行提取特征覆盖不同频率范围的故障信息如内圈、外圈、滚动体故障的特征差异。通道注意力机制集成 SEBlock通道注意力和 ECABlock高效通道注意力自适应调整不同特征通道的权重强化故障相关特征抑制噪声通道干扰。特征融合层对多尺度特征进行拼接后通过自适应 1D 卷积调整通道权重解决传统拼接导致的特征冗余问题。分类层经全局平均池化降维后通过全连接层输出 10 类故障含正常状态的分类概率。2.2 关键技术亮点抗噪设计宽卷积层 双通道注意力机制在信噪比低至 -7dB 的极端噪声环境下仍保持 93% 以上诊断精度。多尺度适配三种卷积核尺寸覆盖不同故障特征尺度适配轴承不同部位、不同直径的故障类型。自适应融合基于 ECA 模块的特征融合动态调整多尺度特征权重优于传统拼接方式。泛化能力支持跨负载工况诊断在 0hp-3hp 不同负载切换场景下平均诊断精度达 91.91%。三、代码结构总览项目文件结构清晰按功能划分为核心模块、工具类、可视化脚本三大类共 13 个文件MACNN_Project/ ├── main.py # 主程序训练、测试流程入口 ├── model/ # 模型核心模块 │ ├── MACNN.py # 主模型定义 │ ├── SEnet.py # SE注意力机制实现 │ ├── ECAnet.py # ECA注意力机制实现 │ └── __init__.py ├── ulit/ # 工具类模块 │ ├── CWRU.py # CWRU数据集加载与划分 │ ├── cwru_datasets.py # 数据集读取接口支持.mat文件 │ ├── acc.py # 准确率/损失计算工具 │ └── init_seed.py # 随机种子初始化保证实验可复现 └── plot_def/ # 可视化脚本 ├── plot_acc_loss.py # 训练/测试准确率、损失曲线绘制 └── t_SNE_feat_save.py # 特征可视化t-SNE降维四、核心文件功能详解4.1 主程序文件main.py作为项目入口整合数据加载、模型训练、测试、结果保存全流程支持命令行参数配置。4.1.1 核心功能环境配置自动检测 GPU/CPU 环境优先使用 GPU 加速训练。参数解析支持通过命令行配置数据集路径、训练轮数、批次大小、学习率等关键参数。模型初始化根据配置加载 MACNN 模型定义交叉熵损失函数和 Adam 优化器。数据处理调用 CWRU 工具类加载数据集按 8:2 比例划分训练集/测试集通过 DataLoader 实现批量加载。训练流程- 迭代训练默认 50 轮每轮计算训练集准确率和损失。- 使用 StepLR 学习率调度器每 10 轮学习率衰减为原来的 0.1 倍。- 训练完成后保存最优模型第 50 轮、混淆矩阵、分类报告。测试与可视化- 计算测试集准确率和损失生成训练/测试曲线准确率 损失。- 绘制混淆矩阵热力图直观展示各类故障的分类效果。4.1.2 关键代码片段解析# 模型训练核心逻辑 def train(train_loader, model, criterion, optimizer, epoch, lr_scheduler, device): model.train() # 训练模式启用Dropout、BN更新 for i, (data, label) in enumerate(train_loader): input data.to(device) label label.to(device) output model(input) # 前向传播 loss criterion(output, label.long()) # 计算损失 loss.backward() # 反向传播求梯度 optimizer.step() # 参数更新 # 计算准确率 _, predicted torch.max(output, 1) accuracy (predicted label).sum().item() / label.size(0)采用标准的 PyTorch 训练流程通过model.train()启用训练模式loss.backward()完成梯度计算。准确率计算通过torch.max(output, 1)获取预测类别与真实标签对比统计正确个数。4.2 模型模块model 文件夹4.2.1 MACNN.py主模型定义核心文件实现 MACNN 完整架构关键模块如下层定义- 宽卷积层conv1 nn.Conv1d(1, 32, kernelsize64, stride2)输入为 1 维振动信号输出 32 通道特征。- 多尺度卷积层conv215×1、conv227×1、conv239×1并行提取不同尺度特征。- 注意力层se1 SEBlock(64)、se2 SEBlock(128)、eca ECABlock(1283)分别作用于多尺度特征和融合后特征。- 分类层classification_layer nn.Linear(1283, 10)输出 10 类故障概率。前向传播逻辑def forward(self, x): # 宽卷积层特征提取 x F.relu(self.bn(self.conv1(x))) x self.max_pool1(x) # 多尺度特征提取三条并行支路 x1 self._forward_branch(x, self.conv2_1, self.max_pool2_1, self.conv3_1, self.max_pool3_1) x2 self._forward_branch(x, self.conv2_2, self.max_pool2_2, self.conv3_2, self.max_pool3_2) x3 self._forward_branch(x, self.conv2_3, self.max_pool2_3, self.conv3_3, self.max_pool3_3) # 特征融合 ECA注意力加权 x torch.cat([x1, x2, x3], dim1) x self.eca(x) # 分类 x self.global_avg_pooling(x).view(x.size(0), -1) return self.classification_layer(x)三条并行支路分别处理不同尺度卷积通过torch.cat拼接特征经 ECA 模块加权后进入分类层。4.2.2 SEnet.py通道注意力实现基于 Squeeze-and-Excitation 机制通过全局平均池化Squeeze和全连接层Excitation学习通道权重class SEBlock(nn.Module): def forward(self, x): b, c, _ x.size() # Squeeze全局平均池化压缩空间维度 y self.avg_pool(x).view(b, -1) # Excitation全连接层学习通道权重 y self.fc(y).view(b, c, 1) # 特征加权 return x * y.expand_as(x)4.2.3 ECAnet.py高效通道注意力实现优化 SE 机制通过 1D 卷积替代全连接层减少参数计算量class ECABlock(nn.Module): def forward(self, x): # 全局平均池化 y self.avg_pool(x) # 1D卷积学习通道权重 y self.conv(y.squeeze(-1).transpose(-1, -2)).transpose(-1, -2).unsqueeze(-1) # 特征加权b为偏置项增强模型鲁棒性 return x * (self.b y)4.3 工具类模块ulit 文件夹4.3.1 CWRU.py数据集处理负责 CWRU 数据集的加载、划分和预处理loadcwrudata()遍历数据集目录读取所有.mat文件路径和对应的故障标签0-9 类。traintestsplitorder()使用sklearn.traintest_split按 8:2 比例划分训练集/测试集保证标签分布均衡stratify 参数。4.3.2 cwru_datasets.py数据集接口实现 PyTorch 标准 Dataset 接口用于读取单个.mat文件def __getitem__(self, idx): file_path self.data_pd.iloc[idx][data] label int(self.data_pd.iloc[idx][label]) # 读取.mat文件中的振动信号sample字段 data loadmat(file_path)[sample].transpose() data torch.tensor(data).float() # 转换为Tensor格式 return data, label4.3.3 acc.py性能指标工具AverageMeter类用于实时计算训练/测试过程中的准确率和损失平均值class AverageMeter(object): def update(self, val, n1): self.val val # 当前批次值 self.sum val * n # 累计总和 self.count n # 累计样本数 self.avg self.sum / self.count # 平均值4.3.4 init_seed.py随机种子初始化固定 Python、NumPy、PyTorch 的随机种子保证实验结果可复现def init_seed(seed123): np.random.seed(seed) random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed_all(seed) cudnn.deterministic True # 禁用非确定性算法4.4 可视化模块plot_def 文件夹4.4.1 plot_acc_loss.py训练曲线绘制读取训练过程中保存的traintestresult.csv文件绘制不同模型的准确率和损失对比曲线支持多模型对比当前仅 MACNN可扩展。自动保存曲线图片至result目录便于实验分析。4.4.2 t_SNE_feat_save.py特征可视化使用 t-SNE 降维算法将高维特征映射到 2D 空间直观展示模型特征提取效果加载训练好的模型提取测试集的原始特征和全连接层特征。绘制散点图不同颜色代表不同故障类别可观察模型是否有效分离各类特征。五、数据集说明项目默认使用 CWRU凯斯西储大学轴承数据集支持自定义数据集扩展5.1 CWRU 数据集规范数据格式.mat文件每个文件存储一段振动信号采样频率 12kHz。故障类别10 类正常 内圈/外圈/滚动体的 3 种故障直径标签对应关系如下| 标签 | 故障类型 | 故障直径mm ||------|----------------|----------------|| 0 | 正常 | - || 1 | 内圈故障 | 0.1778 || 2 | 滚动体故障 | 0.1778 || 3 | 外圈故障6点| 0.1778 || ... | ... | ... || 9 | 外圈故障6点| 0.5534 |5.2 数据集目录结构dataset/CWRU/ ├── Normal/ # 正常轴承数据 │ ├── 1.mat │ └── ... ├── IR007/ # 内圈故障0.1778mm │ └── ... ├── B007/ # 滚动体故障0.1778mm │ └── ... └── ...其他类别六、快速启动指南6.1 环境依赖Python 3.7PyTorch 1.10需匹配 CUDA 版本支持 GPU 加速其他依赖numpy、pandas、matplotlib、seaborn、scikit-learn、scipy6.2 运行步骤解压环境将pytorch1.10.rar解压至无中文路径如G:\fish\evs\pytorch1.10。配置 Python 解释器在 PyCharm 中按以下步骤导入环境- File → Settings → Project → Python Interpreter- 点击 Add → 选择 System Interpreter → 浏览至解压路径下的python.exe如G:\fish\evs\pytorch1.10\pytorch1.10\python.exe- 点击 Apply → OK 完成配置。准备数据集将 CWRU 数据集按上述目录结构放置在dataset/CWRU下。运行训练直接运行main.py默认参数如下可通过命令行修改- 训练轮数50 轮- 批次大小64- 初始学习率0.001- 权重衰减1e-4查看结果训练完成后结果保存在result/MACNN目录下-model50.pth训练好的模型权重文件。-accloss.png训练/测试准确率、损失曲线。-混淆矩阵.png分类混淆矩阵热力图。-traintestresult.csv每轮训练/测试的准确率和损失数据。6.3 命令行参数示例# 自定义学习率和训练轮数 python main.py --lr 0.0005 --epochs 100 --batch-size 32 # 更换数据集路径 python main.py --data D:\dataset\CWRU # 禁用模型保存 python main.py --save_model False七、结果说明7.1 核心指标噪声环境SNR-7dB 至 1dB平均诊断精度 ≥ 93%。跨负载场景0hp-3hp平均诊断精度 ≥ 91.91%。训练效率50 轮训练GPU 环境耗时约 10-20 分钟视硬件配置而定。7.2 可视化结果解读准确率/损失曲线- 训练曲线应逐步上升并趋于平稳无明显震荡说明模型收敛稳定。- 测试曲线与训练曲线差距较小说明无过拟合。混淆矩阵- 对角线元素值越高越好代表该类故障分类准确率高。- 非对角线元素代表混淆类别需重点关注如外圈故障是否易被误分为内圈故障。t-SNE 特征图- 不同颜色的点应聚类成独立簇说明模型提取的特征具有良好的区分度。- 簇间距离越大、簇内越集中模型分类性能越好。八、扩展与优化建议数据集扩展支持 XJTU-SY 等其他轴承数据集只需修改CWRU.py中的数据加载逻辑适配新数据集的文件格式和标签体系。模型优化- 调整多尺度卷积核尺寸如增加 11×1 卷积核适配更多故障类型。- 更换优化器如 SGD、RMSprop或学习率调度器如 CosineAnnealingLR。- 增加 Dropout 层进一步抑制过拟合。功能扩展- 增加模型评估脚本支持加载预训练模型直接测试新数据。- 实现实时故障诊断功能读取传感器实时数据并输出诊断结果。- 增加模型量化功能适配嵌入式设备部署。九、常见问题排查环境配置错误- 报错“Python executable not found”检查解压路径是否含中文重新选择python.exe路径。- 缺少依赖包使用pip install -r requirements.txt安装需自行创建依赖清单。数据读取错误- 报错“KeyError: sample”检查.mat文件中是否存在sample字段或修改cwrudatasets.py中的字段名。- 标签错乱确保数据集目录名与faultclasses列表一致main.py中定义。训练效果差- 准确率低且波动大增大批次大小、降低学习率、增加训练轮数。- 过拟合训练准确率高测试准确率低增加权重衰减、添加 Dropout 层、扩大数据集。GPU 无法使用- 检查 CUDA 版本与 PyTorch 版本是否匹配。- 运行torch.cuda.is_available()验证 GPU 可用性若返回 False 则使用 CPU 训练。通过以上详细解析可全面掌握 MACNN 模型的代码结构、核心功能及使用方法。该项目不仅适用于学术研究中的故障诊断实验还可通过简单扩展适配工业实际应用场景具有较高的实用性和扩展性。基于注意力的多尺度卷积神经网络轴承故障诊断 针对传统方法在噪声环境下诊断精度低的问题提出了一种多尺度卷积神经网络的滚动轴承故障诊断方法 首先构建多尺度卷积提取不同尺度的故障特征同时引入通道注意力自适应地选择包含故障特征的通道来提高模型的抗噪能力抑制噪声干扰此外利用自适应大小的一维卷积调整不同尺度的特征通道权重自适应融合不同尺度的特征提高判别性特征提取能力最后通过凯斯西储大学开源滚动轴承数据集CWRU进行验证证明了所提方法对有效性 参考文献2023年吉林大学学报EI《基于注意力的多尺度卷积神经网络轴承故障诊断》 ●数据预处理支持1维原始数据 ●网络模型1DMACNN ●数据集凯斯西储大学开源滚动轴承数据集CWRU、十分类 ●网络框架pytorch ●结果输出损失曲线图、准确率曲线图、混淆矩阵、tsne图 ●准确率测试集100% ●使用对象初学者 ●代码保证代码注释详细、即拿即可跑通

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2486918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…