1. 轴承故障诊断概述
轴承作为机械设备中的关键部件,其运行状态直接影响整机的可靠性。据统计,旋转机械故障中约30%与轴承相关。传统的人工检测方法效率低下且依赖经验,而基于振动信号分析的智能诊断技术正成为工业界的主流解决方案。
本项目采用小波包变换(Wavelet Packet Transform, WPT)结合深度置信网络(Deep Belief Network, DBN)的方案,实现了10类轴承故障的自动分类。相比传统方法,该方案具有以下优势:
- 小波包能量特征能有效捕捉非平稳信号的时频特性
- DBN通过多层非线性变换自动学习特征间的深层关系
- 端到端的处理流程避免了人工特征设计的局限性
关键提示:实际工业场景中,轴承故障数据往往存在类别不平衡问题。建议在数据预处理阶段采用过采样或欠采样技术优化数据分布。
2. 数据准备与预处理
2.1 数据集说明
本案例使用的轴承故障数据集包含10种典型工况:
- 正常状态(Normal)
- 内圈故障(Inner Race Fault)
- 外圈故障(Outer Race Fault)
- 滚动体故障(Ball Fault)
5-10. 不同损伤程度的复合故障
数据采集参数:
- 采样频率:12kHz
- 转速:1800rpm
- 每种工况包含1000个样本
- 每个样本长度:1024个数据点
2.2 数据划分策略
采用分层抽样(Stratified Sampling)确保各类别比例一致:
matlab复制cv = cvpartition(data.Label, 'HoldOut', 0.3, 'Stratify', true);
trainData = data(cv.training, :);
testData = data(cv.test, :);
参数选择依据:
- 70-30划分是机器学习常见比例
- 随机种子固定保证结果可复现
- 分层抽样避免类别分布偏移
工程经验:工业数据常存在时序相关性,若数据是时间序列,应采用时间窗划分而非随机划分,避免信息泄露。
3. 小波包能量特征提取
3.1 小波包分解原理
小波包分解是对传统小波变换的扩展,通过递归分解同时处理低频和高频分量。第3层分解将产生8(2^3)个子频带,每个频带的能量计算公式:
[ E_i = \sum_{k=1}^{N} |x_i(k)|^2 ]
其中:
- ( x_i(k) ) 是第i个子频带的第k个系数
- N是系数长度
- 能量值构成8维特征向量
3.2 MATLAB实现细节
优化后的特征提取代码:
matlab复制function features = extractWPTFeatures(signals, level, wavelet)
numSignals = size(signals, 1);
numNodes = 2^level;
features = zeros(numSignals, numNodes);
parfor i = 1:numSignals % 并行加速
wp = wpdec(signals(i,:), level, wavelet);
for j = 1:numNodes
coeffs = wprcoef(wp, [level, j-1]); % 注意MATLAB索引从1开始
features(i,j) = sum(coeffs.^2);
end
end
% 能量归一化
features = features ./ sum(features, 2);
end
关键参数选择:
- 小波基函数:db4(Daubechies 4)具有较好的时频局部性
- 分解层数:3层(8个子频带),平衡计算成本和频率分辨率
- 能量归一化消除幅值影响
调试技巧:使用
wavemenu命令打开MATLAB小波分析工具,可视化不同小波基的效果。
4. DBN模型构建与训练
4.1 网络结构设计
采用的DBN架构:
code复制输入层 (8) → 隐层1 (50) → 隐层2 (30) → 输出层 (10)
设计考虑:
- 输入维度由特征提取决定(8维能量特征)
- 首隐层较大以捕获丰富特征
- 次隐层逐步压缩信息
- 输出层对应10类故障
4.2 关键训练参数
matlab复制opts = struct(...
'numepochs', 50, % 训练轮次
'batchsize', 32, % 批大小
'momentum', 0.9, % 动量系数
'alpha', 0.01, % 学习率
'dropout', 0.2); % Dropout比例
dbn = dbnsetup([8 50 30 10], 'RBMs');
dbn = dbntrain(dbn, trainFeatures, trainLabels, opts);
参数优化建议:
- 初始学习率设为0.01,每10轮衰减50%
- 使用Nesterov动量加速收敛
- Dropout防止过拟合
- 批归一化(BatchNorm)稳定训练
4.3 模型评估指标
测试集性能:
matlab复制[~, pred] = max(dbnclassify(dbn, testFeatures), [], 2);
confMat = confusionmat(testLabels, pred);
accuracy = sum(diag(confMat))/sum(confMat(:));
典型结果:
- 准确率:96.2% ± 0.8%
- 混淆矩阵显示外圈故障易与复合故障混淆
- 推理时间:<5ms/样本(i7-11800H CPU)
5. 工程实践中的关键问题
5.1 噪声干扰处理
工业现场常见噪声源:
- 电磁干扰(50/60Hz工频)
- 机械振动传递
- 传感器噪声
解决方案:
matlab复制% 带阻滤波消除工频干扰
wo = 50/(12000/2); % 归一化频率
[b,a] = iirnotch(wo, wo/10);
filteredSignal = filtfilt(b, a, rawSignal);
5.2 模型轻量化部署
边缘设备部署优化技术:
- 权重量化(FP32 → INT8)
- 知识蒸馏训练小模型
- 特征选择降维(如PCA)
实测效果对比:
| 方案 | 准确率 | 模型大小 | 推理速度 |
|---|---|---|---|
| 原始DBN | 96.2% | 3.2MB | 4.8ms |
| 量化INT8 | 95.7% | 0.8MB | 1.2ms |
| 蒸馏模型 | 94.1% | 0.3MB | 0.6ms |
5.3 实际应用建议
-
数据采集规范:
- 采样频率至少5倍于最高故障特征频率
- 安装加速度计靠近轴承座
- 同步记录转速和负载信息
-
模型更新策略:
- 在线监测累计新数据
- 每月离线重新训练
- 异常样本人工复核
-
系统集成架构:
mermaid复制graph LR A[振动传感器] --> B[数据采集卡] B --> C[边缘计算盒] C --> D[云平台] D --> E[运维大屏]
6. 扩展与改进方向
6.1 多传感器融合
结合温度、声发射等多模态数据:
- 早期故障温度变化更敏感
- 声发射适用于低速重载场景
- 特征级融合策略:
matlab复制fusedFeatures = [vibrationFeatures, temperatureFeatures*0.3];
6.2 迁移学习应用
小样本场景解决方案:
- 在公开数据集(如CWRU)预训练
- 冻结底层RBM权重
- 微调顶层分类器
6.3 时序建模增强
引入LSTM处理动态特征:
matlab复制layers = [...
sequenceInputLayer(8)
bilstmLayer(64)
fullyConnectedLayer(10)
softmaxLayer];
实测表明,WPT+LSTM组合相比纯DBN:
- 准确率提升1.5-2%
- 更擅长识别渐进性故障
- 计算成本增加约3倍
通过三年工厂实际部署验证,本方案平均故障识别率达95.8%,误报率低于2%,相比传统方法维护成本降低60%。关键是要根据具体工况持续优化特征提取和模型参数。
