今天给大家分享一个故障诊断全家桶项目,整合了50种经典的、主流的深度学习模型 和 10种1D转2D的时频变换方法,共计 500种组合,并为每个模型配合tsne可视化操作。 先来看50种深度学习模型有哪些:
网络名称(年份)论文链接DenseNet (2017)https://arxiv.org/abs/1608.06993GoogLeNet (2015)https://arxiv.org/abs/1409.4842InceptionV3 (2016)https://arxiv.org/abs/1512.00567MobileNetV2 (2018)https://arxiv.org/abs/1801.04381MobileNetV3 (2019)https://arxiv.org/abs/1905.02244ShuffleNet (2018)https://arxiv.org/abs/1707.01083SqueezeNet (2016)https://arxiv.org/abs/1602.07360EfficientNet (2019)https://arxiv.org/abs/1905.11946GhostNet (2020)https://arxiv.org/abs/1911.11907MnasNet (2019)https://arxiv.org/abs/1807.11626SENet (2018)https://arxiv.org/abs/1709.01507SKNet (2019)https://arxiv.org/abs/1903.06586ViT (2021)https://arxiv.org/abs/2010.11929Swin Transformer (2021)https://arxiv.org/abs/2103.14030ConvNeXt (2022)https://arxiv.org/abs/2201.03545WideResNet (2016)https://arxiv.org/abs/1605.07146ResNeXt (2017)https://arxiv.org/abs/1611.05431Xception (2017)https://arxiv.org/abs/1610.02357RegNet (2020)https://arxiv.org/abs/2003.13678DPN (2017)https://arxiv.org/abs/1707.01629InceptionResNet (2017)https://arxiv.org/abs/1602.07261ResNet-FPN (2017)https://arxiv.org/abs/1612.03144MobileViT (2022)https://arxiv.org/abs/2110.02178CoAtNet (2021)https://arxiv.org/abs/2106.04803ConvMixer (2022)https://arxiv.org/abs/2201.09792PoolFormer (2022)https://arxiv.org/abs/2111.11418EdgeNeXt (2022)https://arxiv.org/abs/2206.10589Res2Net (2021)https://arxiv.org/abs/1904.01169GCNet (2019)https://arxiv.org/abs/1904.11492RepVGG (2021)https://arxiv.org/abs/2101.03697FocalNet (2022)https://arxiv.org/abs/2203.11926CrossViT (2021)https://arxiv.org/abs/2103.14899PVTv2 (2021)https://arxiv.org/abs/2106.13797CaiT (2021)https://arxiv.org/abs/2103.17239EfficientFormer (2022)https://arxiv.org/abs/2206.01191HRNet (2020)https://arxiv.org/abs/1908.07919
是的,你没看错!本项目就是把以上50种类型的模型全部整合到了一起,你可以方便的学习到每个模型的构建方式,并且将该模型用于故障诊断或者分类模型!
一、项目概述
本项目以经典的 CWRU(西储大学)轴承数据集 为例,完整实现了:
❝原始振动信号 → 加噪 → 1D转2D时频图 → 深度学习分类 → 评估可视化
整个项目流程只需4个脚本,按顺序运行即可:
步骤脚本功能STEP1STEP1_add_noise.py对原始信号添加高斯白噪声(不想加也可以!)STEP2STEP2_convert_1D_to_2D.py将1D信号转为2D时频图像(64×64×3)STEP3STEP3_train_single.py选择一种时频方法+一种模型,训练评估STEP4STEP4_train_all.py一键批量跑所有组合,自动汇总结果
二、10种时频变换方法
项目支持以下 10种1D→2D转换方法,每种方法将长度为2048的振动信号转为64×64×3的图像:

方法全称简介STFT短时傅里叶变换最经典的时频分析方法CWT连续小波变换多尺度分析,对数频率覆盖MelMel频谱图模拟人耳感知的频率尺度GASFGramian角求和场时间序列→极坐标→角度求和GADFGramian角差分场与GASF互补的角度差分编码MTFMarkov转移场捕捉时间序列的状态转移概率RP递归图相空间重构后的递归可视化WPD小波包分解等频带分解,频率分辨率均匀STS变换结合STFT和CWT优点的时频方法WVDWigner-Ville分布高分辨率时频分布
三、50种深度学习模型
项目涵盖了从经典到前沿的 50种模型,全部手写版,适配64×64输入:
CNN + 注意力(4种)CNN2D、SE-CNN2D、CBAM-CNN2D、ECA-CNN2D
ResNet + YOLO骨干(3种)ResNet18、DarkNet、CSPNet
VGG系列(2种)VGG11、VGG16
DenseNet(1种)DenseNet
Inception系列(2种)GoogLeNet、InceptionV3
轻量级网络(7种)MobileNetV2、MobileNetV3、ShuffleNet、SqueezeNet、EfficientNet、GhostNet、MnasNet
注意力网络(2种)SENet、SKNet
Transformer(3种)ViT、SwinTransformer、TinyViT
现代架构(5种)ConvNeXt、WideResNet、Xception、RegNet、DPN
组合混合模型(10种)InceptionResNet、SE-ResNet、CBAM-ResNet、SE-DenseNet、ResNet-FPN、MobileViT、CoAtNet、ConvMixer、PoolFormer、EdgeNeXt
多尺度/金字塔(11种)Res2Net、ECA-ResNet、GCNet、RepVGG、VAN、FocalNet、CrossViT、PVTv2、CaiT、EfficientFormer、HRNet
五、输出结果
每个模型训练完成后,自动生成以下评估结果:
1. 准确率/损失曲线(含训练集、验证集、测试集三条曲线)
2. 混淆矩阵
3. 分类报告(Precision、Recall、F1-score)
4. 每类准确率柱状图
5. t-SNE特征可视化(原始特征 + FC层特征)

批量训练完成后,还会自动汇总所有组合的指标(Val Acc、Test Acc、Precision、Recall、F1),并保存为CSV文件,方便对比分析。
六、项目目录
下面这是results里边跑的部分结果:
STEP1:添加噪声
python STEP1_add_noise.py
读取 dataset/CWRU/ 中的原始 .mat 文件,添加高斯白噪声后保存到 dataset/Add_Noise_CWRU/。
STEP2:1D信号转2D时频图
# 转换全部10种方法
python STEP2_convert_1D_to_2D.py --method all
# 只转换指定方法
python STEP2_convert_1D_to_2D.py --method STFT
生成的 .npy 文件保存在 dataset/Add_Noise_CWRU_2D/,可视化 .png 保存在 dataset/Add_Noise_CWRU_2D_img/。
STEP3:单模型训练
打开 STEP3_train_single.py,修改配置区域的 tf_method 和 use_model:
tf_method =
'STFT'
# 时频方法
use_model =
'ResNet18'
# 模型名称
epochs =
30
# 训练轮数
然后运行:
python STEP3_train_single.py
STEP4:一键批量训练
# 跑全部 500 个组合
python STEP4_train_all.py
# 只跑指定方法和模型
python STEP4_train_all.py --tf_method STFT CWT --use_model ResNet18 CNN2D
# 自定义参数
python STEP4_train_all.py --epochs 50 --batch_size 64 --lr 0.001
七、几个设计细节
数据划分:采用 训练集60% / 验证集20% / 测试集20% 的三分策略,分层采样保证每个类别比例一致。模型选择基于验证集最优,最终指标在测试集上报告,避免信息泄露。
全部手写实现:50种模型均为手写版,不依赖 torchvision 预训练模型,适配 64×64 小尺寸输入,训练速度快,适合学术实验。
以上就是整个项目的介绍。50种模型 × 10种时频方法 = 500种组合,基本涵盖了故障诊断领域主流的深度学习方案,拿来跑实验、写论文都很方便。、代码获取