1. 项目背景与核心价值
轴承作为旋转机械的核心部件,其健康状态直接影响设备运行安全。传统振动信号分析方法依赖人工特征提取,存在效率低、泛化性差的问题。我们团队基于PyTorch框架,创新性地将小波时频分析与Swin Transformer结合,实现了端到端的轴承故障智能诊断。这套方案在工业实测数据上达到98.7%的准确率,比传统方法提升15%以上。
关键突破:小波变换克服了STFT的固定分辨率缺陷,Swin Transformer的窗口注意力机制有效捕捉时频图中的局部故障特征。
2. 技术方案设计
2.1 整体架构
数据流依次经过:
- 振动信号采集(采样率12.8kHz)
- 连续小波变换(CWT)生成时频图
- Swin Transformer特征提取
- 全连接分类器
# 模型核心结构示例 class SwinCWT(nn.Module): def __init__(self): super().__init__() self.cwt = ContinuousWaveletTransform() # 自定义小波层 self.swin = swin_tiny_patch4_window7_224() self.classifier = nn.Linear(768, 10) # 10类故障2.2 小波变换实现
选用Morlet小波基函数,其时频聚焦特性最适合冲击特征提取:
\psi(t) = \pi^{-1/4}e^{i\omega_0t}e^{-t^2/2}参数设置经验:
- 尺度范围:1-128(对应频率100-6400Hz)
- 每倍频程数:16
- 使用PyWavelets库加速计算
2.3 Swin Transformer优化
针对时频图特点改进:
- 输入尺寸调整为256×256
- 窗口大小设为8×8
- 在patch embedding层前加入1×1卷积降噪
- 最后一阶段特征图全局平均池化
3. 关键实现细节
3.1 数据增强策略
时频图特有的增强方法:
- 随机时移(模拟相位变化)
- 幅值扰动(±10%)
- 频带掩码(随机遮挡5%区域)
- 添加高斯噪声(SNR≥30dB)
class TFAugment: def __call__(self, img): if random.random() > 0.5: img = time_warp(img) # 弹性时域变形 return img3.2 训练技巧
- 混合精度训练(AMP)加速30%
- 初始学习率3e-4,cosine衰减
- 标签平滑(smoothing=0.1)
- 早停机制(patience=15)
实测发现:AdamW优化器比SGD更适合时频图任务,收敛速度提升2倍
4. 工业部署方案
4.1 边缘计算优化
- 将CWT转换为ONNX格式(延迟从50ms降至12ms)
- 量化Swin Transformer到INT8(模型大小缩减4倍)
- 使用TensorRT加速推理
4.2 故障可视化
开发grad-cam++热力图,定位时频图中的故障敏感区域:
def generate_cam(model, input_tensor): feature_maps = model.get_activations(input_tensor) grads = model.get_gradients() cam = np.dot(feature_maps, grads) return cv2.applyColorMap(cam, cv2.COLORMAP_JET)5. 性能对比
| 方法 | 准确率 | F1-score | 推理时延 |
|---|---|---|---|
| 传统SVM | 83.2% | 0.81 | 5ms |
| 1D CNN | 89.7% | 0.88 | 8ms |
| 本文方法(未优化) | 96.3% | 0.95 | 65ms |
| 本文方法(优化后) | 98.7% | 0.98 | 18ms |
6. 典型问题排查
6.1 时频图模糊
现象:CWT结果出现频率混叠 解决方法:
- 检查采样率是否满足Nyquist定理
- 调整小波带宽参数
- 增加振动信号预处理(去趋势、降噪)
6.2 过拟合问题
当训练准确率>测试准确率10%时:
- 增加时频图增强强度
- 在Swin的MLP层添加dropout(p=0.3)
- 采用k-fold交叉验证
7. 进阶优化方向
- 多传感器融合:加入声发射信号时频分析
- 小样本学习:使用SimCLR进行时频图对比学习
- 寿命预测:将分类头改为回归头预测剩余寿命
实际部署中发现,在低速重载工况下(<300rpm),需要将小波尺度范围调整到5-256以获得更好效果。建议不同设备类型建立独立的参数配置文件。