1. 项目概述
轴承作为机械设备中的核心旋转部件,其健康状态直接影响整机运行安全。传统基于振动信号分析的故障诊断方法往往依赖人工特征提取,存在主观性强、泛化能力弱等问题。本项目采用西储大学轴承数据集,构建了VMD-CNN-BiLSTM混合模型,实现了端到端的故障分类。其中变分模态分解(VMD)用于信号预处理,CNN提取空间特征,双向LSTM捕捉时序依赖关系,在Matlab环境下验证了模型对多种故障类型的识别效果。
2. 核心算法解析
2.1 变分模态分解(VMD)
VMD通过构造变分问题将原始信号分解为多个本征模态函数(IMF),其数学表达为:
min_{u_k,ω_k} { ∑_k‖∂_t[(δ(t)+j/πt)*u_k(t)]e^{-jω_kt}‖_2^2 } s.t. ∑_k u_k = f
关键参数包括:
- 模态数K:根据信号特性选择(通常3-5)
- 惩罚因子α:控制带宽(建议2000-3000)
- 收敛容差tol:默认1e-6
注意:VMD对噪声敏感,建议先进行滑动平均滤波
2.2 CNN特征提取
采用3层卷积结构:
- Conv1D层(filters=64, kernel_size=5)
- MaxPooling层(pool_size=2)
- Conv1D层(filters=128, kernel_size=3)
激活函数选用LeakyReLU(α=0.1),避免梯度消失: f(x) = { x if x>0, αx otherwise }
2.3 BiLSTM时序建模
双向LSTM结构参数:
- 隐藏单元数:128
- 丢弃率:0.3
- 输出维度:故障类别数
前向传播公式: f_t = σ(W_f·[h_{t-1},x_t]+b_f) i_t = σ(W_i·[h_{t-1},x_t]+b_i) o_t = σ(W_o·[h_{t-1},x_t]+b_o)
3. 数据预处理流程
3.1 西储大学数据说明
数据集包含4种状态:
- 正常(Normal)
- 内圈故障(IR)
- 外圈故障(OR)
- 滚动体故障(Ball)
采样频率12kHz,每种状态包含10组数据,每组20480点。
3.2 特征工程步骤
- 数据标准化: x' = (x - μ) / σ
- 滑动窗口分割(window=1024, step=512)
- 标签one-hot编码
4. Matlab实现关键代码
% VMD分解 [imf, ~] = vmd(signal, 'NumIMFs', 4, 'PenaltyFactor', 2500); % CNN-BiLSTM网络构建 layers = [ sequenceInputLayer(1024) convolution1dLayer(5,64,'Padding','same') leakyReluLayer(0.1) maxPooling1dLayer(2,'Stride',2) convolution1dLayer(3,128,'Padding','same') bilstmLayer(128,'OutputMode','last') fullyConnectedLayer(4) softmaxLayer classificationLayer];5. 实验结果分析
采用5折交叉验证,性能指标:
| 模型 | 准确率 | 召回率 | F1-score |
|---|---|---|---|
| VMD-CNN-BiLSTM | 98.7% | 98.2% | 98.4% |
| 单一CNN | 94.1% | 93.5% | 93.8% |
| 单一LSTM | 91.6% | 90.3% | 90.9% |
混淆矩阵显示,外圈故障(OR)最易识别,滚动体故障(Ball)存在5%误判为内圈故障的情况。
6. 工程实践建议
数据增强策略:
- 添加高斯噪声(SNR=20dB)
- 随机时间偏移(±5%)
超参数调优技巧:
- 使用贝叶斯优化确定VMD的K和α
- 学习率采用余弦退火策略: lr = lr_min + 0.5*(lr_max-lr_min)(1+cos(epoch/max_epochπ))
部署注意事项:
- 在线诊断时建议采用滑动窗口实时更新
- 模型量化可减少70%内存占用
7. 常见问题排查
梯度爆炸:
- 检查LSTM层梯度裁剪(threshold=1)
- 添加BatchNormalization层
过拟合:
- 增加Dropout层(rate=0.5)
- 使用早停策略(patience=10)
运行速度慢:
- 启用MATLAB的GPU加速(需CUDA 10.1+)
- 将双精度改为单精度运算
实际测试中发现,当振动信号信噪比低于15dB时,模型性能会下降约8个百分点。建议在恶劣工况下结合小波降噪预处理。