手把手教你:基于深度学习的滚动轴承故障诊断|第 8 篇 · 可视化诊断系统:PyQt5 搭建带界面的工具

本文是《滚动轴承故障诊断》系列的第 8 篇(可视化界面)。

系列完整目录见文末【专栏导航】。本篇的可运行界面脚本(gui_app.py)与内置预训练模型,见公众号。

一、为什么值得做一个"界面"

模型训出来了,准确率 95%,然后呢?

如果只能写代码调 API,评委老师看不出价值;但如果有一个点按钮就出结果的小软件,答辩现场演示一遍,观感完全不同。

可视化界面的意义不止"好看":

  1. 把模型"产品化":普通人也能用,不只是程序员;
  2. 答辩加分项:现场选一个文件、点一下、出诊断结果,比空讲有说服力;
  3. 验证实用价值:证明这套模型能"落地"到真实场景,而不只是论文里的数字。

二、界面要做什么(功能拆解)

先想清楚需求,再动手写。我们的诊断工具就三件事:

复制代码
选一个数据文件 → 选一个模型 → 一键诊断出结果
  • 选文件:挑一个 CWRU 的 .mat(或者你自己的数据);
  • 选模型:随机森林 / 1D-CNN / CNN+ResNet 三选一;
  • 一键诊断:上方波形图 + 下方诊断结论(类别、置信度、各窗口投票分布)。

界面虽小,但覆盖了"从数据到结论"的完整链路,麻雀虽小五脏俱全。

三、技术选型:为什么 PyQt5 + matplotlib

  • PyQt5:Python 做桌面界面最成熟的选择,控件齐全(按钮、下拉框、文件对话框),跨平台;
  • matplotlib :把振动波形画出来,和 Qt 界面无缝嵌合(FigureCanvas);
  • 两者都在第 2 篇的环境里装好了,无需额外配置。

它只是个"壳":核心还是前面几篇训好的模型。界面负责把模型"包装"得好看好用。

四、核心逻辑:滑窗预测 + 多数投票

界面背后复用了第 4、7 篇的核心逻辑,但不重复造轮子:

复制代码
读取 .mat → 取 DE/FE → 归一化 → 切成若干 1000 点窗口
   → 每个窗口丢给模型投一票 → 多数投票得最终诊断
  • 一条信号切成很多窗口,每个窗口单独预测一次;
  • 最后统计哪个类别票最多,就是最终结论;
  • 窗口数较多时界面会限制数量(本项目上限 100 个),保证点一下秒出结果,不卡顿。

这样一个"小"逻辑,把前面所有章节串起来了------预处理、模型、评估,全在这一按里。

五、效果与演示流程(答辩用)

演示建议三连:

  1. 选一个"内圈故障"文件(如 105.mat)→ 出"内圈故障";
  2. 换"正常"文件(97.mat)→ 出"正常";
  3. 切到 CNN 模型试内圈文件 → 偶尔会认错,再切回 CNN+ResNet → 又对了。

第三步那一下"对比",就是残差价值的最好展示,也是答辩的高光时刻。

六、本篇小结

  • 界面 = PyQt5 壳 + 已训练模型 + 滑窗投票逻辑;
  • 三连演示(内圈→正常→模型切换)是最有说服力的答辩流程;
  • 完整源码 + 预训练模型 + 操作手册见公众号。

专栏导航

篇次 主题 状态
1 项目总览与三模型对比 ✅
2 环境部署 ✅
3 CWRU 数据集深度解析 ✅
4 数据预处理源码走读 ✅
5 随机森林实战 ✅
6 一维卷积与残差模块 ✅
7 模型训练与评估 ✅
8 可视化诊断系统(本文) ✅
9 论文报告与答辩话术 排期中

下一篇预告:《从代码到毕业设计:论文框架、实验表与答辩话术》,全系列收官,帮你把这 8 篇的知识打包进一篇能毕业的论文。


版权说明:CWRU 数据集版权归凯斯西储大学所有,仅限学习研究使用。