1. 项目背景与核心思路
轴承故障诊断是工业设备健康监测的关键环节。传统方法通常直接对一维振动信号进行时频分析,但这种方法往往难以捕捉故障的细微特征。本项目创新性地将一维振动信号转换为二维灰度图像,通过局部二值模式(LBP)增强纹理特征,再结合卷积神经网络(CNN)进行深度特征提取,最后对比了softmax分类器和支持向量机(SVM)的分类性能。
核心创新点在于信号表示方式的转变:将时序振动信号重构为二维图像,使得可以充分利用计算机视觉中的成熟技术进行特征提取。这种思路特别适合处理具有周期性特征的机械振动信号,因为故障特征会在图像中形成特定的纹理模式。
2. 数据准备与预处理
2.1 CWRU数据集介绍
项目使用的是凯斯西储大学(CWRU)轴承故障数据集,这是机械故障诊断领域的基准数据集。数据集包含四种不同负载条件(0HP、1HP、2HP、3HP),每种负载下又分为四种状态:
- 内圈故障(Inner Race Fault)
- 外圈故障(Outer Race Fault)
- 滚动体故障(Rolling Element Fault)
- 正常状态(Normal)
数据采集自实验台架的驱动端轴承,采样频率为12kHz,每种状态包含约10秒的振动信号。
2.2 一维信号转二维图像
将一维振动信号转换为二维灰度图像是本项目的关键预处理步骤,通过create_picture.py实现:
- 信号分段:将长时序信号分割为固定长度的片段(如1024个采样点)
- 矩阵重构:将一维片段重塑为二维矩阵(如32×32)
- 灰度归一化:将振幅值线性映射到0-255灰度范围
- 图像保存:存储为PNG格式的灰度图像
注意:图像尺寸的选择需要权衡特征分辨率和计算复杂度。32×32的尺寸既能保留足够细节,又不会导致后续处理计算量过大。
转换后的图像中,故障会表现为特定的纹理模式。例如,内圈故障通常会产生周期性条纹,而滚动体故障则表现为散点状异常。
3. 特征增强与提取
3.1 局部二值模式(LBP)处理
LBP是一种有效的纹理特征描述方法,通过比较像素与其邻域的灰度值来编码局部纹理特征。实现步骤:
- 对每个像素,比较其与周围8邻域像素的灰度值
- 根据比较结果生成8位二进制编码
- 将二进制转换为十进制,得到该像素的LBP值
- 对整个图像重复上述过程,生成LBP特征图
LBP处理能突出故障引起的局部纹理变化,增强不同故障类型之间的区分度。从效果图中可以看到,经过LBP处理后,正常状态的图像纹理均匀,而故障状态的图像则出现明显的局部模式变化。
3.2 CNN特征提取
采用一个轻量级CNN网络进行深度特征提取,网络结构如下:
- 输入层:32×32的LBP特征图
- 卷积层1:16个3×3卷积核,ReLU激活
- 池化层1:2×2最大池化
- 卷积层2:32个3×3卷积核,ReLU激活
- 池化层2:2×2最大池化
- 全连接层:128个神经元
- 输出层:4个神经元(对应4种故障类型)
网络在训练集上训练时,会逐渐学习到不同故障在LBP图像中的高级特征表示。从特征可视化结果可以看出,CNN提取的特征在二维空间已经呈现出良好的聚类效果。
4. 分类器设计与对比
4.1 Softmax分类器
Softmax分类器直接接在CNN网络的输出层,通过交叉熵损失函数进行端到端训练。其实质是一个多类逻辑回归,输出每个类别的概率分布。
训练过程中采用了以下策略:
- 学习率:初始0.001,每10个epoch衰减为原来的1/10
- 批量大小:32
- 训练轮数:50
- 优化器:Adam
从训练曲线可以看到,模型在约20个epoch后达到收敛,训练集和测试集准确率都接近100%,表明没有明显的过拟合现象。
4.2 SVM分类器
为了对比,我们也测试了两种不同配置的SVM分类器:
- 线性核,C=1:正则化强度适中
- 线性核,C=100:更强的正则化
SVM分类器使用CNN全连接层的128维特征作为输入。实验结果表明:
- 线性SVM的性能与softmax相当,在某些负载条件下略优
- 正则化参数C对结果影响不大,说明提取的特征已经具有很好的可分性
- SVM(C=1)在四种负载下的平均准确率达到99.74%,略高于softmax的99.58%
5. 实验结果分析
5.1 准确率对比
下表总结了不同分类器在四种负载下的测试准确率(5次实验平均值):
| 负载 | Softmax | SVM(C=1) | SVM(C=100) |
|---|---|---|---|
| 0HP | 100% | 100% | 99.69% |
| 1HP | 99.37% | 99.69% | 99.69% |
| 2HP | 99.27% | 99.27% | 99.27% |
| 3HP | 99.68% | 100% | 100% |
从结果可以看出:
- 所有方法在四种负载下都保持了99%以上的高准确率
- SVM(C=1)整体表现最优,平均准确率99.74%
- 不同负载下的性能差异很小,说明方法具有很好的鲁棒性
5.2 特征可视化分析
通过t-SNE降维可视化CNN提取的特征,可以观察到:
- 不同类别的特征点形成了明显的聚类
- 同类样本聚集紧密,类间分离度大
- 这种良好的可分性解释了分类器的高准确率
特征可视化也印证了LBP+CNN组合的有效性:LBP增强了局部纹理特征,CNN则进一步提取了具有判别性的高级特征。
6. 关键实现细节
6.1 环境配置
项目使用Python实现,主要依赖库及版本:
- TensorFlow 2.6.0
- scikit-learn 0.24.2
- OpenCV 4.5.3
- NumPy 1.19.5
- Matplotlib 3.4.2
6.2 代码结构
项目包含两个核心脚本:
-
create_picture.py:信号转图像
- 读取原始振动信号
- 分段并转换为灰度图像
- 保存为图像文件
-
code.py:主流程
- 加载图像数据集
- LBP特征提取
- CNN模型定义与训练
- SVM分类器训练与评估
- 结果可视化
6.3 参数选择经验
- 图像尺寸:32×32是经过实验验证的平衡点,既能保留足够信息,又不会增加过多计算负担
- LBP参数:采用经典的8邻域LBP,半径设为1个像素
- CNN结构:两层卷积+池化的轻量结构足以提取有效特征
- 训练策略:适度的学习率衰减有助于模型稳定收敛
7. 实际应用建议
基于项目经验,对于工业现场应用建议:
- 数据采集:确保采样频率足够高(≥5倍故障特征频率)
- 负载适配:训练数据应覆盖设备可能的工作负载范围
- 模型部署:可以将训练好的CNN特征提取部分固化,前端保留信号转图像和LBP处理
- 持续学习:定期用新数据微调模型,适应设备老化带来的特征变化
对于不同应用场景,可以调整:
- 图像尺寸(更高分辨率捕捉更细微特征)
- CNN深度(更复杂网络处理更难区分的故障)
- 分类器选择(SVM适合小样本,softmax适合端到端训练)
8. 常见问题排查
在实际应用中可能遇到的问题及解决方案:
-
准确率波动大
- 检查信号分段是否对齐了故障周期
- 增加训练数据量,特别是少数类别样本
-
特定负载下性能下降
- 检查该负载下的训练样本是否充足
- 考虑负载特征是否与其他负载差异过大
-
LBP处理后特征不明显
- 调整LBP邻域大小(如改用16邻域)
- 尝试其他纹理增强方法(如Gabor滤波)
-
模型收敛慢
- 检查学习率是否合适
- 增加批量大小(如64或128)
- 尝试不同的权重初始化方法
9. 扩展方向
基于本项目的核心方法,可以进一步探索:
- 多传感器融合:结合温度、声音等多模态数据
- 时序建模:在CNN基础上加入LSTM捕捉时序依赖
- 自监督学习:利用大量无标签数据预训练特征提取器
- 异常检测:扩展至未知故障类型的检测
- 边缘部署:优化模型以适应嵌入式设备实时监测
在实际工业场景测试中,这种图像化处理方法相比传统时频分析方法,在复杂工况下表现出更好的鲁棒性。特别是在噪声较大的环境中,LBP增强的纹理特征比原始频谱特征更具判别力。