本文是《滚动轴承故障诊断》系列的第 8 篇(可视化界面)。 系列完整目录见文末【专栏导航】。本篇的可运行界面脚本(
gui_app.py)与内置预训练模型,见公众号。
一、为什么值得做一个"界面"
模型训出来了,准确率 95%,然后呢?
如果只能写代码调 API,评委老师看不出价值;但如果有一个点按钮就出结果的小软件,答辩现场演示一遍,观感完全不同。
可视化界面的意义不止"好看":
- 把模型"产品化":普通人也能用,不只是程序员;
- 答辩加分项:现场选一个文件、点一下、出诊断结果,比空讲有说服力;
- 验证实用价值:证明这套模型能"落地"到真实场景,而不只是论文里的数字。
二、界面要做什么(功能拆解)
先想清楚需求,再动手写。我们的诊断工具就三件事:
选一个数据文件 → 选一个模型 → 一键诊断出结果
- 选文件:挑一个 CWRU 的 .mat(或者你自己的数据);
- 选模型:随机森林 / 1D-CNN / CNN+ResNet 三选一;
- 一键诊断:上方波形图 + 下方诊断结论(类别、置信度、各窗口投票分布)。
界面虽小,但覆盖了"从数据到结论"的完整链路,麻雀虽小五脏俱全。
三、技术选型:为什么 PyQt5 + matplotlib
- PyQt5:Python 做桌面界面最成熟的选择,控件齐全(按钮、下拉框、文件对话框),跨平台;
- matplotlib:把振动波形画出来,和 Qt 界面无缝嵌合(
FigureCanvas); - 两者都在第 2 篇的环境里装好了,无需额外配置。
它只是个"壳":核心还是前面几篇训好的模型。界面负责把模型"包装"得好看好用。
四、核心逻辑:滑窗预测 + 多数投票
界面背后复用了第 4、7 篇的核心逻辑,但不重复造轮子:
读取 .mat → 取 DE/FE → 归一化 → 切成若干 1000 点窗口
→ 每个窗口丢给模型投一票 → 多数投票得最终诊断
- 一条信号切成很多窗口,每个窗口单独预测一次;
- 最后统计哪个类别票最多,就是最终结论;
- 窗口数较多时界面会限制数量(本项目上限 100 个),保证点一下秒出结果,不卡顿。
这样一个"小"逻辑,把前面所有章节串起来了——预处理、模型、评估,全在这一按里。
五、效果与演示流程(答辩用)
演示建议三连:
- 选一个"内圈故障"文件(如 105.mat)→ 出"内圈故障";
- 换"正常"文件(97.mat)→ 出"正常";
- 切到 CNN 模型试内圈文件 → 偶尔会认错,再切回 CNN+ResNet → 又对了。
第三步那一下"对比",就是残差价值的最好展示,也是答辩的高光时刻。
六、本篇小结
- 界面 = PyQt5 壳 + 已训练模型 + 滑窗投票逻辑;
- 三连演示(内圈→正常→模型切换)是最有说服力的答辩流程;
- 完整源码 + 预训练模型 + 操作手册见公众号。
专栏导航
| 篇次 | 主题 | 状态 |
|---|---|---|
| 1 | 项目总览与三模型对比 | ✅ |
| 2 | 环境部署 | ✅ |
| 3 | CWRU 数据集深度解析 | ✅ |
| 4 | 数据预处理源码走读 | ✅ |
| 5 | 随机森林实战 | ✅ |
| 6 | 一维卷积与残差模块 | ✅ |
| 7 | 模型训练与评估 | ✅ |
| 8 | 可视化诊断系统(本文) | ✅ |
| 9 | 论文报告与答辩话术 | 排期中 |
下一篇预告:《从代码到毕业设计:论文框架、实验表与答辩话术》,全系列收官,帮你把这 8 篇的知识打包进一篇能毕业的论文。
版权说明:CWRU 数据集版权归凯斯西储大学所有,仅限学习研究使用。