基于双路神经网络的滚动轴承故障诊断 融合了原始振动信号 和 二维信号时频图像 的多输入(多通道)故障诊断方法 单路和双路都可 时频图像算法可选小波变换短时傅里叶变换马尔可夫变迁场格拉姆角场S变换递归图等 数据集可选凯斯西储大学东南大学江南大学等等 Pytorch和Tensorflow框架做的。 以下可视化结果适用小波和短时傅里叶变换其它时频图像算法效果并没有这在滚动轴承故障诊断领域如何更精准、高效地识别故障一直是研究热点。今天咱就来聊聊基于双路神经网络融合原始振动信号与二维信号时频图像的多输入故障诊断方法并且用 Pytorch 和 Tensorflow 框架来实现。一、数据准备数据集咱可以选择凯斯西储大学、东南大学或者江南大学等公开的数据集。这些数据集里包含了不同工况下滚动轴承的振动数据为我们的模型训练提供了丰富素材。二、时频图像算法时频图像算法有多种选择像小波变换Wavelet Transform、短时傅里叶变换Short - Time Fourier Transform, STFT、马尔可夫变迁场、格拉姆角场、S 变换、递归图等等。不过可视化结果表明小波变换和短时傅里叶变换效果相对较好。1. 短时傅里叶变换代码示例Python Numpyimport numpy as np import matplotlib.pyplot as plt from scipy.signal import stft # 假设我们有一段振动信号数据 fs 1000 # 采样频率 t np.linspace(0, 1, fs, endpointFalse) signal np.sin(2 * np.pi * 50 * t) np.sin(2 * np.pi * 120 * t) f, t, Zxx stft(signal, fsfs, windowhann, nperseg128, noverlap120, nfft256) plt.pcolormesh(t, f, np.abs(Zxx), shadinggouraud) plt.title(STFT Magnitude) plt.ylabel(Frequency [Hz]) plt.xlabel(Time [sec]) plt.show()代码分析这段代码首先定义了采样频率fs和时间序列t生成了一个简单的混合正弦信号signal。然后通过scipy.signal库中的stft函数进行短时傅里叶变换。windowhann指定了窗函数为汉宁窗nperseg128表示每个段的长度noverlap120表示段与段之间重叠的点数nfft256表示傅里叶变换的点数。最后通过plt.pcolormesh将时频图绘制出来。2. 小波变换代码示例Python PyWaveletsimport pywt import numpy as np import matplotlib.pyplot as plt # 假设同样的振动信号 fs 1000 t np.linspace(0, 1, fs, endpointFalse) signal np.sin(2 * np.pi * 50 * t) np.sin(2 * np.pi * 120 * t) coeffs pywt.wavedec(signal, db4, level5) approx pywt.waverec(coeffs[:1], db4) detail pywt.waverec([None] coeffs[1:], db4) plt.figure(figsize(12, 6)) plt.subplot(3, 1, 1) plt.plot(t, signal) plt.title(Original Signal) plt.subplot(3, 1, 2) plt.plot(t, approx) plt.title(Approximation Coefficient) plt.subplot(3, 1, 3) plt.plot(t, detail) plt.title(Detail Coefficient) plt.tight_layout() plt.show()代码分析这里使用pywt库进行小波变换。pywt.wavedec函数对信号signal进行小波分解db4是选用的小波基函数level5表示分解的层数。之后通过pywt.waverec函数分别重构出近似系数和细节系数并绘图展示原始信号、近似系数和细节系数。三、双路神经网络模型以 Pytorch 为例import torch import torch.nn as nn class DualPathNet(nn.Module): def __init__(self): super(DualPathNet, self).__init__() # 原始振动信号路径的卷积层 self.conv1_raw nn.Conv1d(1, 16, kernel_size5, padding2) self.relu1_raw nn.ReLU() self.pool1_raw nn.MaxPool1d(kernel_size2, stride2) # 时频图像路径的卷积层 self.conv1_img nn.Conv2d(1, 16, kernel_size5, padding2) self.relu1_img nn.ReLU() self.pool1_img nn.MaxPool2d(kernel_size2, stride2) self.fc1 nn.Linear(16 * 250 16 * 125 * 125, 128) self.relu_fc1 nn.ReLU() self.fc2 nn.Linear(128, num_classes) def forward(self, x_raw, x_img): out_raw self.conv1_raw(x_raw) out_raw self.relu1_raw(out_raw) out_raw self.pool1_raw(out_raw) out_raw out_raw.view(-1, 16 * 250) out_img self.conv1_img(x_img) out_img self.relu1_img(out_img) out_img self.pool1_img(out_img) out_img out_img.view(-1, 16 * 125 * 125) out torch.cat((out_raw, out_img), 1) out self.fc1(out) out self.relu_fc1(out) out self.fc2(out) return out代码分析这个DualPathNet类定义了双路神经网络。初始化函数init中分别定义了原始振动信号路径一维卷积层和时频图像路径二维卷积层的网络结构。在forward函数中分别对输入的原始振动信号xraw和时频图像ximg进行卷积、激活、池化操作然后将两者展平并拼接起来经过全连接层fc1和fc2输出最终结果。四、总结基于双路神经网络融合原始振动信号和二维时频图像的故障诊断方法在理论和实践上都展现出一定优势。通过选择合适的时频图像算法和搭建有效的神经网络模型有望在滚动轴承故障诊断中取得更好的效果。后续还可以进一步探索不同数据集、不同时频图像算法对诊断精度的影响不断优化模型性能。基于双路神经网络的滚动轴承故障诊断 融合了原始振动信号 和 二维信号时频图像 的多输入(多通道)故障诊断方法 单路和双路都可 时频图像算法可选小波变换短时傅里叶变换马尔可夫变迁场格拉姆角场S变换递归图等 数据集可选凯斯西储大学东南大学江南大学等等 Pytorch和Tensorflow框架做的。 以下可视化结果适用小波和短时傅里叶变换其它时频图像算法效果并没有这